次の方法で共有


Azure Kubernetes Service (AKS) でマネージド ID を使用する

Azure Kubernetes Service (AKS) クラスターでは、ロード バランサーやマネージド ディスクなどの Azure リソースにアクセスするために Microsoft Entra ID が必要です。 Azure リソース用マネージド ID は、AKS クラスターから他の Azure サービスへのアクセスを認可するための推奨される方法です。

マネージド ID を使用すると、資格情報を管理したりコードに資格情報を含めたりすることなく、AKS クラスターから Microsoft Entra 認可をサポートするサービスへのアクセスを認可できます。 マネージド ID に Azure ロールベースのアクセス制御 (Azure RBAC) ロールを割り当てて、Azure の特定のリソースに対するアクセス許可を付与します。 たとえば、クラスターで使用する Azure キー コンテナー内のシークレットにアクセスするためのアクセス許可をマネージド ID に付与できます。 Azure RBAC の詳細については、「Azure ロールベースのアクセス制御 (Azure RBAC) とは」を参照してください。

この記事では、新規または既存の AKS クラスターで次の種類のマネージド ID を有効にする方法について説明します。

  • システム割り当てマネージド ID。 システム割り当てマネージド ID は、AKS クラスターなどの単一の Azure リソースに関連付けられます。 これはクラスターのライフサイクルの間のみ存在します。
  • ユーザー割り当てマネージド ID。 ユーザー割り当てマネージド ID は、AKS クラスターが他の Azure サービスへのアクセスを認可するために使用できるスタンドアロンの Azure リソースです。 これは AKS クラスターとは別に保持され、複数の Azure リソースで使用できます。
  • 事前に作成された kubelet マネージド ID。 事前に作成された kubelet マネージド ID は、kubelet が Azure 内の他のリソースにアクセスするために使用できる、オプションのユーザー割り当て ID です。 kubelet にユーザー割り当てマネージド ID を指定しない場合、AKS はノード リソース グループにユーザー割り当て kubelet ID を作成します。

マネージド ID の詳細については、Azure リソース用マネージド ID に関する記事を参照してください。

概要

AKS クラスターは、マネージド ID を使用して Microsoft Entra にトークンを要求します。 これらのトークンは、Azure で実行されている他のリソースへのアクセスを認可するために使用されます。 マネージド ID に Azure RBAC の役割を割り当てて、特定のリソースにアクセスするためのアクセス許可をクラスターに付与できます。 たとえば、クラスターが Azure キー コンテナー内のシークレットにアクセスする必要がある場合、それらのアクセス許可を付与する Azure RBAC の役割をクラスターのマネージド ID に割り当てることができます。

マネージド ID は、システム割り当てかユーザー割り当てのいずれかになります。 これら 2 種類のマネージド ID は、どちらの種類を使用しても AKS クラスターから Azure リソースへのアクセスを認可できるという点で類似しています。 これらの主な違いは、システム割り当てマネージド ID が AKS クラスターなどの単一の Azure リソースに関連付けられるのに対し、ユーザー割り当てマネージド ID はそれ自体がスタンドアロンの Azure リソースであることです。 マネージド ID の種類の違いの詳細については、「Azure リソース用マネージド ID」の「マネージド ID の種類」を参照してください。

どちらの種類のマネージド ID も Azure プラットフォームによって管理されるため、シークレットをプロビジョニングまたはローテーションすることなく、アプリケーションからのアクセスを認可できます。 ID の資格情報は Azure によって管理されます。

AKS クラスターをデプロイすると、システム割り当てマネージド ID が既定で作成されます。 ユーザー割り当てマネージド ID を使用するクラスターを作成することもできます。

マネージド ID ではなく、アプリケーション サービス プリンシパルを使用するクラスターを作成することもできます。 セキュリティと使いやすさの観点から、サービス プリンシパルよりもマネージド ID をお勧めします。 サービス プリンシパルを使用するクラスターの作成の詳細については、「Azure Kubernetes Service (AKS) でサービス プリンシパルを使用する」を参照してください。

アプリケーション サービス プリンシパルのマネージド ID を使用するように既存のクラスターを更新できます。 既存のクラスターを別の種類のマネージド ID に更新することもできます。 クラスターで既にマネージド ID が使用されており、その ID が変更された場合 (たとえば、クラスター ID の種類をシステム割り当てからユーザー割り当てに更新した場合)、コントロール プレーン コンポーネントが新しい ID に切り替えられるまで遅延が生じます。 コントロール プレーン コンポーネントは、トークンの有効期限が切れるまで古い ID を使用し続けます。 トークンが更新されると、新しい ID に切り替わります。 このプロセスには数時間かかる場合があります。

