다음을 통해 공유


AKS(Azure Kubernetes Service)에서 관리 ID 사용

AKS(Azure Kubernetes Service) 클러스터에는 부하 분산 장치 및 관리 디스크와 같은 Azure 리소스에 액세스하려면 Microsoft Entra ID가 필요합니다. Azure 리소스에 대한 관리 ID는 AKS 클러스터에서 다른 Azure 서비스로의 액세스 권한을 부여하는 권장 방법입니다.

관리 ID를 사용하여 자격 증명을 관리하거나 코드에 포함하지 않고도 AKS 클러스터에서 Microsoft Entra 권한 부여를 지원하는 모든 서비스에 대한 액세스 권한을 부여할 수 있습니다. 관리 ID에 Azure RBAC(역할 기반 액세스 제어) 역할을 할당하여 Azure의 특정 리소스에 권한을 부여합니다. 예를 들어 관리 ID에 권한을 부여하여 클러스터에서 사용하기 위해 Azure Key Vault의 비밀에 액세스할 수 있습니다. Azure RBAC에 대한 자세한 내용은 Azure RBAC(Azure 역할 기반 액세스 제어)를 참조하세요.

이 문서에서는 신규 또는 기존 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 Key Vault의 비밀에 액세스해야 하는 경우 해당 권한을 부여하는 Azure RBAC 역할을 클러스터의 관리 ID에 할당할 수 있습니다.

관리 ID는 시스템 할당 또는 사용자 할당일 수 있습니다. 이러한 두 가지 유형의 관리 ID는 두 유형 중 하나를 사용하여 AKS 클러스터에서 Azure 리소스에 대한 액세스 권한을 부여할 수 있다는 측면에서 유사합니다. 둘 사이의 주요 차이점은 시스템 할당 관리 ID가 AKS 클러스터와 같은 단일 Azure 리소스와 연결된 반면 사용자 할당 관리 ID 자체는 독립 실행형 Azure 리소스라는 점입니다. 관리 ID 유형 간의 차이점에 대한 자세한 내용은 Azure 리소스에 대한 관리 ID의 관리 ID 형식을 참조하세요.

두 가지 유형의 관리 ID는 모두 Azure 플랫폼에서 관리되므로 비밀을 프로비전하거나 회전할 필요 없이 애플리케이션에서 액세스 권한을 부여할 수 있습니다. Azure는 ID의 자격 증명을 관리합니다.

AKS 클러스터를 배포하면 기본적으로 시스템 할당 관리 ID가 만들어집니다. 사용자가 할당한 관리 ID를 사용하여 클러스터를 만들 수도 있습니다.

관리 ID가 아닌 애플리케이션 서비스 주체를 사용하여 클러스터를 만들 수도 있습니다. 관리 ID는 보안 및 사용 편의성을 위해 서비스 주체보다 권장됩니다. 서비스 주체를 사용하여 클러스터를 만드는 방법에 대한 자세한 내용은 AKS(Azure Kubernetes Service)에서 서비스 주체 사용을 참조하세요.

애플리케이션 서비스 주체의 관리 ID를 사용하도록 기존 클러스터를 업데이트할 수 있습니다. 기존 클러스터를 다른 유형의 관리 ID로 업데이트할 수도 있습니다. 클러스터가 이미 관리 ID를 사용하고 있고 ID가 변경된 경우(예: 시스템 할당에서 사용자 할당으로 클러스터 ID 유형을 업데이트한 경우) 컨트롤 플레인 구성 요소가 새 ID로 전환하는 동안 지연이 있습니다. 컨트롤 플레인 구성 요소는 토큰이 만료될 때까지 이전 ID를 계속 사용합니다. 토큰이 새로 고쳐지면 새 ID로 전환됩니다. 이 프로세스는 몇 시간 정도 걸릴 수 있습니다.

시스템 할당 ID 및 사용자 할당 ID 유형은 Pod에서 실행되는 애플리케이션에서 사용하기 위한 Microsoft Entra Workload ID와 다릅니다.

