Share via


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