みなさん、こんにちは。4 月から期も変わり、心機一転の椎熊です。
Azure Lighthouse というサービスをご存知でしょうか?
直感的にサービス内容がわかりづらいサービスですよね。
「Lighthouse」 を直訳しますと、「灯台」 という意味になります。
どういったことなのでしょうか。
今回は Lighthouse について概要と設定方法についてご紹介します。
Azure リソースの権限を他のテナントに委任することができます。
委任されたユーザーは、他のテナントのリソースにアクセスすることができます。
主な利用目的は、ベンダーが顧客のテナントの Azure を運用する場合です。
Azure に詳しい方であれば、Azure Lighthouse を使わなくても、ゲスト招待すればできるのでは?
と思われるかもしれません。
ゲスト招待でも同じことができます。
違いについて、文字だけだと伝わりづらいので、少し図を加えて解説していきます。
以下のような要件があるとします。
ゲスト招待で対応する場合は、以下のようなイメージです。
しかし、ゲスト招待では、以下のような課題があります。
一方、Azure Lighthouse を使うとこうなります。
権限付与対象として、ベンダー側テナントのユーザー / グループ / サービスプリンシパルを指定することができます。
グループを指定して委任することにより、ゲスト招待時の課題が解消できます。
また、ゲスト招待してもらったパターンですと、顧客のリソースにアクセスするには、サブスクリプションを切り替える必要がありました。
Azure Lighthouse ですと、サブスクリプション切り替えることなく、顧客リソースにアクセスすることができますので、切り替える時間が短縮できます。 (サブスクリプションの切り替えは地味に時間がかかりますよね)
委任する範囲は、サブスクリプションとリソースグループを指定することができます。
割り当てるロールの制約として、以下の組み込みロールは割り当てることができません。
また、カスタムロールも割り当てることができません。
詳細は以下のドキュメントを参照ください。
[Azure の委任されたリソース管理でのロールのサポート]
https://docs.microsoft.com/ja-jp/azure/lighthouse/concepts/tenants-users-roles#role-support-for-azure-delegated-resource-management
Azure Lighthouse は無料で使えます。
最新情報は以下のリンクを参照ください。
[Azure Lighthouse とは]
https://docs.microsoft.com/ja-jp/azure/lighthouse/overview
Azure Lighthouse の設定方法をご紹介します。
以下のマイクロソフト社のドキュメントを参考に設定します。
[Azure の委任されたリソース管理に顧客をオンボードする]
https://docs.microsoft.com/ja-jp/azure/lighthouse/how-to/onboard-customer
事前に以下の準備をしておいてください。
下記、3 の操作には対象のサブスクリプションに対して、所有者ロールが必要となります。
左右にスクロールしてご覧ください。
No. | 操作テナント | 手順 |
---|---|---|
1 | ベンダー | 設定に必要な情報取得する |
2 | 顧客 | ARM テンプレートを作成する |
3 | 顧客 | ARM テンプレートをデプロイする ← ここで委任される |
4 | 顧客 | 付与した権限を確認する |
5 | ベンダー | 付与された権限を確認する |
6 | ベンダー | 顧客の VM を表示する |
顧客に渡す情報として以下を取得します。
[すべてのサービス] - [Azure Active Directory] - [概要] と選択します。
テナント ID をコピーしておきます。
[Azure Active Directory] - [グループ] を選択し、グループの一覧から対象のグループ (ops-group) を選択します。
オブジェクト ID をコピーしておきます。
委任は、ARM テンプレートを使って行います。
その前に、適用する RBAC のロール ID を確認します。
ロール ID は以下のドキュメントから確認します。
[Azure 組み込みロール]
https://docs.microsoft.com/ja-jp/azure/role-based-access-control/built-in-roles
今回は、閲覧者とするため、「acdd72a7-3385-48ef-bd42-f606fba81ae7」 となります。
割り当てるスコープによって、準備する ARM テンプレートの内容が変わってきます。
今回は、サブスクリプション単位とするため、以下の ARM テンプレートを使用します。
詳細は以下のドキュメントを参照ください。
[Azure Resource Manager テンプレートの作成]
https://docs.microsoft.com/ja-jp/azure/lighthouse/how-to/onboard-customer#create-an-azure-resource-manager-template
パラメーターファイルを作成します。
パラメーターファイルはあくまでもサンプルですので、自社の環境に合わせて編集する必要があります。
必要な情報は以下のとおりです。
左右にスクロールしてご覧ください。
No. | パラメーター名 | 説明 |
---|---|---|
1 | mspOfferName | 任意の名前を付ける (ベンダー名など) |
2 | mspOfferDescription | 任意の説明 (ベンダー名や委任した日など) |
3 | managedByTenantId | 委任先の Azure AD テナントの ID (vender.com) |
4 | principalId | 委任先のテナントのユーザー / グループ / サービスプリンシパルのオブジェクト ID (ops-group) |
5 | principalIdDisplayName | 任意の表示名 (委任先のグループ名など) |
6 | roleDefinitionId | 付与するロール ID |
作成したパラメーターファイルは以下のとおりです。
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mspOfferName": {
"value": "vender"
},
"mspOfferDescription": {
"value": "vender yyyy/mm/dd"
},
"managedByTenantId": {
"value": "<委任先の Azure AD テナントの ID>"
},
"authorizations": {
"value": [
{
"principalId": "<委任先のオブジェクト ID>",
"principalIdDisplayName": "ops-group",
"roleDefinitionId": "acdd72a7-3385-48ef-bd42-f606fba81ae7"
},
]
}
}
}
ARM テンプレートはそのまま編集せずテキストで保存しておいてください。
実際に作成したテンプレートをもとに、委任をします。
ARM テンプレートのデプロイは、Azure CLI もしくは Powershell で実行します。
今回は、Azure CLI で実行します。
Cloud Shell を開き、Cloud Shell の画面上に ARM テンプレートおよびパラメーターファイルをドラッグ & ドロップします。
するとファイルをアップロードできます。
2 つのファイルがアップロードされていれば準備は完了です。
以下のコマンドを実行し、対象のサブスクリプションであることを確認をします。
az account show
対象のサブスクリプション出ない場合は、以下のコマンドで対象のサブスクリプションを指定してください。
az account set --subscription <subscriptionId>
以下コマンドを実行し、委任をします。
実行に 2分ほどかかりました。
az deployment create --name test-lighthouse \
--location japaneast \
--template-file delegatedResourceManagement.json \
--parameters delegatedResourceManagement.parameters.json \
--verbose
[すべてのサービス] - [サービス プロバイダー] - [委任] を選択します。
委任したサブスクリプション、権限が表示できます。
委任された側のベンダーからは、[すべてのサービス] - [マイ カスタマー] - [委任] を選択します。
委任されたサブスクリプション、権限が表示できます。
顧客のサブスクリプションにアクセスするには、右上の [ディレクトリ + サブスクリプション] を選択します。
[現在のディレクトリ + 委任されたディレクトリ] に委任されたディレクトリが表示され、
[サブスクリプション] に委任されたサブスクリプションが表示されます。
選択した、ディレクトリおよびサブスクリプションのリソースが一つの画面に表示されます。
右端でどこのサブスクリプションのリソースか確認できます。
VM の一覧で [サブスクリプション] を選択すると特定のサブスクリプションのリソースのみを表示することも可能です。
数多くの Azure リソースの中から特定のリソースを効率的に探し出すことを可能にする。
という思いを込めて、Lighthouse という名前を付けたのではないでしょうか。
ゲスト招待するパターンと比較し、Azure Lighthouse を利用した方が、マルチテナント環境における操作性が向上します。
今回は、VM の管理についてご紹介しましたが、VM 以外にも使えるサービスがあります。
例えば、Azure Monitor ですと複数テナントを跨いだワークスペース操作が可能になります。
こちらについては次回以降ご紹介したいと思います。
ぜひ利用してみてください。
関連ページ |