시작하기 전에

  • Azure CLI 버전 2.23.0 이상이 설치되어 있는지 확인합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

  • 미리 만든 kubelet 관리 ID를 사용하려면 Azure CLI 버전 2.26.0 이상이 설치되어 있어야 합니다.

  • 시스템 할당 관리 ID 또는 사용자 할당 관리 ID를 사용하도록 기존 클러스터를 업데이트하려면 Azure CLI 버전 2.49.0 이상이 설치되어 있어야 합니다.

이 문서의 예제를 실행하기 전에 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 Key Vault의 비밀에 액세스해야 하는 경우 시스템 할당 관리 ID에 해당 권한을 부여하는 Azure RBAC 역할을 할당할 수 있습니다.

새 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 클러스터 업데이트

대신 서비스 주체를 사용하여 시스템 할당 관리 ID를 사용하는 기존 AKS 클러스터를 업데이트하려면 매개 변수를 az aks update--enable-managed-identity 사용하여 명령을 실행합니다.

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

서비스 주체 대신 시스템 할당 관리 ID를 사용하도록 클러스터를 업데이트한 후 컨트롤 플레인 및 Pod는 Azure의 다른 서비스에 액세스할 때 권한 부여를 위해 시스템 할당 관리 ID를 사용합니다. Kubelet은 에이전트 풀도 업그레이드할 때까지 서비스 주체를 계속 사용합니다. 노드에서 az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only 명령을 사용하여 관리 ID로 업데이트할 수 있습니다. 노드 풀 업그레이드는 노드 풀의 노드가 코드, 드레이닝 및 다시 이미지화될 때 AKS 클러스터에 가동 중지 시간을 발생합니다.

참고 항목

클러스터를 업데이트할 때 다음 정보에 유의하세요.

  • 업데이트는 사용할 VHD 업데이트가 있는 경우에만 작동합니다. 최신 VHD를 실행하는 경우 다음 VHD를 사용할 수 있을 때까지 기다린 후에 업데이트를 수행해야 합니다.

  • Azure CLI를 사용하면 마이그레이션 후 추가 기능의 사용 권한이 올바르게 설정됩니다. Azure CLI를 사용하여 마이그레이션 작업을 수행하지 않는 경우에는 추가 기능 ID의 사용 권한을 직접 처리해야 합니다. ARM(Azure Resource Manager) 템플릿을 사용하는 예는 ARM 템플릿을 사용하여 Azure 역할 할당을 참조하세요.

  • 클러스터가 ACR(Azure Container Registry)에서 이미지를 끌어오는 데 사용한 --attach-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 역할을 할당하는 단계를 참조하세요.

관리 ID에 Azure RBAC 역할을 할당하는 경우 역할의 범위를 정의해야 합니다. 일반적으로 역할 범위를 관리 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 가져오기

클러스터의 시스템 할당 관리 ID에 Azure RBAC 역할을 할당하려면 먼저 관리 ID에 대한 보안 주체 ID가 필요합니다. 명령을 호출하여 클러스터의 시스템 할당 관리 ID에 대한 보안 주체 ID를 az aks show 가져옵니다.

# 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 역할 할당

Azure의 리소스에 시스템 할당 관리 ID 권한을 부여하려면 명령을 호출 az role assignment create 하여 관리 ID에 Azure RBAC 역할을 할당합니다.

기본 작업자 노드 리소스 그룹 외부에 있는 VNet, 연결된 Azure 디스크, 고정 IP 주소, 경로 테이블의 경우 사용자 지정 리소스 그룹에 Contributor 역할을 할당해야 합니다.

예를 들어 명령을 사용하여 사용자 지정 리소스 그룹에 역할을 할당 Contributor 합니다 az role assignment create . 매개 변수의 --scope 경우 클러스터의 리소스 그룹에 대한 리소스 ID를 제공합니다.

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

참고 항목

클러스터의 관리 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 역할 할당

클러스터를 만들기 전에 명령을 호출하여 관리 ID에 대한 역할 할당을 추가합니다 az role assignment create .

다음 예제에서는 Key Vault 비밀 사용자 역할을 사용자가 할당한 관리 ID에 할당하여 키 자격 증명 모음의 비밀에 액세스할 수 있는 권한을 부여합니다. 역할 할당의 범위는 키 자격 증명 모음 리소스로 지정됩니다.

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

