Compartilhar via


Usar uma identidade gerenciada no Serviço de Kubernetes do Azure (AKS)

Os clusters do Serviço de Kubernetes do Azure (AKS) exigem uma identidade do Microsoft Entra para acessar os recursos do Azure, como balanceadores de carga e discos gerenciados. As identidades gerenciadas para recursos do Azure são a maneira recomendada de autorizar o acesso de um cluster do AKS a outros serviços do Azure.

Você pode usar uma identidade gerenciada para autorizar o acesso de um cluster do AKS a qualquer serviço que dê suporte à autorização do Microsoft Entra, sem a necessidade de gerenciar credenciais ou incluí-las em seu código. Você atribui à identidade gerenciada uma função de RBAC (controle de acesso baseado em função) do Azure para conceder a ela permissões para um recurso específico no Azure. Por exemplo, você pode conceder permissões a uma identidade gerenciada para acessar segredos em um cofre de chaves do Azure para uso pelo cluster. Para saber mais sobre o RBAC do Azure, veja O que é o controle de acesso baseado em função do Azure (RBAC do Azure)?.

Este artigo mostra como habilitar os seguintes tipos de identidade gerenciada em um cluster novo ou existente do AKS:

  • Identidade gerenciada atribuída pelo sistema. Uma identidade gerenciada atribuída pelo sistema está associada a um único recurso do Azure, como um cluster do AKS. Ela existe apenas durante o ciclo de vida do cluster.
  • Identidade gerenciada atribuída ao usuário. Uma identidade gerenciada atribuída pelo usuário é um recurso independente do Azure que um cluster do AKS pode usar para autorizar o acesso a outros serviços do Azure. Ela persiste separadamente do cluster do AKS e pode ser usada por vários recursos do Azure.
  • Identidade gerenciada do kubelet pré-criada. Uma identidade gerenciada do kubelet pré-criada é uma identidade opcional atribuída pelo usuário que o kubelet pode usar para acessar outros recursos no Azure. Se você não especificar uma identidade gerenciada atribuída pelo usuário para kubelet, o AKS criará uma identidade do kubelet atribuída pelo usuário no grupo de recursos do nó.

Para saber mais sobre identidades gerenciadas, confira Identidades gerenciadas para recursos do Azure.

Visão geral

Um cluster do AKS usa uma identidade gerenciada para solicitar tokens do Microsoft Entra. Esses tokens são usados para autorizar o acesso a outros recursos em execução no Azure. Você pode atribuir uma função RBAC do Azure a uma identidade gerenciada para conceder permissões de cluster para acessar recursos específicos. Por exemplo, se o cluster precisar acessar segredos em um cofre de chaves do Azure, você poderá atribuir à identidade gerenciada do cluster uma função RBAC do Azure que concede essas permissões.

Uma identidade gerenciada pode ser atribuída pelo sistema ou pelo usuário. Esses dois tipos de identidades gerenciadas são semelhantes no sentido de que você pode usar qualquer tipo para autorizar o acesso aos recursos do Azure a partir do cluster do AKS. A principal diferença entre eles é que uma identidade gerenciada atribuída pelo sistema está associada a um único recurso do Azure, como um cluster do AKS, enquanto uma identidade gerenciada atribuída pelo usuário é um recurso independente do Azure. Para obter mais detalhes sobre as diferenças entre os tipos de identidades gerenciadas, consulte Tipos de identidade gerenciada em Identidades gerenciadas para recursos do Azure.

Ambos os tipos de identidades gerenciadas são gerenciados pela plataforma do Azure, para que você possa autorizar o acesso de seus aplicativos sem a necessidade de provisionar ou girar segredos. O Azure gerencia as credenciais da identidade para você.

Quando você implanta um cluster do AKS, uma identidade gerenciada atribuída pelo sistema é criada para você por padrão. Você também pode criar o cluster com uma identidade gerenciada atribuída pelo usuário.

Também é possível criar um cluster com uma entidade de serviço de aplicativo, em vez de uma identidade gerenciada. As identidades gerenciadas são recomendadas em relação às entidades de serviço por questões de segurança e facilidade de uso. Para obter mais informações sobre como criar um cluster com uma entidade de serviço, consulte Usar uma entidade de serviço com o Serviço de Kubernetes do Azure (AKS).