システム割り当てとユーザー割り当ての ID の種類は、ポッド上で実行されているアプリケーションによる使用を目的とした Microsoft Entra ワークロード ID とは異なります。

開始する前に

この記事の例を実行する前に、az account set コマンドを呼び出してサブスクリプション ID を渡すことで、サブスクリプションを現在のアクティブなサブスクリプションとして設定します。

az account set --subscription <subscription-id>

また、Azure リソース グループをまだ作成していない場合は、az group create コマンドを呼び出して作成します。

az group create \
    --name myResourceGroup \
    --location westus2

システム割り当てマネージド ID を有効にする

システム割り当てマネージド ID は、AKS クラスターまたは別の Azure リソースに関連付けられている ID です。 システム割り当てマネージド ID は、クラスターのライフサイクルに関連付けられています。 クラスターが削除されると、システム割り当てマネージド ID も削除されます。

AKS クラスターは、システム割り当てマネージド ID を使用して、Azure で実行されている他のリソースへのアクセスを認可できます。 システム割り当てマネージド ID に Azure RBAC の役割を割り当てて、特定のリソースにアクセスするためのアクセス許可をクラスターに付与できます。 たとえば、クラスターが Azure キー コンテナー内のシークレットにアクセスする必要がある場合、それらのアクセス許可を付与する Azure RBAC の役割をシステム割り当てマネージド ID に割り当てることができます。

新しい AKS クラスターでシステム割り当てマネージド ID を有効にする

新しいクラスターでシステム割り当てマネージド ID を有効にするには、az aks create を呼び出します。 システム割り当てマネージド ID は、既定で新しいクラスターで有効になります。

az aks create コマンドを使用して、AKS クラスターを作成します。

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --generate-ssh-keys

システム割り当てマネージド ID がクラスターの作成後に有効なことを確認するには、「クラスターが使用しているマネージド ID の種類を確認する」を参照してください。

システム割り当てマネージド ID を使用するように既存の AKS クラスターを更新する

サービス プリンシパルを使用している既存の AKS クラスターを更新して、代わりにシステム割り当てマネージド ID を使用するには、--enable-managed-identity パラメーターを指定して az aks update コマンドを実行します。

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity

サービス プリンシパルではなくシステム割り当てマネージド ID を使用するようにクラスターを更新すると、コントロール プレーンとポッドは、Azure の他のサービスにアクセスするときに、認可のためにシステム割り当てマネージド ID を使用します。 Kubelet では、agentpool もアップグレードするまで、引き続きサービス プリンシパルを使用します。 ノードで az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only コマンドを使用して、マネージド ID に更新することができます。 ノード プールをアップグレードすると、AKS クラスターにダウンタイムが発生します。これは、ノード プール内のノードが切断、ドレイン、再イメージ化されるためです。

Note

クラスターを更新する場合、次の情報に注意してください。

  • 更新プログラムは、使用する VHD 更新プログラムがある場合にのみ機能します。 最新の VHD を実行している場合は、更新を実行するために、次の VHD が使用可能になるまで待つ必要があります。

  • Azure CLI により、移行後にアドオンのアクセス許可が正しく設定されていることが確認されます。 移行操作の実行に Azure CLI を使用しない場合は、アドオン ID のアクセス許可を自分で処理する必要があります。 Azure Resource Manager (ARM) テンプレートの使用例については、「ARM テンプレートを使用して Azure でのロールを割り当てる」を参照してください。

  • クラスターで --attach-acr を使用して Azure Container Registry (ACR) からイメージをプルしていた場合は、クラスターを更新した後、az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID> コマンドを実行して、マネージド ID に使用される新しく作成された kubelet で ACR からプルするためのアクセス許可を取得できるようにする必要があります。 そうしないと、更新の後に ACR からプルできなくなります。

システム割り当てマネージド ID のロールの割り当てを追加する

システム割り当てマネージド ID に Azure RBAC の役割を割り当てて、別の Azure リソースに対するアクセス許可をクラスターに付与できます。 Azure RBAC は、アクセス許可のレベルを指定する組み込みおよびカスタム役割の定義の両方をサポートします。 Azure RBAC の役割の割り当ての詳細については、「Azure ロールを割り当てる手順」を参照してください。

