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 os aplicativos habilitados para OAuth no seu cluster do Serviço de Kubernetes do Azure (AKS) usando um token de segurança conhecido como token de ID. Com seu cluster do AKS, você pode habilitar o Emissor do OpenID Connect (OIDC), o que permite que o Microsoft Entra ID ou outra plataforma de gerenciamento de acesso e identidade de provedores 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 OIDC no cluster existente altera o emissor do token da conta de serviço atual para um novo valor, o que pode causar tempo de inatividade e reiniciar o servidor da API. Se os pods do seu aplicativo usando um token de serviço permanecerem em um estado de falha após a ativação do Emissor OIDC, recomendamos reiniciar manualmente os pods.
Neste artigo, você aprenderá como criar, atualizar e gerenciar o Emissor de OIDC para o seu cluster.
Importante
Depois de habilitar o emissor OIDC no cluster, não há suporte para desabilitá-lo.
Importante
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 a cada 24 horas manualmente.
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 de OIDC nas versões 1.22 e superiores.
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 usar o Emissor de 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
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 usar o Emissor de 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 o URL do Emissor de 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 de base https://{region}.oic.prod-aks.azure.com
, em que o valor de {region}
corresponde ao local em que o cluster do AKS é 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. Isso significa que tanto a chave antiga (key1) quanto a nova chave (key2) são válidas por um período de 24 horas. Se você quiser invalidar a chave antiga (key1) imediatamente, é necessário girar a chave de OIDC duas vezes e reinicie os pods usando os tokens de conta de serviço projetados. Em seguida, key2 e key3 são válidos e key1 é inválido.
Verificar as chaves OIDC
Obter a URL do Emissor do OIDC
Para obter o URL do Emissor de 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/00000000-0000-0000-0000-000000000000/
Por padrão, o Emissor é definido para usar a URL de base https://{region}.oic.prod-aks.azure.com/{uuid}
, em que o valor de {region}
corresponde ao local em que o cluster do AKS é 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/00000000-0000-0000-0000-000000000000/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.