コンテナー レジストリから別の Microsoft Entra テナントの AKS クラスターにイメージをプルする
ある Microsoft Entra テナントに Azure AKS クラスターがあり、別のテナントに Azure コンテナー レジストリがある場合があります。 この記事では、AKS サービス プリンシパルの資格情報を使用したテナント間認証を有効してコンテナー レジストリからプルする手順について説明します。
Note
クラスターとコンテナー レジストリが異なるテナントにある場合、レジストリをアタッチして、AKS マネージド ID を使用して認証することはできません。
シナリオの概要
この例の前提条件は、次のとおりです。
- AKS クラスターはテナント A にあり、Azure コンテナー レジストリはテナント B にあります。
- AKS クラスターは、テナント A のサービス プリンシパル認証で構成されています。AKS クラスターのサービス プリンシパルを作成して使用する方法の詳細を参照してください。
AKS クラスターのサブスクリプションの共同作成者ロールと、コンテナー レジストリのサブスクリプションの所有者ロールが少なくとも必要です。
次の手順を使用します。
- テナント A で新しいマルチテナント アプリ (サービス プリンシパル) を作成します。
- テナント B でアプリをプロビジョニングします。
- テナント B のレジストリからプルするようにサービス プリンシパルを構成します。
- 新しいサービス プリンシパルを使用して認証するように、テナント A の AKS クラスターを更新します。
詳細な手順
手順 1: マルチテナント Microsoft Entra アプリケーションを作成する
テナント A の Azure portal にサインインします。
Microsoft Entra ID を検索して選択します。
[管理] で、[アプリの登録]> + [新規登録] を選択します。
[サポートされているアカウントの種類] で、 [任意の組織のディレクトリ内のアカウント] を選択します。
[リダイレクト URI] に「 https://www.microsoft.com 」と入力します。
[登録] を選択します。
[概要] ページで、アプリケーション (クライアント) ID を書き留めます。 これは、手順 2 と手順 4 で使用します。
[証明書とシークレット] で、[クライアント シークレット] の [+ 新しいクライアント シークレット] を選択します。
"パスワード" などの説明を入力し、 [追加] を選択します。
[クライアント シークレット] で、クライアント シークレットの値を書き留めます。 これは、手順 4 で AKS クラスターのサービス プリンシパルを更新する際に使用します。
手順 2: ACR テナントでサービス プリンシパルをプロビジョニングする
テナント B の管理者アカウントを使用して、次のリンクを開きます。次に示すように、テナント B の ID と、マルチテナント アプリのアプリケーション ID (クライアント ID) を挿入します。
https://login.microsoftonline.com/<Tenant B ID>/oauth2/authorize?client_id=<Multitenant application ID>&response_type=code&redirect_uri=<redirect url>
[組織の代理として同意する] をオンにし、 [同意する] を選択します。
手順 3: レジストリからプルするためのアクセス許可をサービス プリンシパルに付与する
テナント B で、スコープがターゲット コンテナー レジストリに設定された AcrPull ロールをサービス プリンシパルに割り当てます。 ロールは、Azure portal または他のツールを使用して割り当てることができます。 Azure CLI を使用した手順の例については、「サービス プリンシパルによる Azure Container Registry 認証」を参照してください。
手順 4: Microsoft Entra アプリケーション シークレットで AKS を更新する
手順 1 で収集したマルチテナント アプリケーション (クライアント) ID とクライアント シークレットを使用して、AKS サービス プリンシパルの資格情報を更新します。
サービス プリンシパルの更新には数分かかることがあります。
次のステップ
- サービス プリンシパルによる Azure Container Registry 認証の詳細を確認する
- Kubernetes のドキュメントでイメージのプル シークレットの詳細を確認します
- Microsoft Entra ID のアプリケーションおよびサービス プリンシパル オブジェクトについて確認する
- Kubernetes クラスターから Azure Container Registry の認証を受けるシナリオについて確認する