Azure RBAC の役割をマネージド ID に割り当てるときは、ロールのスコープを定義する必要があります。 一般に、ロールのスコープをマネージド ID に必要な最小限の特権に制限することがベスト プラクティスです。 Azure RBAC の役割のスコープの詳細については、「Azure RBAC のスコープについて理解する」を参照してください。

リソースがワーカー ノード リソース グループの外部にある独自の VNet、アタッチされた Azure ディスク、静的 IP アドレス、ルート テーブル、またはユーザー割り当ての kubelet ID を作成して使用する場合、Azure CLI によってロールの割り当てが自動的に追加されます。 ARM テンプレートまたは別の方法を使用している場合は、マネージド ID のプリンシパル ID を使用してロールの割り当てを実行します。

Azure CLI を使用していないが、ワーカー ノード リソース グループの外部にある独自の VNet、アタッチされた Azure ディスク、静的 IP アドレス、ルート テーブル、またはユーザー割り当ての kubelet ID を使用している場合は、コントロール プレーンのユーザー割り当てマネージド ID を使用することをお勧めします。 コントロール プレーンでシステム割り当てマネージド ID を使用する場合、ID はクラスターと同時に作成されるため、クラスターが作成されるまでロールの割り当てを実行できません。

システム割り当てマネージド ID のプリンシパル ID を取得する

Azure RBAC の役割をクラスターのシステム割り当てマネージド ID に割り当てるには、まずマネージド ID のプリンシパル ID が必要です。 az aks show コマンドを呼び出して、クラスターのシステム割り当てマネージド ID のプリンシパル ID を取得します。

# Get the principal ID for a system-assigned managed identity.
CLIENT_ID=$(az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.principalId \
    --output tsv)

システム割り当てマネージド ID に Azure RBAC の役割を割り当てる

システム割り当てマネージド ID のアクセス許可を Azure のリソースに付与するには、az role assignment create コマンドを呼び出して、マネージド ID に Azure RBAC の役割を割り当てます。

VNet、接続された Azure ディスク、静的 IP アドレス、既定のワーカー ノード リソース グループの外部にあるルート テーブルの場合は、カスタム リソース グループに Network Contributor ロールを割り当てる必要があります。

たとえば、az role assignment create コマンドを使用して、カスタム リソース グループに Network Contributor ロールを割り当てます。 --scope パラメーターには、クラスターのリソース グループのリソース ID を指定します。

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Network Contributor" \
    --scope "<resource-group-id>"

Note

クラスターのマネージド ID に付与されたアクセス許可が反映されるまでに、最大 60 分かかる場合があります。

ユーザー割り当てマネージド ID を有効にする

ユーザー割り当てマネージド ID は、スタンドアロンの Azure リソースです。 コントロール プレーンのユーザー割り当てマネージド ID を使用してクラスターを作成する場合、クラスターの作成前にユーザー割り当てマネージド ID リソースが存在している必要があります。 この機能により、カスタム VNet または送信の種類のユーザー定義ルーティング (UDR) を使用してクラスターを作成するなどのシナリオが可能になります。

ユーザー割り当てマネージド ID を作成する

ユーザー割り当てマネージド ID リソースがまだない場合は、az identity create コマンドを使用して作成します。

az identity create \
    --name myIdentity \
    --resource-group myResourceGroup

出力は、次の出力例のようになります。

{                                  
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity", 
  "location": "westus2",
  "name": "myIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

ユーザー割り当てマネージド ID のプリンシパル ID を取得する

ユーザー割り当てマネージド ID のプリンシパル ID を取得するには、az identity show を呼び出して、principalId プロパティに対してクエリを実行します。

CLIENT_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query principalId \
    --output tsv)

ユーザー割り当てマネージド ID のリソース ID を取得する

ユーザー割り当てマネージド ID を使用するクラスターを作成するには、新しいマネージド ID のリソース ID が必要になります。 ユーザー割り当てマネージド ID のリソース ID を取得するには、az aks show を呼び出して、id プロパティに対してクエリを実行します。

RESOURCE_ID=$(az identity show \
    --name myIdentity \
    --resource-group myResourceGroup \
    --query id \
    --output tsv)

ユーザー割り当てマネージド ID に Azure RBAC の役割を割り当てる

