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 seus 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 do OpenID Connect (OIDC), que permite que o Microsoft Entra ID ou outra plataforma de gerenciamento de identidade e acesso do 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 no 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.

Importante

O token precisa ser atualizado periodicamente. Se você usar SDK, a rotação é automática, caso contrário, você precisa 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 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 usar o Emissor OIDC. O exemplo a seguir cria um cluster chamado myAKSCluster com um nó no myResourceGroup:

az aks create -g myResourceGroup -n myAKSCluster --node-count 1 --enable-oidc-issuer

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 usar o Emissor OIDC. O exemplo a seguir atualiza um cluster chamado myAKSCluster:

az aks update -g myResourceGroup -n 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 -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

Por padrão, o Emissor é definido para usar a URL https://{region}.oic.prod-aks.azure.combase, 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 -n myAKSCluster -g myResourceGroup

Importante

Depois de girar a chave, a chave antiga (key1) expira após 24 horas. Isto significa que tanto a chave antiga (key1) como a nova chave (key2) são válidas dentro do período de 24 horas. Se você quiser invalidar a chave antiga (key1) imediatamente, você precisa girar a chave OIDC duas vezes e reiniciar os pods usando tokens de conta de serviço projetados. Então key2 e key3 são válidas, e key1 é inválida.

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 -n myAKScluster -g myResourceGroup --query "oidcIssuerProfile.issuerUrl" -otsv

A saída deve ser semelhante à seguinte:

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 https://{region}.oic.prod-aks.azure.com/{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 ser semelhante à seguinte:

{
  "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 documento do documento de descoberta e passe-o na barra de endereço do navegador.

A saída deve ser semelhante à 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.