みち草

Azure中心にまとめる技術情報ブログ

Azure Lighthouse を設定してみる

はじめに

今回は、Azure Lighthouse にて別テナントユーザーへのサブスクリプション権限の委任を設定してみました。 ポータルでテンプレートを作成することができ、思ったよりは楽にできました。

目次

Azure Lighthouse 概要

Azure Lighthouse とは - Azure Lighthouse | Microsoft Docs

ざっくり言えば Azure サブスクリプションやリソース グループの権限を別 AAD のユーザーに与えることができる、という機能であり、 AAD に招待して権限つけるのと同じじゃないの?と思いますが、Lighthouse ならではのメリットがあります。

個人的に Lighthouse のメリットだと感じたのはこの辺

  1. ユーザーだけでなくグループに対して委任を行うことができる
  2. Azure ポータルで委任された環境を管理する際、テナントの切り替えが不要

個人的メリット 1

1 点目について、例として作業を依頼したベンダーに権限を与える場合、作業メンバーを連携するから招待して権限を付与してください、と顧客に依頼し対応してもらう、 担当者の増減があればそれを伝え、また実施してもらう、というパターンが多いと思います。
この場合、依頼してから顧客側の対応を待たないといけなかったり、顧客側も度々変更依頼があると手間だったりということがあります。
※共有ユーザーを作成して招待し、複数人で使いまわすことも可能ではありますが、アクティビティログから誰がどの操作をしたのか確認できず、セキュリティ的にはよろしくないので考慮しない。

f:id:kkkzk:20211112235546p:plain

Lighthouse でグループに対して委任を行うことで、このやり取りが不要になります。

Lighthouse では前述のとおり、AAD ユーザーだけでなく AAD グループに対してもサブスクリプションやリソース グループの権限を委任することができます。
サブスクリプションやリソース グループ権限の委任ですので、AAD グループの管理自体は元々の持ち主 (先の例だと作業ベンダー) が行えます。

つまり、顧客側としては 1 回 だけ Azure Lighthouse の設定を行い、ベンダー側 AAD のグループに対して権限を委任してしまえば、 あとはベンダー側が自分たちで AAD グループのメンバー変更を行うことで、環境の権限を持つユーザーを変更する、ということができます。

f:id:kkkzk:20211112235710p:plain

これにより、管理をする側、される側の双方にとってやりやすい状態が作れるかと思います。

個人的メリット 2

2 点目について、これまでどおり招待した場合どうなるかをおさらいします。

招待されている場合、招待先の AAD およびサブスクリプションの操作を行うためには、Azure ポータルでテナントを切り替える必要があります。

右上の歯車アイコンを選択して

f:id:kkkzk:20211113002134p:plain

設定画面から見ることのできる "現在のディレクトリ"
"切り替え" ボタンで AAD を切り替えることで、そのディレクトリに紐づくサブスクリプションが見えるようになります。

f:id:kkkzk:20211113002818p:plain

別 AAD のサブスクリプションを見るときには切り替えて、ロードが発生して、終わったらまた自分のディレクトリに戻して、ロードが発生して、 というこの操作は結構面倒だと思っています。

これについても、Lighthouse を使うと解決することができます。

"現在のディレクトリ" と同じページの少し上を見てもらうと、"現在のディレクトリ + 委任されたディレクトリ" という部分があると思います。
Lighthouse で委任した場合、ここでチェックボックスにチェックを入れれば、ディレクトリを切り替えずともサブスクリプションの閲覧、リソース作成が可能になります。
リソースを閲覧するためには、 Lighthouse で委任されたディレクトリとサブスクリプションにチェックを入れます。
※kkdev が委任したもの

f:id:kkkzk:20211113004643p:plain

何かしらのリソース一覧にてフィルターを見てもらうと、別ディレクトリのサブスクリプションも選択できるようになっています。

f:id:kkkzk:20211113005543p:plain

リソース作成画面でも、別ディレクトリのサブスクリプションが選択できます。

f:id:kkkzk:20211113005759p:plain

というように、Lighthouse の委任を行うと、ディレクトリを切り替えずとも他のサブスクリプションを操作することができるようになります。
切り替えを繰り返す必要がなくなることで、利便性が上がる部分はあるかと思います。

Azure Lighthouse の構成

ここからは Azure Lighthouse の構成方法について紹介します。

サブスクリプションやリソース グループを委任してもらう側 (前述のベンダー側) と、 サブスクリプションやリソース グループを委任する側 (前述の顧客側) のそれぞれで作業が必要です。
スタートはサブスクリプションを委任してもらう側です。

委任してもらう側の作業

委任してもらう側の作業としては、Azure Lighthouse を有効にしてもらうための ARM テンプレート作成が必要です。
以下は Azure ポータルから作成する流れです。

まずは Azure Lighthouse の画面を開いて、[顧客の管理] を選択

f:id:kkkzk:20211113013034p:plain

[ARM テンプレートを作成] を選択

f:id:kkkzk:20211113013124p:plain

以下の画面では主に、委任するスコープを指定します。

サブスクリプション全体で委任してもらうのか、特定のリソース グループを委任してもらうかの選択です。
リソース グループを選択した場合は、委任してもらうリソース グループの名前を直接入力します。

