アプリの登録を使用して Azure テナント間でギャラリー VM イメージを共有する
Azure Compute Gallery では、アプリの登録を使用して別の組織とイメージを共有できます。 その他の共有オプションの詳細については、「ギャラリーを共有する」を参照してください。
ただし、Azure テナントの外部で大規模にイメージを共有する場合は、アプリ登録を作成することをお勧めします。 アプリ登録を使用すると、次のようにより複雑な共有シナリオが可能になります。
- ある会社が別の会社を買収し、Azure インフラストラクチャは別々のテナントに分散しているときの共有イメージの管理。
- Azure パートナーは、お客様の代理で Azure インフラストラクチャを管理します。 イメージのカスタマイズはパートナーのテナント内で行われますが、インフラストラクチャのデプロイはお客様のテナント内で行われます。
アプリの登録を作成する
イメージ ギャラリーのリソースを共有するために、両方のテナントが使用するアプリケーション登録を作成します。
- Azure portal で [アプリの登録] を開きます。
- ページ上部のメニューから [New registration](新しい登録) を選択します。
- [名前] に「myGalleryApp」と入力します。
- [サポートされているアカウントの種類] に、[任意の組織のディレクトリ (Microsoft Entra ディレクトリ - マルチテナント) 内のアカウントと、個人用の Microsoft アカウント (Skype、Xbox など)] を選びます。
- [リダイレクト URI] で、[プラットフォームの選択] ボックスの一覧から [Web] を選択し、「https://www.microsoft.com」と入力して、[登録] を選択します。 アプリの登録が作成されたら、概要ページが開きます。
- 概要ページの [Application (client) ID](アプリケーション (クライアント) ID) をコピーし、後で使用するために保存します。
- 認証とシークレット を選択してから 新しいクライアント シークレット を選択します。
- [説明] に「Gallery cross-tenant app secret」と入力します。
- [有効期限] を既定値の 6 か月 (推奨) から 12 か月に変更し、[追加] を選択します。
- シークレットの値をコピーし、それを安全な場所に保存します。 ページを閉じると、取得できなくなります。
ギャラリーを使用するためのアクセス許可をアプリの登録に付与します。
- Azure portal で、別のテナントと共有する Azure Compute Gallery を選択します。
- [アクセス制御 (IAM)] を選択したら、 [ロール割り当ての追加] で [追加] を選択します。
- [ロール] で [閲覧者] を選択します。
- [アクセスの割り当て先] の下にあるこれを [Microsoft Entra のユーザー、グループ、サービス プリンシパル] のままにします。
- [メンバーを選択する] に「myGalleryApp」と入力し、一覧に表示されたら選択します。 完了したら、[レビューと割り当て] を選択します。
テナント 2 にアクセス権を付与する
ブラウザーを使用してサインインを要求することで、テナント 2 にアプリケーションへのアクセス権を付与します。 "<テナント 2 ID>" を、イメージ ギャラリーを共有するテナントのテナント ID に置き換えます。 ユーザーは、Azure CLI コマンド az account show
を使用して自分のテナント ID を確認できます。
"<アプリケーション (クライアント) ID>" を、作成したアプリの登録のアプリケーション ID に置き換えます。 置き換えが完了したら、URL をブラウザーに貼り付け、サインイン プロンプトに従ってテナント 2 にサインインします。
https://login.microsoftonline.com/<Tenant 2 ID>/oauth2/authorize?client_id=<Application (client) ID>&response_type=code&redirect_uri=https%3A%2F%2Fwww.microsoft.com%2F
Azure portal でテナント 2 としてサインインし、アプリの登録に、VM を作成するリソース グループへのアクセス権を付与します。
- リソース グループを選択し、 [アクセス制御 (IAM)] を選択します。 [ロールの割り当ての追加] で [追加] を選択します。
- [ロール] に「共同作成者」と入力します。
- [アクセスの割り当て先] の下にあるこれを [Microsoft Entra のユーザー、グループ、サービス プリンシパル] のままにします。
- [メンバーを選択する] に「myGalleryApp」と入力し、一覧に表示されたら選択します。 完了したら、[レビューと割り当て] を選択します。
Note
同じマネージド イメージを使用して別のイメージ バージョンを作成する前に、そのイメージ バージョンが構築とレプリケーションを完全に完了するまで待つ必要があります。
重要
ポータルを使用して、別の Azure テナント内のイメージから VM をデプロイすることはできません。 テナント間で共有されているイメージから VM を作成するには、Azure CLI または PowerShell を使用する必要があります。
VM を作成する
アプリの登録を使用して共有されたイメージから VM を作成する前に、次のものが必要になります。
- ソース サブスクリプションと、VM を作成するサブスクリプションの両方のテナント ID。
- アプリの登録のクライアント ID、およびシークレット。
- 使用するイメージのイメージ ID。
appID、アプリ キー、およびテナント 1 の ID を使用して、テナント 1 のサービス プリンシパルにサインインします。 az account show --query "tenantId"
を使用して、必要に応じてテナント ID を取得できます。
この例では、一般化されたイメージから VM を作成する方法を示しています。 特殊化されたイメージを使用している場合は、「特殊化されたイメージ バージョンを使用して VM を作成する」を参照してください。
tenant1='<ID for tenant 1>'
tenant2='<ID for tenant 2>'
appid='<client ID of the app registration>'
secret='<secret from the app registration>'
az account clear
az login --service-principal -u $appid -p $secret --tenant $tenant1
az account get-access-token
appID、アプリ キー、およびテナント 2 の ID を使用して、テナント 2 のサービス プリンシパルにサインインします。
az login --service-principal -u $appid -p $secret --tenant $tenant2
az account get-access-token
VM を作成します。 例の情報を自身のものに置き換えます。
imageid="<ID of the image that you want to use>"
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image $imageid \
--admin-username azureuser \
--generate-ssh-keys