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/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