Microsoft Entra 統合により、Microsoft Entra 統合プロセスが簡略化されます。 これまでは、ユーザーがクライアントとサーバー アプリを作成し、Microsoft Entra テナントでディレクトリ リーダー ロールのアクセス許可を付与する必要がありました。 これで、Azure Kubernetes Service (AKS) リソース プロバイダーがクライアントアプリとサーバー アプリを管理するようになりました。
クラスター管理者は、ユーザーの ID またはディレクトリ グループのメンバーシップに基づいて、Kubernetes のロールベースのアクセス制御 (Kubernetes RBAC) を構成できます。
Microsoft Entra 統合フローの詳細については、Microsoft Entra のドキュメントを参照してください。
制限事項
Microsoft Entra 統合は、クラスターで有効にした後は無効にできません。
始める前の準備
AKS アドオンをインストールするには、次の項目があることを確認します。
- Azure CLI バージョン 2.29.0 以降がインストールおよび構成されていること。 バージョンを確認するには、
az --versionコマンドを実行します。 インストールまたはアップグレードが必要な場合は、Azure CLI のインストールを参照してください。 -
kubectlのバージョン 1.18.1 以降か、kubeloginが必要です。 Azure CLI と Azure PowerShell モジュールには、これら 2 つのコマンドが含まれており、自動的に管理されます。 つまり、これらは既定でアップグレードされ、az aks install-cliを実行する必要はなく、推奨されません。 自動パイプラインを使用している場合は、正しいバージョンまたは最新バージョンへのアップグレードを管理する必要があります。 Kubernetes とkubectlのマイナー バージョン間の差は、1 バージョン未満である必要があります。 そうしなければ、バージョンが正しくないために認証の問題が発生します。 - この構成では、クラスター用の Microsoft Entra グループが必要です。 このグループは、クラスターの管理アクセス許可を付与する、管理者グループとして登録されます。 既存の Microsoft Entra グループがない場合は、
az ad group createコマンドを使って作成できます。
AKS クラスターで統合を有効にする
まず、リソース グループ、クラスター名、Microsoft Entra 管理グループ オブジェクト ID、テナント ID の環境変数を設定します。 これらの変数は、次のコマンドで再利用します。
export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myManagedCluster"
export AAD_ADMIN_GROUP_OBJECT_IDS="<group-object-id>" # comma-separated for multiple groups
export AAD_TENANT_ID="<tenant-id>"
export LOCATION="centralus"
新しいクラスターを作成する
az group createコマンドを使用して、Azure リソース グループを作成します。az group create --name $RESOURCE_GROUP --location $LOCATIONaz aks createコマンドを使って AKS クラスターを作成し、Microsoft Entra グループの管理アクセスを有効にします。az aks create \ --resource-group $RESOURCE_GROUP \ --name $CLUSTER_NAME \ --enable-aad \ --aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \ --aad-tenant-id $AAD_TENANT_ID \ --generate-ssh-keysMicrosoft Entra ID クラスターの正常な作成には、応答本文に次のセクションがあります。
"AADProfile": { "adminGroupObjectIds": [ "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb" ], "clientAppId": null, "managed": true, "serverAppId": null, "serverAppSecret": null, "tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee" }
既存のクラスターを使用する
az aks update コマンドを使用して、既存の Kubernetes RBAC 対応クラスターで Microsoft Entra 統合を有効にします。 クラスターへのアクセスが維持されるように管理者グループを設定してください。
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-aad \
--aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
--aad-tenant-id $AAD_TENANT_ID
Microsoft Entra ID クラスターの正常なアクティブ化には、応答本文に次のセクションがあります。
"AADProfile": {
"adminGroupObjectIds": [
"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
],
"clientAppId": null,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
レガシ クラスターを統合に追加する
クラスターで従来の Microsoft Entra 統合が使用されている場合は、 az aks update コマンドを使用して Microsoft Entra 統合にアップグレードできます。
Warning
Free レベルクラスターでは、アップグレード中に API サーバーのダウンタイムが発生する可能性があります。 営業時間外の時間帯にアップグレードすることをお勧めします。
アップグレード後、 kubeconfig コンテンツが変更されます。
az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name>を実行して、新しい資格情報をkubeconfig ファイルにマージする必要があります。
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-aad \
--aad-admin-group-object-ids $AAD_ADMIN_GROUP_OBJECT_IDS \
--aad-tenant-id $AAD_TENANT_ID
Microsoft Entra ID クラスターの正常な移行には、応答本文に次のセクションがあります。
"AADProfile": {
"adminGroupObjectIds": [
"aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
],
"clientAppId": null,
"managed": true,
"serverAppId": null,
"serverAppSecret": null,
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee"
}
有効化されたクラスターにアクセスする
az aks get-credentialsコマンドを使用して、クラスターにアクセスするためのユーザー資格情報を取得します。az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAMEサインインの手順に従います。
kubectl get nodesコマンドを使用してクラスター内のノードを表示します。kubectl get nodes
Kubernetes 1.24 以降を実行しているクラスターでは、 kubelogin exec-plugin 形式が自動的に使用されるため、対話型の Azure CLI サインインに手動の kubeconfig 変換は必要ありません。 CI パイプラインなどの非対話型シナリオ、または別の認証方法 (サービス プリンシパル、マネージド ID、ワークロード ID、またはデバイス コード) を使用する場合は、「 Kubelogin を使用して AKS でユーザーを認証する」を参照してください。
非常用アクセス
クラスターの Kubernetes API サーバーへの Microsoft Entra ID サインインが機能しないまれな場合 (たとえば、より広範な Microsoft Entra サービス インシデントの間)、クラスターのローカル管理者アカウントにフォールバックして、Entra ベースのサインインが復元されるまでクラスターの運用を続けることができます。
Note
このフォールバックは、Entra ベースのサインイン自体が使用できない場合にのみ必要です。 問題が正しく構成されていない管理グループ (たとえば、グループが削除されたか、間違ったオブジェクト ID が設定されている) の場合は必要ありません。az aks update --aad-admin-group-object-idsアクセス許可を持つアカウントを使用して、管理者グループをMicrosoft.ContainerService/managedClusters/writeで直接更新します。
Important
このワークフローは、Microsoft Entra 認証をバイパスします。 一時的なフォールバックとしてのみ使用し、Microsoft Entra サインインが復元されたら、ローカル アカウントをもう一度無効にします。
ブレイクグラス経路を使用するには、クラスター リソースに対する Azure Kubernetes Service Contributor ロールが必要です。 このロールは、ローカル アカウントの再有効化に必要な Microsoft.ContainerService/managedClusters/write アクセス許可と、ローカル クラスター管理者資格情報へのアクセスを許可します。 これは Azure Resource Manager によって評価されるため、Kubernetes API サーバーへの Microsoft Entra サインイン パスとは無関係に動作します。
クラスターで ローカル アカウント が無効になっている場合は、一時的に再度有効にします。
az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --enable-local-accountsaz aks get-credentialsフラグを指定して、--adminコマンドを使用してローカル クラスター管理者の資格情報を取得します。 この資格情報は、Microsoft Entra をバイパスする証明書ベースの kubeconfig です。az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --adminkubectlを使用して、Microsoft Entra を使用できない状態でクラスターを操作します。 Microsoft Entra サインインが再び機能したら、 ローカル アカウントを無効 にして、クラスターをセキュリティで保護されたベースラインに戻します。az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --disable-local-accounts
次のステップ
- クラスターやノードへのアクセスの条件付きアクセスを使用して、クラスターへのサインインを強化します。
- クラスターとノードのアクセスには、Privileged Identity Management でジャストインタイム昇格アクセスを使用します。
- Microsoft Entra と Kubernetes RBAC の統合について説明します。
- AKS と Kubernetes ID の概念について学習する。
- AKS でサポートされているすべてのMicrosoft Entra認証方法について、kubelogin を
使用する方法について説明します。 - Azure Resource Manager テンプレートを使用して、Microsoft Entra ID が有効なクラスターを作成します。