Partager via


Créer un fournisseur OpenID Connect sur Azure Kubernetes Service (AKS)

OpenID Connect (OIDC) étend le protocole d’autorisation OAuth 2.0 pour l’utiliser comme protocole d’authentification alternatif émis par Microsoft Entra ID. Vous pouvez utiliser OIDC pour activer l’authentification unique (SSO) entre des applications avec OAuth sur votre cluster Azure Kubernetes Service (AKS) en utilisant un jeton de sécurité, appelé jeton d’ID. Avec votre cluster AKS, vous pouvez activer l’émetteur OpenID Connect (OIDC), ce qui permet à Microsoft Entra ID ou à une autre plateforme de gestion des identités et des accès du fournisseur de cloud de découvrir les clés de signature publiques du serveur d’API.

AKS fait pivoter la clé automatiquement et régulièrement. Si vous ne souhaitez pas attendre, vous pouvez faire pivoter la clé manuellement et immédiatement. La durée de vie maximale du jeton émis par le fournisseur OIDC est d’un jour.

Avertissement

L’activation de l’émetteur OIDC sur le cluster existant change l’émetteur de jetons de compte de service actuel en une nouvelle valeur, ce qui peut entraîner un temps d’arrêt lors du redémarrage du serveur d’API. Si vos pods d’applications utilisant un jeton de service restent dans un état d’échec après que vous avez activé l’émetteur OIDC, nous vous recommandons de redémarrer manuellement les pods.

Dans cet article, vous découvrez comment créer, mettre à jour et gérer l’émetteur OIDC pour votre cluster.

Important

Une fois l’émetteur OIDC activé sur le cluster, sa désactivation n’est pas prise en charge.

Le jeton doit être actualisé régulièrement. Si vous utilisez le Kit de développement logiciel (SDK), la rotation est automatique. Sinon, vous devez actualiser le jeton manuellement toutes les 24 heures.

Prérequis

  • Azure CLI version 2.42.0 ou version ultérieure. Exécutez az --version pour rechercher votre version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • AKS prend en charge l’émetteur OIDC sur les versions 1.22 et ultérieures.

Créer un cluster AKS avec l’émetteur OIDC

Vous pouvez créer un cluster AKS en utilisant la commande az aks create avec le paramètre --enable-oidc-issuer pour activer l’émetteur OIDC. L’exemple suivant crée un cluster à un nœud nommé myAKSCluster avec un nœud dans myResourceGroup :

az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --node-count 1 \
    --enable-oidc-issuer \
    --generate-ssh-keys

Mettre à jour un cluster AKS avec l’émetteur OIDC

Vous pouvez mettre à jour un cluster AKS en utilisant la commande az aks update avec le paramètre --enable-oidc-issuer pour activer l’émetteur OIDC. L’exemple suivant démarre un cluster nommé myAKSCluster :

az aks update --resource-group myResourceGroup --name myAKSCluster --enable-oidc-issuer 

Afficher l’URL de l’émetteur OIDC

Pour obtenir l’URL de l’émetteur OIDC, exécutez la commande az aks show. Remplacez les valeurs par défaut pour le nom du cluster et le nom du groupe de ressources.

az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

Par défaut, l’émetteur est défini pour utiliser l’URL de base https://{region}.oic.prod-aks.azure.com, où la valeur de {region} correspond à l’emplacement de déploiement du cluster AKS.

Faire tourner la clé OIDC

Pour faire pivoter la clé OIDC, exécutez la commande az aks oidc-issuer. Remplacez les valeurs par défaut pour le nom du cluster et le nom du groupe de ressources.

az aks oidc-issuer rotate-signing-keys --name myAKSCluster --resource-group myResourceGroup

Important

Une fois que vous faites tourner la clé, l’ancienne clé (key1) expire au bout de 24 heures. L’ancienne clé (key1) et la nouvelle clé (key2) sont valides pendant une période de 24 heures après la rotation. Si vous voulez invalider immédiatement l’ancienne clé (key1), vous devez permuter la clé OIDC deux fois et redémarrer les pods en utilisant des jetons de compte de service projetés. Avec ce processus, les clés key2 et key3 sont valides, et la clé key1 est non valide.

Vérifier les clés OIDC

Obtenir l’URL de l’émetteur OIDC

Pour obtenir l’URL de l’émetteur OIDC, exécutez la commande az aks show. Remplacez les valeurs par défaut pour le nom du cluster et le nom du groupe de ressources.

az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

La sortie doit ressembler à ce qui suit :

https://eastus.oic.prod-aks.azure.com/00000000-0000-0000-0000-000000000000/11111111-1111-1111-1111-111111111111/

Par défaut, l’émetteur est défini pour utiliser l’URL de base https://{region}.oic.prod-aks.azure.com/{tenant_id}/{uuid}, où la valeur de {region} correspond à l’emplacement de déploiement du cluster AKS. La valeur {uuid} représente la clé OIDC générée de manière aléatoire pour chaque cluster immuable.

Obtenir le document de découverte

Pour obtenir le document de découverte, copiez l’URL https://(OIDC issuer URL).well-known/openid-configuration et ouvrez-la dans un navigateur.

La sortie doit ressembler à ce qui suit :

{
  "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"
  ]
}

Obtenir le document JWK Set

Pour obtenir le document JWK Set, copiez le jwks_uri à partir du document de découverte et collez-le dans la barre d’adresse de votre navigateur.

La sortie doit ressembler à ce qui suit :

{
  "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"
    }
  ]
}

Pendant une rotation des clés, une autre clé est présente dans le document de découverte.

Étapes suivantes