Criar um provedor OpenID Connect no Serviço Kubernetes do Azure (AKS)
O OpenID Connect (OIDC) estende o protocolo de autorização OAuth 2.0 para uso como outro protocolo de autenticação emitido pelo Microsoft Entra ID. Você pode usar o OIDC para habilitar o logon único (SSO) entre aplicativos habilitados para OAuth em seu cluster do Serviço Kubernetes do Azure (AKS) usando um token de segurança chamado token de ID. Com seu cluster AKS, você pode habilitar o emissor OpenID Connect (OIDC), que permite que o Microsoft Entra ID, ou a plataforma de gerenciamento de identidade e acesso de outro provedor de nuvem, descubra as chaves de assinatura públicas do servidor de API.
O AKS gira a chave automática e periodicamente. Se não quiser esperar, pode rodar a chave manualmente e imediatamente. O tempo de vida máximo do token emitido pelo provedor OIDC é de um dia.
Aviso
Habilitar o emissor OIDC em um cluster existente altera o emissor de token da conta de serviço atual para um novo valor, o que pode causar tempo de inatividade à medida que reinicia o servidor de API. Se os pods de aplicativo usando um token de serviço permanecerem em um estado de falha depois de habilitar o emissor OIDC, recomendamos que você reinicie manualmente os pods.
Neste artigo, você aprenderá a criar, atualizar e gerenciar o emissor OIDC para seu cluster.
Importante
Depois de habilitar o emissor OIDC no cluster, não há suporte para desativá-lo.
O token precisa ser atualizado periodicamente. Se você usar o SDK, a rotação será automática. Caso contrário, você precisa atualizar o token manualmente a cada 24 horas.
Pré-requisitos
- A CLI do Azure versão 2.42.0 ou superior. Execute
az --version
para encontrar a sua versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI). - O AKS suporta o emissor OIDC na versão 1.22 e superior.
Criar um cluster AKS com o emissor OIDC
Você pode criar um cluster AKS usando o comando az aks create com o --enable-oidc-issuer
parâmetro para habilitar o emissor OIDC. O exemplo a seguir cria um cluster chamado myAKSCluster com um nó no myResourceGroup:
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 1 \
--enable-oidc-issuer \
--generate-ssh-keys
Atualizar um cluster AKS com o emissor OIDC
Você pode atualizar um cluster AKS usando o comando az aks update com o --enable-oidc-issuer
parâmetro para habilitar o emissor OIDC. O exemplo a seguir atualiza um cluster chamado myAKSCluster:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer
Mostrar o URL do emissor OIDC
Para obter a URL do emissor OIDC, execute o comando az aks show . Substitua os valores padrão para o nome do cluster e o nome do grupo de recursos.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
Por padrão, o emissor é definido para usar a URL https://{region}.oic.prod-aks.azure.com
base, onde o valor para {region}
corresponde ao local em que o cluster AKS está implantado.
Rodar a chave OIDC
Para girar a chave OIDC, execute o comando az aks oidc-issuer . Substitua os valores padrão para o nome do cluster e o nome do grupo de recursos.
az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup
Importante
Depois de girar a chave, a chave antiga (key1) expira após 24 horas. Tanto a chave antiga (key1) como a nova chave (key2) são válidas dentro do período de 24 horas após a rotação. Se você quiser invalidar a chave antiga (key1) imediatamente, você deve girar a chave OIDC duas vezes e reiniciar os pods usando tokens de conta de serviço projetados. Com este processo, key2 e key3 são válidos, e key1 é inválido.
Verifique as chaves OIDC
Obter o URL do emissor OIDC
Para obter a URL do emissor OIDC, execute o comando az aks show . Substitua os valores padrão para o nome do cluster e o nome do grupo de recursos.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
A saída deve assemelhar-se ao seguinte:
https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/
Por padrão, o emissor é definido para usar a URL https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}
base, onde o valor para {region}
corresponde ao local em que o cluster AKS está implantado. O valor {uuid}
representa a chave OIDC, que é um guid gerado aleatoriamente para cada cluster que é imutável.
Obter o documento de descoberta
Para obter o documento de descoberta, copie o URL https://(OIDC issuer URL).well-known/openid-configuration
e abra-o no navegador.
A saída deve assemelhar-se ao seguinte:
{
"issuer": "https://eastus.oic.prod-aks.azure.com/ffffffff-eeee-dddd-cccc-bbbbbbbbbbb0/00000000-0000-0000-0000-000000000000/",
"jwks_uri": "https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/00000000-0000-0000-0000-000000000000/openid/v1/jwks",
"response_types_supported": [
"id_token"
],
"subject_types_supported": [
"public"
],
"id_token_signing_alg_values_supported": [
"RS256"
]
}
Obter o documento JWK set
Para obter o documento JWK set, copie o jwks_uri
documento do documento de descoberta e passe-o na barra de endereço do navegador.
A saída deve assemelhar-se ao seguinte:
{
"keys": [
{
"use": "sig",
"kty": "RSA",
"kid": "xxx",
"alg": "RS256",
"n": "xxxx",
"e": "AQAB"
},
{
"use": "sig",
"kty": "RSA",
"kid": "xxx",
"alg": "RS256",
"n": "xxxx",
"e": "AQAB"
}
]
}
Durante a rotação da chave, há uma outra chave presente no documento de descoberta.
Próximos passos
- Consulte Configurar a criação de uma relação de confiança entre um aplicativo e um provedor de identidade externo para entender como uma credencial de identidade federada cria uma relação de confiança entre um aplicativo em seu cluster e um provedor de identidade externo.
- Consulte o ID da carga de trabalho do Microsoft Entra (visualização). Esse método de autenticação integra-se aos recursos nativos do Kubernetes para federar com qualquer provedor de identidade externo em nome do aplicativo.
- Consulte Proteger o tráfego de rede de pods para entender como usar o mecanismo de Diretiva de Rede e criar políticas de rede do Kubernetes para controlar o fluxo de tráfego entre pods no AKS.
Azure Kubernetes Service