Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
As cargas de trabalho implantadas em um cluster do AKS exigem credenciais de aplicativo ou identidades gerenciadas do Microsoft Entra para acessar recursos protegidos do Microsoft Entra, como o Azure Key Vault e o Microsoft Graph. A ID de Carga de Trabalho do Microsoft Entra integra-se aos recursos nativos do Kubernetes para federar com provedores de identidade externos, permitindo que você atribua identidades de carga de trabalho às suas cargas de trabalho para autenticar e acessar outros serviços e recursos.
A ID de Carga de Trabalho do Microsoft Entra utiliza a Projeção de Volume de Token de Conta de Serviço (ou uma conta de serviço) para permitir que os pods usem uma identidade do Kubernetes. Um token do Kubernetes é emitido e a federação OIDC (OpenID Connect) permite que aplicativos Kubernetes acessem recursos do Azure com segurança com a ID do Microsoft Entra, com base em contas de serviço anotadas.
Você pode usar a ID de Carga de Trabalho do Microsoft Entra com as bibliotecas de cliente da Identidade do Azure ou a coleção Biblioteca de Autenticação da Microsoft (MSAL), juntamente com o registro de aplicativos, para autenticar e acessar de forma integrada os recursos de nuvem do Azure.
Observação
Você pode usar Service Connector para ajudá-lo a configurar algumas etapas automaticamente. Para obter mais informações, consulte o que é o Conector de Serviço?
Pré-requisitos
- O AKS dá suporte à ID de Carga de Trabalho do Microsoft Entra na versão 1.22 e superior.
- A CLI do Azure, versão 2.47.0 ou posterior. Execute
az --versionpara localizar a versão eaz upgradepara atualizar a versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure.
Limitações
- Você pode ter no máximo 20 credenciais de identidade federadas por identidade gerenciada.
- Leva alguns segundos para a credencial de identidade federada se propagar depois de ser inicialmente adicionada.
- Não há suporte para o complemento Nós virtuais, que é baseado no Kubelet Virtual do projeto de software livre.
- Não há suporte para a criação de credenciais de identidade federadas em identidades gerenciadas atribuídas pelo usuário nessas regiões.
bibliotecas de clientes do Azure Identity
Nas bibliotecas de clientes do Azure Identity, escolha uma das seguintes abordagens:
- Use a
DefaultAzureCredential, que tenta usar aWorkloadIdentityCredential. - Crie uma
ChainedTokenCredentialinstância que incluaWorkloadIdentityCredential. - Usar o
WorkloadIdentityCredentialdiretamente.
A tabela a seguir fornece a versão mínima do pacote necessária para a biblioteca de clientes de cada ecossistema de idiomas:
| 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 da biblioteca de clientes do Azure Identity
Os exemplos de código a seguir usam o DefaultAzureCredential. Este tipo de credencial usa as variáveis de ambiente injetadas pelo webhook de mutação da identidade da carga de trabalho para autenticar com o Azure Key Vault. Para ver exemplos usando uma das outras abordagens, consulte as bibliotecas de cliente específicas do ecossistema.
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);
MSAL (Biblioteca de Autenticação da Microsoft)
As seguintes bibliotecas de cliente são a versão mínima necessária:
| Ecossistema | Biblioteca | Imagem | Exemplo | Tem o Windows |
|---|---|---|---|---|
| .NET | Biblioteca de Autenticação da Microsoft-para-dotnet | ghcr.io/azure/azure-workload-identity/msal-net:latest |
Link | Sim |
| Go | Biblioteca de Autenticação da Microsoft para Go | ghcr.io/azure/azure-workload-identity/msal-go:latest |
Link | Sim |
| 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 ele funciona
Nesse modelo de segurança, o cluster do AKS atua como o emissor do token. O Microsoft Entra ID usa o OIDC para descobrir as 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. Sua carga de trabalho pode trocar um token de conta de serviço projetado para seu volume por um token Microsoft Entra usando a biblioteca de cliente do Azure Identity ou o MSAL.
A tabela a seguir descreve os pontos de extremidade do emissor OIDC necessários para a ID de carga de trabalho do Microsoft Entra:
| Ponto de extremidade | Descrição |
|---|---|
{IssuerURL}/.well-known/openid-configuration |
Também conhecido como documento de descoberta de OIDC. Contém os metadados sobre as configurações do emissor. |
{IssuerURL}/openid/v1/jwks |
Isso contém as chaves de assinatura pública que o Microsoft Entra ID usa para verificar a autenticidade do token da conta de serviço. |
O diagrama a seguir resume a sequência de autenticação usando o OIDC:
Rotação automática de certificado webhook
Semelhante a outros complementos de webhook, a operação de rotação automática de certificado de cluster rotaciona o certificado.
Rótulos e anotações da conta de serviço
A ID de carga de trabalho do Microsoft Entra dá suporte aos seguintes mapeamentos relacionados a uma conta de serviço:
- Um a um, onde uma conta de serviço referencia um objeto do Microsoft Entra.
- Muitos para um, em que várias contas de serviço fazem referência ao mesmo objeto do Microsoft Entra.
- Um para muitos, em que uma conta de serviço faz referência a vários objetos do Microsoft Entra alterando a anotação da ID do cliente. Para obter mais informações, confira Como federar várias identidades com uma conta de serviço do Kubernetes.
Observação
Se você atualizar as anotações da conta de serviço, será necessário reiniciar o pod para que as alterações entrem em vigor.
Se você tiver usado identidade gerenciada por 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 central do Kubernetes, em vez de uma CRD (Custom Resource Definition ). As seções a seguir descrevem uma lista de rótulos e anotações disponíveis que você pode usar para configurar o comportamento ao trocar o token de conta de serviço por um token de acesso do Microsoft Entra.
Anotações de conta de serviço
Todas as anotações são opcionais. Se a anotação não for especificada, o valor padrão será usado.
| Anotação | Descrição | Padrão |
|---|---|---|
azure.workload.identity/client-id |
Representa o aplicativo do Microsoft Entra ID do cliente a ser usada com o pod. |
|
azure.workload.identity/tenant-id |
Representa a ID do locatário do Azure em que o O aplicativo do Microsoft Entra está registrado. |
Variável de ambiente AZURE_TENANT_ID extraída do ConfigMap azure-wi-webhook-config. |
azure.workload.identity/service-account-token-expiration |
Representa o campo expirationSeconds para o token de conta de serviço projetada. É um campo opcional que você configura para evitar tempos de inatividade causados por erros durante a atualização do token de conta de serviço. A expiração do token de conta de serviço do Kubernetes não está correlacionada com tokens do Microsoft Entra. Os tokens do Microsoft Entra expiram em 24 horas após serem emitidos. |
3600 O intervalo com suporte é de 3600 a 86400. |
Rótulos do pod
Observação
Para aplicativos que usam a ID de Carga de Trabalho do Microsoft Entra, é necessário adicionar o rótulo azure.workload.identity/use: "true" à especificação de pod do AKS para mover a identidade da carga de trabalho para um cenário de Fail Close para fornecer um comportamento consistente e confiável para pods que precisam usar a identidade da carga de trabalho. Caso contrário, os pods não funcionarão após serem reiniciados.
| Rótulo | Descrição | Valor recomendado | Obrigatório |
|---|---|---|---|
azure.workload.identity/use |
Esse rótulo é necessário na especificação do modelo de pod. Somente os pods com esse rótulo serão modificados pelo webhook de admissão mutáveis para injetar as variáveis de ambiente específicas do Azure e o volume de token de conta de serviço projetado. | verdadeiro | Sim |
Anotações de pod
Todas as anotações são opcionais. Se a anotação não for especificada, o valor padrão será usado.
| Anotação | Descrição | Padrão |
|---|---|---|
azure.workload.identity/service-account-token-expiration |
Confira as anotações da conta de serviço para obter detalhes. Anotações do pod têm precedência sobre anotações da conta de serviço. | 3600 O intervalo com suporte é de 3600 a 86400. |
azure.workload.identity/skip-containers |
Representa uma lista de contêineres separados por ponto e vírgula para ignorar a adição do volume de token de conta de serviço projetado. Por exemplo, container1;container2. |
Por padrão, o volume projetado do token de conta de serviço será 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 contêiner de inicialização de proxy e um sidecar de proxy no pod. O sidecar de proxy é usado para interceptar solicitações de token para IMDS e adquirir um token do Microsoft Entra em nome do usuário com credencial de identidade federada. | falso |
azure.workload.identity/proxy-sidecar-port |
Representa a porta do sidecar de proxy. | 8000 |
Migrar para Identidade de Carga de Trabalho do Microsoft Entra
Você pode configurar clusters que já executam uma identidade gerenciada por pod para usar o ID de carga de trabalho do Microsoft Entra de duas maneiras:
- Use a mesma configuração que você implementou para a identidade gerenciada por pod. Você pode anotar a conta de serviço no namespace com a identidade para habilitar a ID de Carga de Trabalho do Microsoft Entra e injetar as anotações nos pods.
- Reescreva seu aplicativo para usar a versão mais recente da biblioteca de clientes da Identidade do Azure.
Para ajudar a simplificar e facilitar o processo de migração, desenvolvemos um sidecar de migração que converte as transações do IMDS (Serviço de Metadados de Instância) que seu aplicativo faz em OIDC. O sidecar de migração não se destina a ser uma solução a longo prazo, mas sim uma forma de começar a usar rapidamente a ID de Carga de Trabalho do Microsoft Entra. A execução do arquivo secundário de migração no aplicativo faz proxy das transações de IMDS do aplicativo para o OIDC. A abordagem alternativa é atualizar para uma versão com suporte da biblioteca de clientes do Azure Identity, que dá suporte à autenticação de OIDC.
A tabela a seguir resume nossas recomendações de migração ou implantação para o cluster do AKS:
| Cenário | Descrição |
|---|---|
| A implantação de cluster nova ou existente usa uma versão com suporte da biblioteca cliente do Azure Identity | Nenhuma etapa de migração é necessária. Recursos de implantação de exemplo: implantar e configurar a ID de carga de trabalho do Microsoft Entra em um novo cluster |
| A implantação de cluster nova ou existente executa uma versão sem suporte da biblioteca de clientes do Azure Identity | Atualize a imagem de contêiner para usar uma versão do SDK do Azure Identity que seja suportada ou use o sidecar de migração. |
Próximas etapas
- Para saber como configurar o pod para a autenticação usando uma identidade de carga de trabalho como opção de migração, consulte Modernizar a autenticação de aplicativos com a ID de Carga de Trabalho do Microsoft Entra.
- Consulte Implantar e configurar um cluster do AKS com a ID de Carga de Trabalho do Microsoft Entra, que ajuda você a implantar um cluster e configurar um aplicativo de exemplo para usar uma identidade de carga de trabalho.