🔆

Lighthouse を ARM テンプレートで設定

2025/01/20に公開

はじめに

以前、以下の記事で Lighthouse の説明をしたのですが、Azure ポータルで複数のテナントやサブスクリプションで設定するのは面倒なので、Azure PowerShell と ARM テンプレートで設定する方法を整理します。
https://zenn.dev/microsoft/articles/33ee5bc86f0038

事前に

集中管理側で各テナント・サブスクリプションをまとめて設定する場合、各テナントにおいてユーザーを作成もしくはゲスト追加し、サブスクリプションに所有者ロールを付与しておきます。

設定

再掲になりますが、事前準備を書き出していきます。
Lighthouse の設定パラメータを準備します(取得方法は割愛します)。必要なパラメータは以下になります。

  • 委任先のテナント ID
  • 委任先のユーザーオブジェクト ID
  • 操作許可するためのロール ID
  • 委任する管理グループやサブスクリプションもしくはリソースグループ名

操作許可するためのロール ID は組み込みロールの一覧から確認できます。Lighthouse では現時点では組み込みロールのみサポートされています。
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles

ARM テンプレートはこちらです。(基本的に変更不要)
https://github.com/katsato-ms/Microsoft/blob/main/Lighthouse/template_lighthouse.json

収集した情報をもとに以下のパラメータファイル変更しておきます。
https://github.com/katsato-ms/Microsoft/blob/main/Lighthouse/template_lighthouse_parameters.json

各パラメータファイルの入力項目は以下の通りです。

項目 入力値
サブスクリプション 本デプロイを保存するサブスクリプション
リージョン デプロイの場所
Msp Offer Name 委任の名前(任意)
Msp Offer Description 委任の説明(任意)
Managed By Teant Id 委任先 (中央管理側) のテナント ID
Authorizations 後述

Authorizations は委任の内容を json 形式で記述します。

[
	{
		"principalId": "<ユーザー等のオブジェクト ID>",
		"principalIdDisplayName": "<任意の名前>",
		"roleDefinitionId": "<委任する組み込みロール ID>"
	}
]

これらをデプロイするための PowerShell は以下です。
https://github.com/katsato-ms/Microsoft/blob/main/Lighthouse/deploy_templates_lighthouse.ps1

複数のサブスクリプションやテナントに対してまとめて実行する場合には、各ファイルを準備し、$delegationFromtenantId$subscriptionId 、ファイル名を変数として csv などから読み込み処理してください。

Microsoft (有志)

Discussion