Você pode atualizar um cluster existente para usar uma identidade gerenciada de uma entidade de serviço de aplicativo. Você também pode atualizar um cluster existente para um tipo diferente de identidade gerenciada. Se o seu cluster já estiver usando a identidade gerenciada e ela tiver sido alterada, por exemplo, se você atualizou o tipo de identidade do cluster de atribuída pelo sistema para atribuída pelo usuário, haverá um atraso para os componentes do painel de controle mudarem para a nova identidade. Os componentes do painel de controle continuam a usar a identidade antiga até que seu token expire. Depois que o token for atualizado, ele mudará para a nova identidade. Esse processo pode levar várias horas.

Os tipos de identidade atribuída pelo sistema e atribuída pelo usuário diferem de uma identidade de carga de trabalho do Microsoft Entra, que se destina a ser usada por um aplicativo em execução em um pod.

Antes de começar

Antes de executar os exemplos deste artigo, defina sua assinatura como a assinatura ativa atual chamando o comando az account set e passando sua ID da assinatura.

az account set --subscription <subscription-id>

Crie também um grupo de recursos do Azure, se você ainda não tiver um, chamando o comando az group create.

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

Habilitar uma identidade gerenciada atribuída ao sistema

Uma identidade gerenciada atribuída pelo sistema é uma identidade associada a um cluster do AKS ou a outro recurso do Azure. A identidade gerenciada atribuída pelo sistema está vinculada ao ciclo de vida do cluster. Quando o cluster é excluído, a identidade gerenciada atribuída pelo sistema também é excluída.

O cluster do AKS pode usar a identidade gerenciada atribuída pelo sistema para autorizar o acesso a outros recursos em execução no Azure. Você pode atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema para conceder permissões de cluster para acessar recursos específicos. Por exemplo, se o cluster precisar acessar segredos em um cofre de chaves do Azure, você poderá atribuir à identidade gerenciada atribuída pelo sistema uma função RBAC do Azure que concede essas permissões.

Habilitar uma identidade gerenciada atribuída pelo sistema em um novo cluster do AKS

Para habilitar uma identidade gerenciada atribuída pelo sistema em um novo cluster, chame o az aks create. Uma identidade gerenciada atribuída pelo sistema é habilitada no novo cluster por padrão.

Crie um cluster do AKS usando o comando az aks create.

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

Para verificar se uma identidade gerenciada atribuída pelo sistema está habilitada para o cluster depois de criada, consulte Determinar qual tipo de identidade gerenciada um cluster está usando.

Atualizar um cluster do AKS existente para usar uma identidade gerenciada atribuída pelo sistema

Para atualizar um cluster do AKS existente que está usando uma entidade de serviço para usar uma identidade gerenciada atribuída pelo sistema, execute o comando az aks update com o parâmetro --enable-managed-identity.

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

Depois de atualizar o cluster para usar uma identidade gerenciada atribuída pelo sistema em vez de uma entidade de serviço, o painel de controle e os pods usam a identidade gerenciada atribuída pelo sistema para autorização ao acessar outros serviços no Azure. O kubelet continuará usando uma entidade de serviço até que você atualize seu pool de agentes. Você pode usar o comando az aks nodepool upgrade --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --node-image-only em seus nós para atualizar para uma identidade gerenciada. Uma atualização do pool de nós causa tempo de inatividade para seu cluster do AKS, pois os nós nos pools de nós são isolados, drenados e recriados.

Observação