참고 항목

클러스터의 관리 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

참고 항목

Azure 미국 정부 클라우드의 USDOD Central, USDOD 동부 및 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>"
      }
    }
  },

참고 항목

제어 평면의 관리 ID를 시스템 할당에서 사용자 할당으로 마이그레이션해도 컨트롤 플레인 및 에이전트 풀에 대한 가동 중지 시간이 발생하지 않습니다. 컨트롤 플레인 구성 요소는 다음 토큰이 새로 고쳐질 때까지 최대 몇 시간 동안 이전 시스템 할당 ID로 계속 진행됩니다.

클러스터에서 사용 중인 관리 ID 유형 확인

기존 AKS 클러스터에서 사용 중인 관리 ID 유형을 확인하려면 az aks show 명령을 호출하고 ID의 형식 속성을 쿼리합니다.

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

클러스터가 관리 ID를 사용하는 경우 형식 속성의 값은 SystemAssigned 또는 UserAssigned가 됩니다.

클러스터가 서비스 주체를 사용하는 경우 형식 속성의 값은 null이 됩니다. 관리 ID를 사용하도록 클러스터를 업그레이드하는 것이 좋습니다.

미리 만든 kubelet 관리 ID 사용

미리 만든 kubelet ID는 클러스터를 만들기 전에 존재하는 사용자 할당 관리 ID입니다. 이 기능을 사용하면 클러스터를 만드는 동안 ACR(Azure Container Registry)에 대한 연결과 같은 시나리오를 사용할 수 있습니다.

참고 항목

사용자 고유의 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"
}

kubelet 관리 ID에 RBAC 역할 할당

az role assignment create 명령을 사용하여 kubelet ID에 Managed Identity Operator 역할을 할당합니다. $KUBELET_CLIENT_ID 변수에 대한 kubelet ID의 보안 주체 ID를 제공합니다.

az role assignment create \
    --assignee $KUBELET_CLIENT_ID \
    --role "Managed Identity Operator" \
    --scope "<kubelet-identity-resource-id>"

kubelet ID를 사용하는 클러스터 만들기

이제 기존 ID를 사용하여 AKS 클러스터를 만들 수 있습니다. assign-identity 인수와, assign-kubelet-identity 인수를 사용하는 kubelet 관리 ID를 포함하여 컨트롤 플레인에 대한 관리 ID의 리소스 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를 가져옵니다.

Warning

kubelet 관리 ID를 업데이트하면 AKS 클러스터의 노드 풀이 업그레이드되어 노드 풀의 노드가 코드/드레이닝되고 이미지로 다시 설치될 때 클러스터에 가동 중지 시간이 발생합니다.

  1. az aks show 명령을 사용하여 AKS 클러스터가 사용자가 할당한 관리 ID를 사용하고 있는지 확인합니다.

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

    클러스터에서 관리 ID를 사용하는 경우 출력에 msi 값이 있는 clientId가 표시됩니다. 서비스 주체를 사용하는 클러스터에 개체 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로 업데이트합니다. 인수에 대한 컨트롤 플레인에 대해 사용자가 할당한 관리 ID의 리소스 ID를 assign-identity 제공합니다. 인수에 대한 kubelet 관리 ID의 리소스 ID를 assign-kubelet-identity 제공합니다.

    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"
    }
  },

참고 항목

