Criar um provedor do OpenID Connect no Serviço de Kubernetes do Azure (AKS)
O OIDC (OpenID Connect) amplia o uso do protocolo de autorização OAuth 2.0 de modo a incluir outro protocolo de autenticação emitido pelo Microsoft Entra ID. Você pode usar o OIDC para habilitar o SSO (logon único) entre aplicativos habilitados para OAuth no cluster do AKS (Serviço de Kubernetes do Azure) usando um token de segurança chamado token de ID. Com o cluster do AKS, você pode habilitar o emissor do OpenID Connect (OIDC), que permite que o Microsoft Entra ID ou a plataforma de gerenciamento de acesso e identidade de outro provedor de nuvem descubram as chaves de assinatura pública do servidor de API.
O AKS gira a chave automaticamente e periodicamente. Se não quiser esperar, você poderá girar a chave manualmente e imediatamente. O tempo de vida máximo do token emitido pelo provedor de OIDC é de um dia.
Aviso
Habilitar o emissor do OIDC em um cluster existente altera o emissor do 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 que usam um token de serviço permanecerem em um estado de falha depois de habilitar o emissor do OIDC, recomendamos reiniciar manualmente os pods.
Neste artigo, você aprenderá a criar, atualizar e gerenciar o emissor do OIDC para o cluster.
Importante
Depois de habilitar o emissor do OIDC no cluster, não há suporte para desabilitá-lo.
O token precisa ser atualizado periodicamente. Se você usar o SDK, a rotação será automática. Caso contrário, você precisará 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 localizar a sua versão. Se você precisa instalar ou atualizar, consulte Instalar a CLI do Azure. - O AKS dá suporte ao emissor OIDC na versão 1.22 e superior.
Criar um cluster do AKS com o emissor do OIDC
Você pode criar um cluster do AKS usando o comando az aks create com o parâmetro --enable-oidc-issuer
para habilitar o emissor do OIDC. O exemplo a seguir cria um cluster nomeado 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 do AKS com o emissor do OIDC
Você pode atualizar um cluster do AKS usando o comando az aks update com o parâmetro --enable-oidc-issuer
para habilitar o emissor do OIDC. O seguinte exemplo atualiza um cluster chamado myAKSCluster:
az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer
Mostrar a URL do emissor do OIDC
Para obter a URL do emissor do OIDC, execute o comando az aks show. Substitua os valores padrão pelo nome do cluster e pelo 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 base https://{region}.oic.prod-aks.azure.com
, em que o valor para {region}
corresponde ao local em que o cluster do AKS está implantado.
Girar a chave do OIDC
Para girar a chave do OIDC, execute o comando az aks oidc-issuer. Substitua os valores padrão pelo nome do cluster e pelo 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. A chave antiga (chave1) e a nova chave (chave2) são válidas no período de 24 horas após a rotação. Se você quiser invalidar a chave antiga (key1) imediatamente, deverá girar a chave OIDC duas vezes e reiniciar os pods usando tokens de conta de serviço projetados. Com esse processo, key2 e key3 são válidos e key1 é inválido.
Verificar as chaves OIDC
Obter a URL do emissor do OIDC
Para obter a URL do emissor do OIDC, execute o comando az aks show. Substitua os valores padrão pelo nome do cluster e pelo nome do grupo de recursos.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
O resultado deve ser assim:
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 base https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}
, em que o valor para {region}
corresponde ao local em que o cluster do AKS está implantado. O valor {uuid}
representa a chave OIDC, que é um guid gerado aleatoriamente para cada cluster que está imutável.
Obter o documento de descoberta
Para obter o documento de descoberta, copie a URL https://(OIDC issuer URL).well-known/openid-configuration
e abra-a no navegador.
O resultado deve ser assim:
{
"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
do documento de descoberta e cole-o na barra de endereços do navegador.
O resultado deve ser assim:
{
"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 de chaves, há outra chave presente no documento de descoberta.
Próximas etapas
- Confira 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 no seu cluster e um provedor de identidade externo.
- Examine ID da Carga de Trabalho do Microsoft Entra (versão prévia) Esse método de autenticação se integra aos recursos nativos do Kubernetes para federar com qualquer provedor de identidade externo em nome do aplicativo.
- Confira Proteger o tráfego de rede do pod para entender como usar o mecanismo de Política de Rede e criar políticas de rede do Kubernetes para controlar o fluxo de tráfego entre pods no AKS.
Azure Kubernetes Service