今回はサブスクリプションのまま [認可の追加] へ

f:id:kkkzk:20211113014043p:plain

認可の追加画面では、誰にどんな権限を与えるか、与える際は永続か一時的か、といったことを指定します。
一時的な場合は、権限が与えられる時間、多要素認証、承認の有無が指定できます。
なお、グループに権限を委任したい場合は、[プリンシパルの種類] でグループを選択しましょう。

f:id:kkkzk:20211113015133p:plain

1 プリンシパル分の登録ができたので、複数のユーザーやグループ、サービス プリンシパルに委任してもらいたい場合は繰り返して追加しましょう。
追加できたら [テンプレートの表示] を選択します。

f:id:kkkzk:20211113020033p:plain

テンプレートが表示されるので、[ダウンロード] を選択して保存します。

f:id:kkkzk:20211113020250p:plain

これで委任してもらう側の作業は完了です。

ダウンロードしたテンプレートを顧客に渡し、以下の手順でテンプレートをデプロイしてもらいましょう。

委任する側の作業

委任する側の作業としては、前の流れで作成された ARM テンプレートを受け取りデプロイすることです。
以下は Azure ポータルからデプロイする流れです。

ポータル上部の検索ボックスに "テンプレート" と入力し、[カスタムテンプレートのデプロイ] を選択します。

f:id:kkkzk:20211114130228p:plain

[エディターで独自のテンプレートを作成する] を選択します。

f:id:kkkzk:20211114131045p:plain

[ファイルの読み込み] から先ほどの ARM テンプレートを読み込み、下部の [保存] を選択します。

f:id:kkkzk:20211114131402p:plain

そうするとパラメータ指定画面になりますが、テンプレートにデフォルト値が組み込まれているため、 委任するサブスクリプションとリージョンだけ指定して下部の [確認と作成] を選択します。
次のページで [作成] を選択します。

f:id:kkkzk:20211114131919p:plain

デプロイが完了後に反映されるまで少し時間はありますが、委任する側の作業は完了です。

f:id:kkkzk:20211114133331p:plain

委任後の管理

Azure Lighthouse の構成後、それぞれの画面ではどのように見えるかの紹介です。

委任してもらう側

委任してもらう側 (ベンダー側) は、[顧客の管理] から確認します。

f:id:kkkzk:20211114133900p:plain

[顧客] や [委任] の画面から、どこの AAD のどのサブスクリプションやリソース グループが、どう委任されているかを確認することができます。

f:id:kkkzk:20211114134609p:plain

f:id:kkkzk:20211114134719p:plain

[ロールの割り当て] に表示されている青文字を選択すると、詳細を見ることができます。

f:id:kkkzk:20211114135147p:plain

f:id:kkkzk:20211114135227p:plain

委任してもらう側でできることは特にないです。

委任する側

委任してもらう側 (顧客側) は、[サービス プロバイダー プランの表示] から確認します。

f:id:kkkzk:20211114135559p:plain

[サービス プロバイダーのオファー] や [委任] の画面から、先ほどと同様にどこの AAD のどのサブスクリプションやリソース グループが、どう委任されているかを確認することができます。
[ロールの割り当て] 下の青文字から見られる詳細情報も同じのためここでは省略します。

f:id:kkkzk:20211114140114p:plain

f:id:kkkzk:20211114140351p:plain

委任する側は、ここ以下の 2 つの操作を行うことが可能です。

  1. 委任するサブスクリプション、リソース グループの追加
  2. 委任の削除
委任の追加

[サービス プロバイダーのオファー] の右端の方に + ボタンがあり、ここから委任を追加することができます。

f:id:kkkzk:20211114140944p:plain

最初に委任した範囲から追加したいものが出てきた場合には活用しましょう。

f:id:kkkzk:20211114141107p:plain

チェックボックスを使って委任を追加すると、こんな感じで見えるようになります。

f:id:kkkzk:20211114141246p:plain

委任の削除

[サービス プロバイダーのオファー] や [委任] 画面の右端の方にゴミ箱ボタンがあり、ここから委任を削除することができます。

f:id:kkkzk:20211114141552p:plain

違いとしては、[委任] 画面ではサブスクリプションやリソース グループ単位での委任削除ができ、[サービス プロバイダーのオファー] 画面では委任丸ごとの削除ができます。

細かくコントロールしたいときは [委任] 画面から、完全に委任を削除したい場合には [サービス プロバイダーのオファー] 画面から、という使い分けです。

ちなみに、削除前には確認のポップアップが表示されます。

f:id:kkkzk:20211114142019p:plain

終わりに

今回は Azure Lighthouse での委任について紹介しました。
構築ベンダーと顧客の例で紹介しましたが、Lighthouse で委任してもらって、そこに対する監視やサポートなどのマネージドサービス的な使いかともできると思います。

また、AAD 招待の場合は条件付きアクセスでの MFA 強制や認証元 IP の制御が適用でき、Azure Lighthouse で全部 OK というものでもないと思いので、選択肢の 1 つとして抑えていただくのがいいかと思います。