클러스터가 Azure Container Registry에서 이미지를 끌어오는 데 사용한 --attach-acr 경우 클러스터를 업데이트한 후 명령을 실행 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 컨트롤 플레인 구성 요소에서 수신 부하 분산 장치 및 AKS 관리 공용 IP, 클러스터 자동 크기 조정기, Azure 디스크, 파일, Blob CSI 드라이버를 관리하는 데 사용합니다. 노드 리소스 그룹에 대한 기여자 역할 지원 여부
kubelet AKS Cluster Name-agentpool ACR(Azure Container Registry)로 인증합니다. 해당 없음(kubernetes v1.15 이상의 경우) 지원 여부
추가 기능 AzureNPM ID가 필요하지 않습니다. 해당 없음 아니요
추가 기능 AzureCNI network monitoring ID가 필요하지 않습니다. 해당 없음 아니요
추가 기능 azure-policy(gatekeeper) ID가 필요하지 않습니다. 해당 없음 아니요
추가 기능 azure-policy ID가 필요하지 않습니다. 해당 없음 아니요
추가 기능 Calico ID가 필요하지 않습니다. 해당 없음 아니요
추가 기능 application-routing Azure DNS 및 Azure Key Vault 인증서를 관리합니다. Key Vault에 대한 Key Vault 비밀 사용자 역할, DNS 영역에 대한 DNZ 영역 기여자 역할, 프라이빗 DNS 영역에 대한 프라이빗 DNS 영역 기여자 역할 아니요
추가 기능 HTTPApplicationRouting 필요한 네트워크 리소스를 관리합니다. 노드 리소스 그룹에 대한 읽기 권한자 역할, DNS 영역에 대한 기여자 역할 아니요
추가 기능 수신 애플리케이션 게이트웨이 필요한 네트워크 리소스를 관리합니다. 노드 리소스 그룹에 대한 기여자 역할 아니요
추가 기능 omsagent Azure Monitor에 AKS 메트릭을 전송하는 데 사용됩니다. 모니터링 메트릭 게시자 역할 아니요
추가 기능 Virtual-Node(ACIConnector) ACI(Azure Container Instances)에 필요한 네트워크 리소스를 관리합니다. 노드 리소스 그룹에 대한 기여자 역할 아니요
추가 기능 비용 분석 비용 할당 데이터를 수집하는 데 사용됩니다.
워크로드 ID Microsoft Entra 워크로드 ID 애플리케이션이 Microsoft Entra 워크로드 ID를 사용하여 클라우드 리소스에 안전하게 액세스할 수 있도록 합니다. 해당 없음 아니요

Important

Azure Kubernetes Service의 오픈 소스 Microsoft Entra Pod 관리 ID(미리 보기)는 2022년 10월 24일에 더 이상 사용되지 않으며 프로젝트는 2023년 9월에 보관되었습니다. 자세한 내용은 사용 중단 알림을 참조하세요. AKS 관리 추가 기능은 2024년 9월에 더 이상 사용되지 않습니다.

Microsoft Entra 워크로드 ID 검토하는 것이 좋습니다. Entra 워크로드 ID 인증은 사용되지 않는 Pod 관리 ID(미리 보기) 기능을 대체합니다. Entra 워크로드 ID Pod에서 실행되는 애플리케이션이 이를 지원하는 다른 Azure 서비스에 대해 인증할 수 있도록 하는 권장 방법입니다.

제한 사항

  • 관리 ID 사용 클러스터를 다른 테넌트에 이동하거나 마이그레이션하는 것은 지원되지 않습니다.

  • 클러스터에 Microsoft Entra Pod 관리 ID(aad-pod-identity)가 사용하도록 설정된 경우, NMI(노드 관리 ID) Pod는 노드의 iptables를 수정하여 IMDS(Azure 인스턴스 메타데이터) 엔드포인트에 대한 호출을 가로챕니다. 이 구성은 특정 Pod가 사용하지 aad-pod-identity않는 경우에도 IMDS 엔드포인트에 대한 모든 요청이 NMI에 의해 가로채는 것을 의미합니다.

    CRD(AzurePodIdentityException 사용자 지정 리소스 정의)는 CRD에 정의된 Pod 일치 레이블에서 시작된 IMDS 엔드포인트에 대한 요청이 NMI에서 처리되지 않고 프록시되도록 지정하도록 구성할 수 있습니다. AzurePodIdentityException CRD를 kubernetes.azure.com/managedby: aks 구성하여 kube-system 네임스페이스에 레이블이 있는 aad-pod-identity 시스템 Pod를 제외합니다. 자세한 내용은 Azure Kubernetes Service에서 Microsoft Entra Pod 관리 ID 사용을 참조 하세요.

    예외를 구성하려면 mic-exception YAML을 설치합니다.

  • AKS는 사용자 지정 프라이빗 DNS 영역을 사용하는 경우 시스템이 할당한 관리 ID의 사용을 지원하지 않습니다.

다음 단계