クラスターを作成する前に、az role assignment create コマンドを呼び出して、マネージド ID のロールの割り当てを追加します。

次の例では、ユーザー割り当てマネージド ID に Key Vault Secrets User ロールを割り当て、キー コンテナー内のシークレットにアクセスするためのアクセス許可を付与します。 ロールの割り当ての範囲はキー コンテナー リソースに限定されます。

az role assignment create \
    --assignee $CLIENT_ID \
    --role "Key Vault Secrets User" \
    --scope "<keyvault-resource-id>"

Note

クラスターのマネージド ID に付与されたアクセス許可が反映されるまでに、最大 60 分かかる場合があります。

ユーザー割り当てマネージド ID を使用するクラスターを作成する

ユーザー割り当てマネージド ID を使用する AKS クラスターを作成するには、az aks create コマンドを呼び出します。 --assign-identity パラメーターを含めて、ユーザー割り当てマネージド ID のリソース ID を渡します。

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity $RESOURCE_ID \
    --generate-ssh-keys

Note

Azure US Government クラウドの USDOD Central、USDOD East、USGov アイオワ リージョンは、ユーザー割り当てマネージド ID を使用したクラスターの作成をサポートしていません。

ユーザー割り当てマネージド ID を使用するように既存のクラスターを更新する

ユーザー割り当てマネージド ID を使用するように既存のクラスターを更新するには、az aks update コマンドを呼び出します。 --assign-identity パラメーターを含めて、ユーザー割り当てマネージド ID のリソース ID を渡します。

az aks update \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --enable-managed-identity \
    --assign-identity $RESOURCE_ID

ユーザー割り当てマネージド ID を使用するようにクラスターを正常に更新した場合の出力は、次の出力例のようになります。

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },

Note

コントロール プレーンのマネージド ID をシステム割り当てからユーザー割り当てに移行しても、コントロール プレーンとエージェント プールにダウンタイムは発生しません。 コントロール プレーン コンポーネントは、次のトークンが更新されるまで、最大数時間、古いシステム割り当て ID が引き続き使用されます。

クラスターが使用しているマネージド ID の種類を確認する

既存の AKS クラスターが使用しているマネージド ID の種類を確認するには、az aks show コマンドを呼び出し、ID の type プロパティのクエリを実行します。

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query identity.type \
    --output tsv       

クラスターがマネージド ID を使用している場合、type プロパティの値は SystemAssigned または UserAssigned のいずれかになります。

クラスターがサービス プリンシパルを使用している場合、type プロパティの値は null になります。 マネージド ID を使用するようにクラスターをアップグレードすることを検討してください。

事前に作成された kubelet マネージド ID を使用する

事前作成された kubelet ID は、クラスターの作成前に存在する、ユーザー割り当てマネージド ID です。 この機能により、クラスターの作成中に Azure Container Registry (ACR) に接続するなどのシナリオが可能になります。

Note

独自の kubelet マネージド ID を指定しない場合、AKS によってノード リソース グループにユーザー割り当て kubelet ID が作成されます。

既定のワーカー ノード リソース グループの外部にあるユーザー割り当て kubelet ID の場合は、コントロール プレーン マネージド ID の kubelet ID にマネージド ID オペレーター ロールを割り当てる必要があります。

kubelet マネージド ID

kubelet マネージド ID を持っていない場合は、az identity create コマンドを使用して作成します。

az identity create \
    --name myKubeletIdentity \
    --resource-group myResourceGroup

出力は、次の出力例のようになります。