Lembre-se das seguintes informações ao atualizar seu cluster:

  • Uma atualização só funciona se houver uma atualização de VHD para consumir. Se você estiver executando o VHD mais recente, precisará esperar até que o próximo VHD esteja disponível para executar a atualização.

  • A CLI do Azure garante que a permissão do complemento seja definida corretamente após a migração. Se você não estiver usando a CLI do Azure para executar a operação de migração, precisará lidar com a permissão da identidade do complemento por conta própria. Para obter um exemplo usando um modelo do Azure Resource Manager (ARM), confira Atribuir funções do Azure usando modelos de ARM.

  • Se seu cluster estava usando --attach-acr para extrair imagens do Registro de Contêiner do Azure (ACR), é necessário executar o comando az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR resource ID> depois de atualizar seu cluster para permitir que o kubelet recém-criado usado para a identidade gerenciada obtenha a permissão para extrair do ACR. Caso contrário, você não conseguirá efetuar pull do ACR após a atualização.

Adicionar uma atribuição de função a uma identidade gerenciada atribuída pelo sistema

Você pode atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema para conceder permissões de cluster em outro recurso do Azure. O RBAC do Azure dá suporte a definições de função internas e personalizadas que especificam níveis de permissões. Para obter mais informações sobre como atribuir funções RBAC do Azure, consulte Etapas para atribuir uma função do Azure.

Ao atribuir uma função RBAC do Azure a uma identidade gerenciada, você deve definir o escopo da função. Em geral, é uma melhor prática limitar o escopo de uma função aos privilégios mínimos exigidos pela identidade gerenciada. Para obter mais informações sobre o escopo de funções RBAC do Azure, consulte Entenda o escopo do RBAC do Azure.

Quando você cria e usa sua própria VNet, discos do Azure conectados, endereço IP estático, tabela de rotas ou identidade do kubelet atribuída pelo usuário, em que os recursos estão fora do grupo de recursos do nó de trabalho, a CLI do Azure adiciona a atribuição de função automaticamente. Se você estiver usando um modelo do ARM ou outro método, precisará usar a ID da entidade de segurança da identidade gerenciada do para realizar uma atribuição de função.

Se você não estiver usando a CLI do Azure, mas usa sua própria VNet, discos do Azure conectados, endereço IP estático, tabela de rotas ou identidade de kubelet atribuída pelo usuário que esteja fora do grupo de recursos do nó de trabalho, recomendamos usar uma identidade gerenciada atribuída pelo usuário para o painel de controle. Quando o painel de controle usa uma identidade gerenciada atribuída pelo sistema, a identidade é criada ao mesmo tempo que o cluster, de modo que a atribuição de função não pode ser executada até que o cluster tenha sido criado.

Obter a ID da entidade de segurança da identidade gerenciada atribuída pelo sistema

Para atribuir uma função RBAC do Azure a uma identidade gerenciada atribuída pelo sistema de um cluster, primeiro você precisa da ID da entidade de segurança para a identidade gerenciada. Obtenha a ID da entidade de segurança para a identidade gerenciada atribuída pelo sistema do cluster chamando o comando 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)

Atribuir uma função RBAC do Azure à identidade gerenciada atribuída pelo sistema

Para conceder permissões de identidade gerenciada atribuída pelo sistema a um recurso no Azure, chame o comando az role assignment create para atribuir uma função RBAC do Azure à identidade gerenciada.

Para uma VNet, disco do Azure anexado, endereço IP estático ou tabela de rotas fora do grupo de recursos padrão do nó de trabalho, você precisa atribuir a função Network Contributor ao grupo de recursos personalizado.

Por exemplo, atribua a função Network Contributor ao grupo de recursos personalizado usando o comando az role assignment create. Para o parâmetro --scope, forneça a ID do recurso para o grupo de recursos do cluster.

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

Observação

Pode levar até 60 minutos para que as permissões concedidas à identidade gerenciada do cluster sejam propagadas.

Habilitar uma identidade gerenciada atribuída pelo usuário

Uma identidade gerenciada atribuída pelo usuário é um recurso autônomo do Azure. Quando você cria um cluster com uma identidade gerenciada atribuída pelo usuário para o painel de controle, o recurso de identidade gerenciada atribuído pelo usuário deve existir antes da criação do cluster. Esse recurso habilita cenários como a criação do cluster com uma VNet personalizada ou com um tipo de saída de UDR (roteamento definido pelo usuário).

Criar uma identidade gerenciada atribuída ao usuário

Se você ainda não tiver um recurso de identidade gerenciada atribuída pelo usuário, crie um usando o comando az identity create.

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

