Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
As cargas de trabalho implementadas num cluster AKS requerem credenciais de aplicação Microsoft Entra ou identidades geridas para aceder a recursos protegidos Microsoft Entra, como Azure Key Vault e Microsoft Graph. O ID de carga de trabalho Microsoft Entra integra-se com as capacidades nativas do Kubernetes para federar com fornecedores externos de identidade, permitindo-lhe atribuir identidades de carga de trabalho às suas cargas para autenticar e aceder a outros serviços e recursos.
Nota
O Workload ID abrange o cenário de identidade pod-to-Azure no AKS — ou seja, a forma como as aplicações em execução em pods se autenticam junto de serviços protegidos pelo Microsoft Entra. No AKS Automatic, a identidade da carga de trabalho com o ID de carga de trabalho Microsoft Entra e o emissor OIDC do cluster estão pré-configurados por predefinição — não é necessária qualquer configuração ao nível do cluster. No AKS Standard, ativas e configuras a identidade da carga de trabalho separadamente. Para os outros cenários de identidade (autenticação e autorização do plano de controlo e identidades geridas de cluster para o Azure), veja Acesso e opções de identidade para AKS.
Tip
Se estiver a usar um cluster AKS Automatic, a identidade da carga de trabalho com o ID de carga de trabalho Microsoft Entra e o emissor OIDC do cluster estão pré-configurados por predefinição. Pode saltar a configuração ao nível do cluster e ir diretamente para configurar a sua aplicação para usar uma identidade de carga de trabalho. Para mais informações sobre os padrões de segurança do AKS Automatic, veja O que é o Azure Kubernetes Service Automatic?
O ID de carga de trabalho Microsoft Entra utiliza a Projeção de Volume do Token da Conta de Serviço para permitir que os pods usem uma identidade Kubernetes. É emitido um token Kubernetes e a federação OpenID Connect (OIDC) permite que aplicações Kubernetes acedam aos recursos Azure de forma segura com o Microsoft Entra ID, com base em contas de serviço anotadas.
Pode usar o ID de Carga de Trabalho do Microsoft Entra com as bibliotecas cliente Azure Identity ou a coleção Biblioteca de Autenticação da Microsoft (MSAL), juntamente com o registo de aplicações, para autenticar e aceder de forma fluida aos recursos cloud do Azure.
Nota
Você pode usar o Service Connector para ajudá-lo a configurar algumas etapas automaticamente. Para mais informações, consulte O que é o Conector de Serviço?
Pré-requisitos
Clusters automáticos AKS
Nos clusters automáticos no AKS, a identidade de carga de trabalho e o emissor OIDC do cluster estão pré-configurados como parte das predefinições de segurança do cluster. Não é necessária qualquer configuração ao nível do cluster antes de usar a identidade da carga de trabalho nos seus pods. Prossiga diretamente para configurar a sua aplicação.
Clusters AKS Standard
- O AKS suporta o ID de carga de trabalho Microsoft Entra na versão 1.22 e superior.
- A versão 2.47.0 ou posterior da CLI do Azure. Execute
az --versionpara localizar a versão e executeaz upgradepara atualizar a versão. Se precisar de instalar ou atualizar, veja Install CLI do Azure (Instalar o CLI do Azure). - Tens de ativar a identidade da carga de trabalho e o emissor OIDC no teu cluster antes de os teus pods poderem usar a identidade da carga de trabalho. Veja Implementar e configurar identidade de carga de trabalho num cluster AKS.
Limitações
- Você pode ter um máximo de 20 credenciais de identidade federada por identidade gerenciada.
- Demora alguns segundos até que a credencial de identidade federada se propague após ser inicialmente adicionada.
- O add-on de nós virtuais , baseado no projeto open source Virtual Kubelet, não é suportado.
- A criação de credenciais de identidade federada não é suportada em identidades geridas atribuídas pelo utilizador nestas regiões.
Bibliotecas de cliente do Azure Identity
Nas bibliotecas de cliente do Azure Identity, escolha uma das seguintes abordagens:
- Use
DefaultAzureCredential, que tenta usar oWorkloadIdentityCredential. - Crie uma
ChainedTokenCredentialinstância que incluaWorkloadIdentityCredential. - Utilize
WorkloadIdentityCredentialdiretamente.
Ao solicitar tokens com WorkloadIdentityCredential, especifique os âmbitos no formato <resource>/.default do Microsoft Entra ID v2, como https://management.azure.com/.default. Um URI de recurso bruto, como https://management.azure.com/, pode falhar porque a identidade da carga de trabalho utiliza o endpoint do token Microsoft Entra v2 em vez do fluxo IMDS resource usado pela identidade gerida. Para mais informações sobre como funcionam os telescopios no endpoint do token v2, veja Obter um token.
A tabela seguinte fornece a versão mínima do pacote exigida para a biblioteca cliente de cada ecossistema de linguagem:
| Ecossistema | Biblioteca | Versão Mínima |
|---|---|---|
| .NET | Azure.Identity | 1.9.0 |
| C++ | azure-identity-cpp | 1.6.0 |
| Go | azidentity | 1.3.0 |
| Java | azure-identity | 1.9.0 |
| Node.js | @azure/identity | 3.2.0 |
| Python | azure-identity | 1.13.0 |
Exemplos de código de biblioteca cliente Azure Identity
Os exemplos de código seguintes utilizam o DefaultAzureCredential. Este tipo de credencial utiliza as variáveis de ambiente injetadas pelo webhook que muta a identidade da carga de trabalho para autenticar com o Azure Key Vault. Para ver amostras usando uma das outras abordagens, consulte as bibliotecas de cliente do ecossistema específico.
Substitua <key-vault-url> e <secret-name> pelos valores apropriados para o seu Key Vault e Secret.
using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
string keyVaultUrl = Environment.GetEnvironmentVariable("<key-vault-url>");
string secretName = Environment.GetEnvironmentVariable("<secret-name>");
var client = new SecretClient(
new Uri(keyVaultUrl),
new DefaultAzureCredential());
KeyVaultSecret secret = await client.GetSecretAsync(secretName);
Biblioteca de Autenticação da Microsoft (MSAL)
As seguintes bibliotecas clientes são a versão mínima exigida:
| Ecossistema | Biblioteca | Imagem | Exemplo | Tem Windows |
|---|---|---|---|---|
| .NET | Biblioteca de autenticação da Microsoft para dotnet | ghcr.io/azure/azure-workload-identity/msal-net:latest |
Link | Yes |
| Go | Biblioteca de Autenticação da Microsoft para Go | ghcr.io/azure/azure-workload-identity/msal-go:latest |
Link | Yes |
| Java | Biblioteca de autenticação da Microsoft para java | ghcr.io/azure/azure-workload-identity/msal-java:latest |
Link | Não |
| JavaScript | Biblioteca de autenticação da Microsoft para js | ghcr.io/azure/azure-workload-identity/msal-node:latest |
Link | Não |
| Python | Biblioteca de autenticação da Microsoft para python | ghcr.io/azure/azure-workload-identity/msal-python:latest |
Link | Não |
Como funciona
Neste modelo de segurança, o cluster AKS atua como o emissor do token. O Microsoft Entra ID usa o OIDC para descobrir chaves de assinatura públicas e verificar a autenticidade do token da conta de serviço antes de trocá-lo por um token do Microsoft Entra. A sua carga de trabalho pode trocar um token de conta de serviço projetado para o seu volume por um token Microsoft Entra usando a biblioteca cliente Azure Identity ou o MSAL.
A tabela a seguir descreve os pontos de extremidade do emissor OIDC necessários para o ID de carga de trabalho do Microsoft Entra:
| Ponto final | Descrição |
|---|---|
{IssuerURL}/.well-known/openid-configuration |
Também conhecido como documento de descoberta OIDC. Ele contém os metadados sobre as configurações do emissor. |
{IssuerURL}/openid/v1/jwks |
Isso contém a(s) chave(s) de assinatura pública que o Microsoft Entra ID usa para verificar a autenticidade do token de conta de serviço. |
O diagrama seguinte resume a sequência de autenticação usando OIDC:
Rotação automática do certificado de Webhook
Semelhante a outros complementos de webhook, a operação de rotação automática do certificado de cluster roda o certificado de identidade da carga de trabalho do webhook.
Etiquetas e anotações da conta de serviço
O ID de carga de trabalho Microsoft Entra suporta os seguintes mapeamentos relacionados a uma conta de serviço:
- Um-para-um, onde uma conta de serviço faz referência a um objeto Microsoft Entra.
- Muitos-para-um, onde múltiplas contas de serviço referenciam o mesmo objeto Microsoft Entra.
- Um-para-muitos, onde uma conta de serviço faz referência a múltiplos objetos Microsoft Entra ao alterar a anotação do ID do cliente. Para obter mais informações, consulte Como federar várias identidades com uma conta de serviço do Kubernetes.
Nota
Se atualizar as anotações da conta de serviço, deve reiniciar o pod para que as alterações entrem em vigor.
Se você usou a identidade gerenciada pelo pod do Microsoft Entra, pense em uma conta de serviço como uma entidade de segurança do Azure, exceto que uma conta de serviço faz parte da API principal do Kubernetes, em vez de uma CRD (Definição de Recursos Personalizados). As secções seguintes descrevem uma lista de etiquetas e anotações disponíveis que pode usar para configurar o comportamento ao trocar o token da conta de serviço por um token de acesso Microsoft Entra.
Anotações de conta de serviço
Todas as anotações são opcionais. Se a anotação não for especificada, é usado o valor padrão.
| Anotação | Descrição | Predefinido |
|---|---|---|
azure.workload.identity/client-id |
Representa o aplicativo Microsoft Entra ID do cliente a utilizar com o pod. |
|
azure.workload.identity/tenant-id |
Representa o ID do inquilino do Azure onde o O aplicativo Microsoft Entra está registrado. |
AZURE_TENANT_ID variável de ambiente extraída do azure-wi-webhook-config ConfigMap. |
azure.workload.identity/service-account-token-expiration |
Representa o expirationSeconds campo para o token de conta de serviço projetado. É um campo opcional que você configura para evitar qualquer tempo de inatividade causado por erros durante a atualização do token da conta de serviço. A expiração do token da conta de serviço do Kubernetes não está correlacionada com os tokens do Microsoft Entra. Os tokens Microsoft Entra expiram em 24 horas após serem emitidos. |
3600 O intervalo suportado é 3600-86400. |
Etiquetas de pod
Nota
Para aplicações que utilizam o ID de Carga de Trabalho Microsoft Entra, é necessário adicionar o rótulo azure.workload.identity/use: "true" à especificação do pod para que o AKS possa mover a identidade da carga de trabalho para um cenário de Fail Close , de modo a proporcionar um comportamento consistente e fiável para pods que precisam de usar identidade de carga de trabalho. Caso contrário, os pods falham depois de serem reiniciados.
| Label | Descrição | Valor recomendado | Necessário |
|---|---|---|---|
azure.workload.identity/use |
Este rótulo é necessário na especificação do modelo pod. Somente pods com esse rótulo são mutados pelo webhook azure-workload-identity mutating admission para injetar as variáveis de ambiente específicas do Azure e o volume de token de conta de serviço projetado. | verdadeiro | Yes |
Anotações do pod
Todas as anotações são opcionais. Se a anotação não for especificada, é usado o valor padrão.
| Anotação | Descrição | Predefinido |
|---|---|---|
azure.workload.identity/service-account-token-expiration |
Consulte as anotações das contas de serviço para mais detalhes. As anotações do pod têm prioridade sobre as anotações da conta de serviço. | 3600 O intervalo suportado é 3600-86400. |
azure.workload.identity/skip-containers |
Representa uma lista separada por ponto-e-vírgula de contêineres para ignorar a adição do volume de token de conta de serviço projetado. Por exemplo, container1;container2. |
Por padrão, o volume de token de conta de serviço projetado é adicionado a todos os contêineres se o pod estiver rotulado com azure.workload.identity/use: true. |
azure.workload.identity/inject-proxy-sidecar |
Injeta um contentor de inicialização de proxy e um sidecar de proxy no pod. O sidecar proxy é usado para intercetar solicitações de token ao IMDS e adquirir um token Microsoft Entra em nome do utilizador com uma credencial de identidade federada. | falso |
azure.workload.identity/proxy-sidecar-port |
Representa a porta do sidecar proxy. | 8000 |
Utilizar associações de identidade e federação direta na mesma carga de trabalho
As ligações de identidade são uma funcionalidade de pré-visualização que estende a identidade da carga de trabalho para suportar ambientes AKS em grande escala. Em vez de criar uma credencial de identidade federada (FIC) para cada cluster, as ligações de identidade permitem que múltiplos clusters partilhem uma única identidade gerida atribuída pelo utilizador através de um único FIC. Quando ativado, o AKS encaminha os pedidos de tokens dos pods através de um webhook de proxy de associação de identidade que gere a troca de tokens em nome da carga de trabalho.
Um token de conta de serviço projetado tem um único público. Quando as ligações de identidade estão ativadas, o webhook de ligação de identidade define o token predefinido referenciado por AZURE_FEDERATED_TOKEN_FILE para o público api://AKSIdentityBinding, utilizado pelo proxy de ligação de identidade.
A federação direta do ID de carga de trabalho Microsoft Entra (sem associações de identidade) requer um token com o destinatário api://AzureADTokenExchange. A reutilização do ficheiro do token de associação de identidade para federação direta falha com AADSTS700212, porque o público da credencial de identidade federada não corresponde ao público do token.
Para usar associações de identidade para uma identidade gerida e federação direta para outra na mesma carga de trabalho, crie um segundo token de conta de serviço com o público api://AzureADTokenExchange e aponte o código de federação direta para esse ficheiro:
apiVersion: v1
kind: Pod
metadata:
name: workload-with-ib-and-direct-fic
labels:
azure.workload.identity/use: "true"
spec:
serviceAccountName: workload-sa
containers:
- name: app
image: <image>
volumeMounts:
- name: direct-fic-token
mountPath: /var/run/secrets/direct-fic
readOnly: true
env:
- name: DIRECT_FIC_TOKEN_FILE
value: /var/run/secrets/direct-fic/token
volumes:
- name: direct-fic-token
projected:
sources:
- serviceAccountToken:
path: token
audience: api://AzureADTokenExchange
expirationSeconds: 3600
Utilize AZURE_FEDERATED_TOKEN_FILE para o fluxo de associação de identidade e o ficheiro de token personalizado, como DIRECT_FIC_TOKEN_FILE, para o fluxo direto de credenciais de identidade federada.
Migrar para o ID de Workload do Microsoft Entra
Pode configurar clusters que já executam uma identidade gerida por pods para usar o ID de carga de trabalho do Microsoft Entra de duas maneiras:
- Usa a mesma configuração que implementaste para identidade gerida por pod. Você pode anotar a conta de serviço dentro do namespace com a identidade para habilitar o ID de carga de trabalho do Microsoft Entra e injetar as anotações nos pods.
- Reescreva a sua aplicação para usar a versão mais recente da biblioteca cliente Azure Identity.
Para ajudar a simplificar e facilitar o processo de migração, desenvolvemos um sidecar de migração que converte as transações do Serviço de Metadados de Instância (IMDS) que a sua aplicação faz para OIDC. O sidecar de migração não pretende ser uma solução a longo prazo, mas sim uma forma de começar a funcionar rapidamente no ID de carga de trabalho Microsoft Entra. A execução do sidecar de migração na sua aplicação proxifica as transações IMDS da aplicação para o OIDC. A abordagem alternativa é atualizar para uma versão com suporte da biblioteca de cliente do Azure Identity , que dá suporte à autenticação OIDC.
A tabela seguinte resume as nossas recomendações de migração ou implementação para o seu cluster AKS:
| Cenário | Descrição |
|---|---|
| Novo painel automático AKS | A identidade da carga de trabalho e o emissor OIDC estão pré-configurados. Não são necessárias migrações ao nível do cluster ou etapas de configuração. Configure a conta de serviço da sua aplicação e a credencial federada, depois use a biblioteca cliente Azure Identity. |
| Um cluster AKS Standard novo ou existente com uma versão suportada da biblioteca de cliente do Azure Identity | Nenhuma etapa de migração é necessária. Exemplos de recursos de implementação: Implementar e configurar o ID de Workload do Microsoft Entra num novo cluster |
| A implantação de cluster nova ou existente executa uma versão sem suporte da biblioteca de cliente do Azure Identity | Atualize a imagem do contentor para usar uma versão suportada da biblioteca cliente Azure Identity, ou use o sidecar de migração. |
Conteúdo relacionado
- Para saber como configurar o seu pod para autenticação usando uma identidade de carga de trabalho como opção de migração, consulte Modernizar autenticação de aplicações com ID de Carga de Trabalho Microsoft Entra.
- Consulte Implementar e configurar um cluster do AKS com Microsoft Entra ID de Carga de Trabalho, que ajuda a implementar um cluster e configurar uma aplicação de exemplo para usar uma identidade de carga de trabalho.
- Para saber mais sobre as definições de segurança pré-configuradas do AKS Automatic, incluindo a identidade da carga de trabalho, consulte O que é o Azure Kubernetes Service Automatic?