{
  "clientId": "<client-id>",
  "clientSecretUrl": "<clientSecretUrl>",
  "id": "/subscriptions/<subscriptionid>/resourcegroups/myResourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity", 
  "location": "westus2",
  "name": "myKubeletIdentity",
  "principalId": "<principal-id>",
  "resourceGroup": "myResourceGroup",                       
  "tags": {},
  "tenantId": "<tenant-id>",
  "type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}

RBAC の役割を kubelet マネージド ID に割り当てる

az role assignment create コマンドを使用して、kubelet ID に ACRPull ロールを割り当てます。 $KUBELET_CLIENT_ID 変数には kubelet ID のプリンシパル ID を指定し、$ACR_REGISTRY_ID 変数には ACR レジストリ ID を指定します。

az role assignment create \
    --assignee $KUBELET_CLIENT_ID \
    --role "acrpull" \
    --scope "$ACR_REGISTRY_ID"

kubelet ID を使用するクラスターを作成する

これで、既存の ID で AKS クラスターを作成できるようになりました。 assign-identity 引数を含めて、コントロール プレーンのマネージド ID のリソース ID を指定し、assign-kubelet-identity 引数を使用して、kubelet マネージド ID を指定してください。

az aks create コマンドを使用して、既存の ID で AKS クラスターを作成します。

az aks create \
    --resource-group myResourceGroup \
    --name myManagedCluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 \
    --assign-identity <identity-resource-id> \
    --assign-kubelet-identity <kubelet-identity-resource-id> \
    --generate-ssh-keys

kubelet マネージド ID を使用して AKS クラスターを正常に作成すると、次のような出力が得られます。

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

kubelet ID を使用するように既存のクラスターを更新する

kubelet マネージド ID を使用するように既存のクラスターを更新するには、まず AKS クラスターの現在のコントロール プレーンのマネージド ID を取得します。

警告

kubelet マネージド ID を更新すると、AKS クラスターのノード プールがアップグレードされ、ノード プール内のノードが切断、ドレイン、再イメージ化されるため、クラスターにダウンタイムが発生します。

  1. az aks show コマンドを使用して、AKS クラスターでユーザー割り当てマネージド ID が使用されていることを確認します。

    az aks show \
        --resource-group <RGName> \
        --name <ClusterName> \
        --query "servicePrincipalProfile"
    

    クラスターがマネージド ID を使用している場合、出力には clientIdmsi の値で表示されます。 サービス プリンシパルを使用するクラスターに、オブジェクト ID が表示されます。 次に例を示します。

    # The cluster is using a managed identity.
    {
      "clientId": "msi"
    }
    
  2. クラスターでマネージド ID が使用されていることを確認したら、az aks show コマンドを使用して、マネージド ID のリソース ID を見つけます。

    az aks show --resource-group <RGName> \
        --name <ClusterName> \
        --query "identity"
    

    ユーザー割り当てマネージド ID の場合、出力は次の出力例のようになります。

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": <identity-resource-id>
          "clientId": "<client-id>",
          "principalId": "<principal-id>"
    },
    
  3. az aks update コマンドを使用して、既存の ID でクラスターを更新します。 assign-identity 引数には、コントロール プレーンのユーザー割り当てマネージド ID のリソース ID を指定します。 assign-kubelet-identity 引数に kubelet マネージド ID のリソース ID を指定します。

    az aks update \
        --resource-group myResourceGroup \
        --name myManagedCluster \
        --enable-managed-identity \
        --assign-identity <identity-resource-id> \
        --assign-kubelet-identity <kubelet-identity-resource-id>
    

独自の kubelet マネージド ID を使用してクラスターを正常に更新した場合の出力は、次の出力例のようになります。

  "identity": {
    "principalId": null,
    "tenantId": null,
    "type": "UserAssigned",
    "userAssignedIdentities": {
      "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myIdentity": {
        "clientId": "<client-id>",
        "principalId": "<principal-id>"
      }
    }
  },
  "identityProfile": {
    "kubeletidentity": {
      "clientId": "<client-id>",
      "objectId": "<object-id>",
      "resourceId": "/subscriptions/<subscriptionid>/resourcegroups/resourcegroups/providers/Microsoft.ManagedIdentity/userAssignedIdentities/myKubeletIdentity"
    }
  },

Note

クラスターで --attach-acr を使用して Azure Container Registry からイメージをプルしていた場合は、クラスターを更新した後、az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID> コマンドを実行して、マネージド ID に使用される新しく作成された kubelet で ACR からプルするためのアクセス許可を取得できるようにします。 そうしないと、アップグレードの後に ACR からプルできなくなります。

kubelet ID のプロパティを取得する

kubelet ID のプロパティを取得するには、az aks show を呼び出して、identityProfile.kubeletidentity プロパティのクエリを実行します。

az aks show \
    --name myAKSCluster \
    --resource-group myResourceGroup \
    --query "identityProfile.kubeletidentity"

事前作成された kubelet ID の制限事項

事前に作成された kubelet ID には次の制限があることに注意してください。

  • 事前に作成された kubelet ID は、ユーザー割り当てマネージド ID である必要があります。
  • 21Vianet が運用する Microsoft Azure の中国東部および中国北部のリージョンはサポートされていません。

AKS で使用されるマネージド ID の概要