Sua saída deve ser parecida com o seguinte exemplo de saída:

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

Obter a ID da entidade de segurança da identidade gerenciada atribuída pelo usuário

Para obter a ID da entidade de segurança da identidade gerenciada atribuída pelo usuário, chame az identity show e faça uma consulta da propriedade principalId:

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

Obter a ID do recurso da identidade gerenciada atribuída pelo usuário

Para criar um cluster com uma identidade gerenciada atribuída pelo usuário, você precisará da ID do recurso para a nova identidade gerenciada. Para obter a ID do recurso da identidade gerenciada atribuída pelo usuário, chame az aks show e faça uma consulta da propriedade id:

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

Atribuir uma função RBAC do Azure a uma identidade gerenciada atribuída pelo usuário

Antes de criar o cluster, adicione uma atribuição de função para a identidade gerenciada chamando o comando az role assignment create.

O exemplo a seguir atribui a função de Usuário de Segredos do Key Vault à identidade gerenciada atribuída pelo usuário para conceder a ela permissões para acessar segredos em um cofre de chaves. A atribuição de função tem como escopo o recurso do cofre de chaves:

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

Observação

Pode levar até 60 minutos para que as permissões concedidas à identidade gerenciada do cluster sejam propagadas.

Criar um cluster com a identidade gerenciada atribuída pelo usuário

Para criar um cluster do AKS com a identidade gerenciada atribuída pelo usuário, chame o comando az aks create. Inclua o parâmetro --assign-identity e passe a ID do recurso para a identidade gerenciada atribuída pelo usuário:

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

Observação

As regiões USDOD Central, USDOD East e USGov Iowa na nuvem do Governo dos Estados Unidos do Azure não dão suporte à criação de um cluster com uma identidade gerenciada atribuída pelo usuário.

Atualizar um cluster existente para usar uma identidade gerenciada atribuída pelo usuário

Para atualizar um cluster existente para usar uma identidade gerenciada atribuída pelo usuário, chame o comando az aks update. Inclua o parâmetro --assign-identity e passe a ID do recurso para a identidade gerenciada atribuída pelo usuário:

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

A saída de uma atualização bem-sucedida do cluster para usar uma identidade gerenciada atribuída pelo usuário deve ser semelhante à seguinte saída de exemplo:

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

Observação

A migração de uma identidade gerenciada para o painel de controle, de atribuída pelo sistema para atribuída pelo usuário, não causa nenhum tempo de inatividade para o painel de controle e os pools de agentes. Os componentes do painel de controle continuarão usando a identidade antiga atribuída pelo sistema por várias horas até a próxima atualização do token.

Determinar qual tipo de identidade gerenciada um cluster está usando

Para determinar qual tipo de identidade gerenciada o cluster do AKS existente está usando, chame o comando az aks show e faça uma consulta para a propriedade tipo da identidade.

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

Se o cluster estiver usando uma identidade gerenciada, o valor da propriedade tipo será SystemAssigned ou UserAssigned.

Se o cluster estiver usando uma entidade de serviço, o valor da propriedade tipo será nulo. Considere atualizar o cluster para usar uma identidade gerenciada.

Usar uma identidade gerenciada do kubelet criada previamente

Uma identidade do kubelet pré-criada é uma identidade gerenciada atribuída pelo usuário que existe antes da criação do cluster. Esse recurso permite cenários como a conexão com o ACR (Registro de Contêiner do Azure) durante a criação do cluster.

Observação

O AKS cria uma identidade do kubelet atribuída pelo sistema no grupo de recursos do nó se você não especificar sua própria identidade gerenciada pelo kubelet.

Para uma identidade de kubelet atribuída pelo usuário fora do grupo de recursos padrão do nó de trabalho, você precisa atribuir a função de Operador de Identidade Gerenciada na identidade de kubelet para a identidade gerenciada do painel de controle.

identidade gerenciada do kubelet

Se você não tiver uma identidade gerenciada do kubelet, crie uma usando o comando az identity create.

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

Sua saída deve ser parecida com o seguinte exemplo de saída:

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

