Partilhar via


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 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 OpenID Connect (OIDC), que permite que o Microsoft Entra ID, ou a plataforma de gerenciamento de identidade e acesso de outro 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 em um 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.

O token precisa ser atualizado periodicamente. Se você usar o SDK, a rotação será automática. Caso contrário, você precisa 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 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 habilitar o emissor OIDC. O exemplo a seguir cria um cluster chamado 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 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 habilitar o emissor OIDC. O exemplo a seguir atualiza um cluster chamado myAKSCluster:

az aks update --resource-group myResourceGroup --name 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 --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

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 --name myAKSCluster --resource-group myResourceGroup

Importante

Depois de girar a chave, a chave antiga (key1) expira após 24 horas. Tanto a chave antiga (key1) como a nova chave (key2) são válidas dentro do período de 24 horas após a rotação. Se você quiser invalidar a chave antiga (key1) imediatamente, você deve girar a chave OIDC duas vezes e reiniciar os pods usando tokens de conta de serviço projetados. Com este processo, key2 e key3 são válidos, e key1 é inválido.

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 --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

A saída deve assemelhar-se ao seguinte:

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 https://{region}.oic.prod-aks.azure.com/{tenant_id}/{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 assemelhar-se ao seguinte:

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

A saída deve assemelhar-se ao 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.