AKS では、組み込みのサービスとアドオンに対して複数のマネージド ID が使用されます。

ID 名前 使用事例 既定のアクセス許可 独自の ID を使用する
コントロール プレーン AKS クラスター名 イングレス ロード バランサーと AKS マネージド パブリック IP、クラスター オートスケーラー、Azure ディスク、ファイル、BLOB CSI ドライバーなど、クラスター リソースを管理する目的で、AKS コントロール プレーン コンポーネントによって使用されます。 ノード リソース グループの共同作成者ロール サポートされています
kubelet AKS クラスター名 - agentpool Azure Container Registry (ACR) を使用した認証。 N/A (kubernetes v1.15+ 用) サポートされています
アドオン AzureNPM ID は必要ありません。 該当なし いいえ
アドオン AzureCNI ネットワーク監視 ID は必要ありません。 該当なし いいえ
アドオン azure-policy (ゲートキーパー) ID は必要ありません。 該当なし いいえ
アドオン azure-policy ID は必要ありません。 該当なし いいえ
アドオン Calico ID は必要ありません。 該当なし いいえ
アドオン アプリケーション ルーティング Azure DNS と Azure Key Vault の証明書を管理する Key Vault シークレット Key Vault のユーザー ロール、DNS ゾーンの DNZ ゾーン共同作成者ロール、プライベート DNS ゾーンのプライベート DNS ゾーン共同作成者ロール いいえ
アドオン HTTPApplicationRouting 必要なネットワーク リソースを管理します。 ノード リソース グループの閲覧者ロール、DNS ゾーンの共同作成者ロール いいえ
アドオン イングレス アプリケーション ゲートウェイ 必要なネットワーク リソースを管理します。 ノード リソース グループの共同作成者ロール いいえ
アドオン omsagent AKS メトリックを Azure Monitor に送信するために使用されます。 監視メトリック パブリッシャー ロール いいえ
アドオン 仮想ノード (ACIConnector) Azure Container Instances (ACI) のために必要なネットワーク リソースを管理します。 ノード リソース グループの共同作成者ロール いいえ
アドオン コスト分析 コストの割り当てデータを収集するために使用されます
ワークロード ID Microsoft Entra ワークロード ID Microsoft Entra ワークロード ID を使って、アプリケーションからクラウド リソースに安全にアクセスできるようにします。 該当なし いいえ

重要

Azure Kubernetes Service のオープン ソースの Microsoft Entra ポッドマネージド ID (プレビュー) は、2022 年 10 月 24 日に非推奨となり、プロジェクトは 2023 年 9 月にアーカイブされました。 詳細については、非推奨に関する通知を参照してください。 AKS マネージド アドオンは、2024 年 9 月に非推奨となります。

Microsoft Entra ワークロード ID を確認することをお勧めします。 Entra ワークロード ID 認証は、非推奨のポッド マネージド ID (プレビュー) 機能を置き換えます。 Entra ワークロード ID は、ポッド上で実行されているアプリケーションが、それをサポートする他の Azure サービスに対して自身を認証できるようにするための推奨される方法です。

制限事項

  • マネージド ID が有効になっているクラスターの別のテナントへの移動または移行はサポートされていません。

  • クラスターで Microsoft Entra ポッドマネージド ID (aad-pod-identity) が有効になっている場合、Azure Instance Metadata (IMDS) エンドポイントの呼び出しをインターセプトするよう、Node Managed Identity (NMI) ポッドによりノードの iptables が変更されます。 この構成は、特定のポッドが aad-pod-identity を使用しない場合でも、IMDS エンドポイントに対して行われた要求はすべて NMI によってインターセプトされることを意味します。

    AzurePodIdentityException カスタム リソース定義 (CRD) を構成して、CRD で定義されたラベルに一致するポッドから発信された IMDS エンドポイントへの要求を、NMI で処理せずにプロキシするように指定できます。 AzurePodIdentityException CRD を構成して、aad-pod-identitykube-system 名前空間にある kubernetes.azure.com/managedby: aks ラベルを持つシステム ポッドを除外します。 詳細については、「Azure Kubernetes Service で Microsoft Entra ポッド マネージド ID を使用する」を参照してください。

    例外を構成するには、mic-exception YAML をインストールします。

  • AKS では、カスタム プライベート DNS ゾーンを使用する場合、システム割り当てマネージド ID の使用はサポートされていません。

次のステップ