Atribuir uma função RBAC à identidade gerenciada do kubelet

Atribua a função ACRPull na identidade do kubelet usando o comando az role assignment create. Forneça a ID da entidade de segurança da identidade kubelet para a variável $KUBELET_CLIENT_ID e forneça a ID do Registro do ACR para a variável $ACR_REGISTRY_ID.

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

Criar um cluster para usar a identidade do kubelet

Agora você pode criar seu cluster do AKS com suas identidades existentes. certifique-se de fornecer a ID do recurso da identidade gerenciada para o painel de controle, incluindo o argumento assign-identity e a identidade gerenciada de kubelet usando o argumento assign-kubelet-identity.

Crie um cluster do AKS com suas identidades existentes usando o comando az aks create.

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

Uma criação bem-sucedida de cluster do AKS usando uma identidade gerenciada de kubelet deve resultar em uma saída semelhante à seguinte:

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

Atualizar um cluster existente para usar a identidade do kubelet

Para atualizar um cluster existente para usar a identidade gerenciada do kubelet, primeiro obtenha a identidade gerenciada do painel de controle atual para o cluster do AKS.

Aviso

A atualização da identidade gerenciada do kubelet atualiza os pools de nós do cluster do AKS, o que causa tempo de inatividade para o cluster, pois os nós nos pools de nós serão isolados/drenados e recriados.

  1. Confirme se o cluster do AKS está usando a identidade gerenciada atribuída pelo usuário usando o comando az aks show.

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

    Se o cluster estiver usando uma identidade gerenciada, a saída mostrará clientId com um valor de msi. Um cluster que usa uma entidade de serviço mostra uma ID de objeto. Por exemplo:

    # The cluster is using a managed identity.
    {
      "clientId": "msi"
    }
    
  2. Depois de confirmar que seu cluster está usando uma identidade gerenciada, localize a ID do recurso da identidade gerenciada usando o comando az aks show.

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

    Para uma identidade gerenciada atribuída pelo usuário, sua saída deve ser semelhante à saída do exemplo a seguir:

    {
      "principalId": null,
      "tenantId": null,
      "type": "UserAssigned",
      "userAssignedIdentities": <identity-resource-id>
          "clientId": "<client-id>",
          "principalId": "<principal-id>"
    },
    
  3. Atualize seu cluster com as identidades existentes usando o comando az aks update. Forneça a ID do recurso da identidade gerenciada atribuída pelo usuário para o painel de controle para o argumento assign-identity. Forneça a ID do recurso da identidade gerenciada do kubelet para o argumento 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>
    

Sua saída para uma atualização bem-sucedida do cluster usando sua própria identidade gerenciada do kubelet deve ser semelhante à seguinte saída de exemplo:

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

Observação

Se seu cluster estava usando --attach-acr para extrair imagens do Registro de Contêiner do Azure, é necessário executar o comando az aks update --resource-group myResourceGroup --name myAKSCluster --attach-acr <ACR Resource ID> depois de atualizar seu cluster para permitir que o kubelet recém-criado usado para a identidade gerenciada obtenha a permissão para extrair do ACR. Caso contrário, não será possível efetuar pull do ACR após a atualização.

Obter as propriedades da identidade do kubelet

Para obter as propriedades da identidade do kubelet, chame az aks show e faça uma consulta da propriedade identityProfile.kubeletidentity.

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

Limitações de identidade do kubelet pré- criadas

Observe as seguintes limitações para a identidade do kubelet pré-criada:

  • Uma identidade do kubelet pré-criada deve ser uma identidade gerenciada atribuída pelo usuário.
  • Não há suporte para as regiões Norte e Leste da China no Microsoft Azure operado pela 21Vianet.

Resumo das identidades gerenciadas usadas pelo AKS

O AKS usa várias identidades gerenciadas para serviços e complementos internos.

Identidade Nome Caso de uso Permissões padrão Traga sua própria identidade
Painel de controle Nome do cluster AKS Usado pelos componentes do plano de controle do AKS para gerenciar os recursos de cluster, incluindo balanceadores de carga de entrada e IPs públicos gerenciados pelo AKS, dimensionador automático de cluster; operações de dimensionamento automático de cluster, drivers da CSI de Disco, Blob e dos Arquivos do Azure. Função de colaborador para o grupo de recursos de nó Com suporte
Kubelet Nome do cluster do AKS – agentpool Autenticação com o Registro de Contêiner do Azure(ACR). N/D (para kubernetes v1.15+) Com suporte
Complemento AzureNPM Nenhuma identidade é necessária. N/D Não
Complemento Monitoramento de rede AzureCNI Nenhuma identidade é necessária. N/D Não
Complemento azure-policy (gatekeeper) Nenhuma identidade é necessária. N/D Não
Complemento azure-policy Nenhuma identidade é necessária. N/D Não
Complemento Calico Nenhuma identidade é necessária. N/D Não
Complemento roteamento de aplicativo Gerencia certificados de DNS do Azure e do Azure Key Vault Função de usuário de Segredos do Key Vault para o Key Vault, função de colaborador de zona DNZ para zonas DNS, função de colaborador de zona DNS privada para zonas DNS privadas Não
Complemento HTTPApplicationRouting Gerencia os recursos de rede necessários. Função de leitor para o grupo de recursos de nó, função de colaborador para a zona DNS Não
Complemento Gateway de aplicativo de entrada Gerencia os recursos de rede necessários. Função de colaborador para o grupo de recursos de nó Não
Complemento omsagent Usado para enviar métricas do AKS para o Azure Monitor. Função de Publicador de Métricas de Monitoramento Não
Complemento Virtual-Node (ACIConnector) Gerencia os recursos de rede necessários para as Instâncias de Contêiner do Azure (ACI). Função de colaborador para o grupo de recursos de nó Não
Complemento Análise de custo Usado para coletar dados de alocação de custos
Identidade da carga de trabalho ID da carga do Microsoft Entra Permite aos aplicativos acessarem os recursos de nuvem com segurança com a ID da carga de trabalho do Microsoft Entra. N/D Não

Importante

A identidade gerenciada por pod do Microsoft Entra de software livre (versão prévia) no Serviço de Kubernetes do Azure foi preterida em 24/10/2022, e o projeto arquivado em setembro de 2023. Para obter mais informações, confira o aviso de preterimento. O complemento Gerenciado do AKS começa a ser preterido em setembro de 2024.

Recomendamos que você leia ID de carga de trabalho do Microsoft Entra. A autenticação da ID de carga de trabalho do Microsoft Entra substitui o recurso de identidade gerenciada por pod preterido (versão prévia). A ID de carga de trabalho do Microsoft Entra é o método recomendado para habilitar um aplicativo em execução em um pod para se autenticar em outros serviços do Azure que dão suporte a ele.

Limitações

  • Não há suporte para mover ou migrar um cluster habilitado para identidade gerenciada para um locatário diferente.

  • Se o cluster tiver a identidade gerenciada por pod do Microsoft Entra (aad-pod-identity) habilitada, os pods da Identidade Gerenciada por Nó (NMI) modificarão os iptables dos nós para interceptar as chamadas no ponto de extremidade dos Metadados da Instância do Azure (IMDS). Essa configuração significa que qualquer solicitação feita ao ponto de extremidade IMDS será interceptada pela NMI, mesmo que o pod não use aad-pod-identity.

    A CRD (definição de recurso personalizado) do AzurePodIdentityException pode ser configurada para especificar que as solicitações para o ponto de extremidade IMDS originadas de rótulos de correspondência de pod definidos no CRD devem ser proxies sem nenhum processamento na NMI. Exclua os pods do sistema com o rótulo kubernetes.azure.com/managedby: aks no namespace kube-system em aad-pod-identity configurando o CRD AzurePodIdentityException. Para obter mais informações, confira Usar identidades gerenciadas por pod do Microsoft Entra no Serviço de Kubernetes do Azure.

    Para configurar uma exceção, instale o YAML mic-exception.

  • O AKS não suporta o uso de uma identidade gerenciada atribuída pelo sistema quando estiver usando uma zona DNS privada personalizada.

Próximas etapas