S'authentifier avec OpenID Connect (OIDC)

Découvrez comment configurer Anthos Clusters on AWS (GKE On-Prem) afin d'utiliser OpenID Connect (OIDC) pour l'authentification auprès des clusters d'utilisateur. Cet article est une approche générale du processus, pour vous aider à comprendre comment configurer un fournisseur OpenID.

Pour obtenir une présentation du flux d'authentification de Anthos clusters on VMware, consultez la page Authentification. Pour savoir comment configurer OIDC avec d'autres fournisseurs OpenID, consultez les ressources suivantes :

Anthos Clusters on VMware accepte OIDC en tant que mécanisme d'authentification, pour interagir avec le serveur d'API Kubernetes d'un cluster d'utilisateur. OIDC vous permet de gérer l'accès aux clusters Kubernetes en utilisant les procédures standards de votre organisation pour créer, activer et désactiver des comptes utilisateur.

Les utilisateurs peuvent autoriser leur compte de deux manières :

  • En utilisant Google Cloud CLI pour lancer le processus OIDC et obtenir l'autorisation de l'utilisateur via une page basée sur un navigateur.

  • En utilisant Google Cloud Console pour lancer le processus d'authentification OIDC.

Avant de commencer

  • Dans cet article, nous partons du principe que vous connaissez les concepts d'authentification et les concepts OpenID suivants :

  • Les systèmes sans interface graphique ne sont pas compatibles. Un processus d'authentification basé sur navigateur est utilisé pour vous demander votre autorisation et pour autoriser votre compte utilisateur.

  • Pour vous authentifier via Google Cloud Console, chaque cluster que vous souhaitez configurer pour l'authentification OIDC doit être enregistré auprès de Google Cloud.

Personas

Cette rubrique fait référence à trois personas :

  • Administrateur de l'organisation. Cette personne choisit un fournisseur OpenID et enregistre les applications clientes auprès du fournisseur.

  • Administrateur du cluster. Cette personne crée un ou plusieurs clusters d'utilisateur et crée des fichiers de configuration d'authentification pour les développeurs qui utilisent les clusters.

  • Développeur. Cette personne exécute des charges de travail sur un ou plusieurs clusters et s'authentifie à l'aide d'OIDC.

Choisir un fournisseur OpenID

Cette section est destinée aux administrateurs de l'organisation.

Vous pouvez utiliser n'importe quel fournisseur OpenID de votre choix. Pour obtenir la liste des fournisseurs certifiés, consultez la page Certification OpenID.

Pour les fournisseurs OpenID suivants, consultez les étapes de configuration spécifiques dans les rubriques suivantes :

Créer des URL de redirection

Cette section est destinée aux administrateurs de l'organisation.

Vous devez créer des URL de redirection pour gcloud CLI et la console Google Cloud que le fournisseur OpenID pourra utiliser pour renvoyer des jetons d'ID.

URL de redirection de la CLI gcloud

Google Cloud CLI est installé sur la machine locale de chaque développeur. Vous pouvez spécifier un numéro de port supérieur à 1 024 pour l'URL de redirection :

http://localhost:PORT/callback

Remplacez PORT par votre numéro de port.

Lorsque vous configurez votre fournisseur OpenID, spécifiez http://localhost:PORT/callback comme l'une de vos URL de redirection. La procédure à suivre pour cela dépend de votre fournisseur.

URL de redirection de la console Google Cloud

L'URL de redirection de la console Google Cloud est la suivante :

https://console.cloud.google.com/kubernetes/oidc

Lorsque vous configurez votre fournisseur OpenID, spécifiez https://console.cloud.google.com/kubernetes/oidc comme l'une de vos URL de redirection. La procédure à suivre pour cela dépend de votre fournisseur.

Enregistrer des applications clientes auprès du fournisseur OpenID

Cette section est destinée aux administrateurs de l'organisation.

Pour que vos développeurs puissent utiliser gcloud CLI ou la console Google Cloud avec votre fournisseur OpenID, vous devez enregistrer ces deux clients auprès du fournisseur OpenID. L'enregistrement comprend les étapes suivantes :

  • Découvrir l'URI d'émetteur du fournisseur. C'est à ce moment que gcloud CLI ou la console Google Cloud envoient des requêtes d'authentification.

  • Indiquer au fournisseur l'URL de redirection de la CLI gcloud.

  • Indiquer au fournisseur l'URL de redirection de la console Google Cloud. Il s'agit de https://console.cloud.google.com/kubernetes/oidc.

  • Établir un ID client unique. Il s'agit de l'ID utilisé par le fournisseur pour identifier à la fois gcloud CLI et la console Google Cloud.

  • Établir un code secret de client unique. La gcloud CLI et la console Google Cloud utilisent toutes deux ce code secret pour s'authentifier auprès du fournisseur OpenID.

  • Établir un niveau d'accès personnalisé que gcloud CLI ou la console Google Cloud puissent utiliser pour demander les groupes de sécurité de l'utilisateur.

  • Établir un nom de revendication personnalisé que le fournisseur utilisera pour renvoyer les groupes de sécurité de l'utilisateur.

La procédure à suivre dépend de votre fournisseur OpenID.

Configurer oidc sur des clusters Anthos Clusters on VMware

Cette section s'adresse aux administrateurs de cluster.

Pour configurer l'authentification OIDC, vous devez configurer l'objet CRD ClientConfig de votre cluster d'utilisateur avec les détails d'authentification d'un cluster. Pour ce faire, modifiez l'objet KRM par défaut de type clientconfig dans l'espace de noms kube-public.

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG -n kube-public edit clientconfig default

Les détails de l'objet ClientConfig CRD permettent de configurer OIDC pour la console Google Cloud et le plug-in d'authentification pour Anthos. La configuration inclut les informations OIDC suivantes :

authentication:
  - name: NAME_STRING
    oidc:
      certificateAuthorityData: CERTIFICATE_STRING
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: "http://console.cloud.google.com/kubernetes/oidc"
      deployCloudConsoleProxy: PROXY_BOOLEAN
      extraParams: EXTRA_PARAMS
      groupsClaim: GROUPS_CLAIM
      groupPrefix: GROUP_PREFIX
      issuerURI: ISSUER_URI
      kubectlRedirectURI: KUBECTL_REDIRECT_URI
      scopes: SCOPES
      userClaim: USER_CLAIM
      userPrefix: USER_PREFIX
    proxy: PROXY_URL

Le tableau suivant décrit les champs de l'objet CRD ClientConfig oidc.

Champ Requis Description Format
nom oui Nom de la configuration OIDC à créer. String
certificateAuthorityData Non

Certificat encodé au format PEM encodé en base64 pour le fournisseur OIDC. Pour créer la chaîne, encodez le certificat, y compris les en-têtes, en base64. Incluez la chaîne obtenue dans certificateAuthorityData en tant que ligne unique.

Exemple :
certificateAuthorityData: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC...k1JSUN2RENDQWFT==

String
clientID Yes ID de l'application cliente qui envoie des requêtes d'authentification au fournisseur OpenID. String
clientSecret Non Secret partagé entre l'application cliente OIDC et le fournisseur OIDC. String
extraParams Non

Paramètres de clé-valeur supplémentaires à envoyer au fournisseur OpenID. Si vous autorisez un groupe, transmettez resource=token-groups-claim.

Si votre serveur d'autorisation vous demande l'autorisation, pour l'authentification avec Microsoft Azure et Okta, définissez extraParams sur prompt=consent. Pour Cloud Identity, définissez extraParams sur prompt=consent,access_type=offline.

Liste d'éléments séparés par une virgule
groupsClaim Non Revendication JWT que le fournisseur utilise pour renvoyer vos groupes de sécurité. String
groupPrefix Non Préfixe ajouté aux revendications de groupe pour éviter les conflits avec les noms existants. Par exemple, si vous avez deux groupes nommés foobar, ajoutez un préfixe gid-. Le groupe ainsi obtenu est gid-foobar. String
issuerURI Yes URL où les requêtes d'autorisation sont envoyées à votre OpenID, telle que https://example.com/adfs. Le serveur de l'API Kubernetes utilise cette URL pour découvrir les clés publiques permettant de valider les jetons. L'URI doit utiliser le protocole HTTPS. Chaîne d'URL
kubectlRedirectURI Yes L'URL de redirection que kubectl utilise pour l'autorisation. Chaîne d'URL
scopes Yes Niveaux d'accès supplémentaires à envoyer au fournisseur OpenID. Microsoft Azure et Okta nécessitent le niveau d'accès offline_access. Liste d'éléments séparés par une virgule
userClaim Non Revendication JWT à utiliser comme nom d'utilisateur. Vous pouvez choisir d'autres revendications, telles que l'e-mail ou le nom, en fonction du fournisseur OpenID. Toutefois, les revendications autres que l'e-mail sont précédées de l'URL de l'émetteur pour éviter les conflits de noms. String
userPrefix Non Préfixe ajouté aux revendications de nom d'utilisateur pour éviter les conflits avec les noms existants. String
proxy Non Serveur proxy à utiliser pour la méthode auth, le cas échéant. Par exemple : http://user:password@10.10.10.10:8888. String

Exemple : autoriser des utilisateurs et des groupes

De nombreux fournisseurs codent les propriétés d'identification des utilisateurs, telles que les e-mails et les ID utilisateur, dans un jeton. Cependant, ces propriétés présentent des risques implicites pour les stratégies d'authentification :

  • Les ID utilisateur peuvent compliquer la lecture et l'audit des stratégies.

  • Les e-mails peuvent créer un risque de disponibilité (si un utilisateur modifie son adresse e-mail principale) et éventuellement un risque de sécurité (si un e-mail peut être réattribué).

Par conséquent, il est recommandé d'utiliser des stratégies de groupe, car un ID de groupe peut être à la fois persistant et plus facile à auditer.

Supposons que votre fournisseur crée des jetons d'identité qui incluent les champs suivants :

{
  'iss': 'https://server.example.com'
  'sub': 'u98523-4509823'
  'groupList': ['developers@example.corp', 'us-east1-cluster-admins@example.corp']
  ...
}

Compte tenu de ce format de jeton, vous devez renseigner la spécification oidc de votre fichier de configuration comme suit :

issuerURL: 'https://server.example.com'
userClaim: 'sub'
usernamePrefix: 'uid-'
groupsClaim: 'groupList'
groupPrefix: 'gid-'
extraParams: 'resource=token-groups-claim'
...

Après avoir créé le cluster d'utilisateur, vous pouvez ensuite accorder un accès privilégié aux utilisateurs authentifiés à l'aide du contrôle des accès basé sur les rôles Kubernetes (RBAC). Par exemple, vous pouvez créer un objet ClusterRole qui accorde à ses utilisateurs un accès en lecture seule aux secrets du cluster, et créer une ressource ClusterRoleBinding pour lier le rôle au groupe authentifié.

ClusterRole

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: secret-reader
rules:
- apiGroups: [""]
  # The resource type for which access is granted
  resources: ["secrets"]
  # The permissions granted by the ClusterRole
  verbs: ["get", "watch", "list"]

ClusterRoleBinding

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: read-secrets-admins
subjects:
  # Allows anyone in the "us-east1-cluster-admins" group to
  # read Secrets in any namespace within this cluster.
- kind: Group
  name: gid-us-east1-cluster-admins # Name is case-sensitive
  apiGroup: rbac.authorization.k8s.io
  # Allows this specific user to read Secrets in any
  # namespace within this cluster
- kind: User
  name: uid-u98523-4509823
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-reader
  apiGroup: rbac.authorization.k8s.io

Créer et distribuer le fichier de configuration d'authentification

Cette section s'adresse aux administrateurs de cluster.

Après avoir créé un cluster d'utilisateur, vous allez créer un fichier de configuration d'authentification pour ce cluster. Vous pouvez configurer plusieurs clusters dans un même fichier de configuration d'authentification. Vous devez fournir chaque fichier de configuration d'authentification aux utilisateurs qui souhaitent s'authentifier auprès de chacun de ces clusters.

Créer le fichier de configuration d'authentification

Pour créer le fichier de configuration d'authentification dans le répertoire actuel, exécutez la commande gkectl suivante :

gkectl create-login-config --kubeconfig USER_CLUSTER_KUBECONFIG

Remplacez USER_CLUSTER_KUBECONFIG par le chemin d'accès au fichier kubeconfig de votre cluster d'utilisateur. Lorsque vous avez exécuté gkectl create cluster pour créer votre cluster d'utilisateur, le fichier kubeconfig a été créé.

Résultat : Votre fichier de configuration d'authentification, nommé kubectl-anthos-config.yaml, est créé dans le répertoire actuel.

Ajouter plusieurs clusters au fichier de configuration d'authentification

Vous pouvez enregistrer les détails de configuration d'authentification pour plusieurs clusters dans un seul fichier de configuration d'authentification.

Vous pouvez utiliser la commande suivante pour fusionner des informations d'authentification de cluster d'utilisateur supplémentaires dans un fichier de configuration d'authentification existant. Avec un fichier de configuration d'authentification existant, vous pouvez fusionner ou combiner des informations d'authentification de cluster d'utilisateur supplémentaires :

  • Fusionnez les informations supplémentaires d'authentification de cluster d'utilisateur dans ce fichier de configuration d'authentification existant.
  • Combinez les informations supplémentaires d'authentification de cluster d'utilisateur dans un nouveau fichier.

Par exemple, vous devrez peut-être gérer les fichiers de configuration d'authentification anthos-config-1cluster.yaml et anthos-config-3clusters.yaml pour répondre aux besoins d'accès des différents groupes d'utilisateurs de votre organisation.

Pour ajouter des clusters d'utilisateur supplémentaires à votre fichier de configuration d'authentification, procédez comme suit :

  1. Assurez-vous que chaque cluster dispose d'un nom unique. Si vos clusters possèdent des noms identiques, vous ne pouvez pas les combiner dans un même fichier de configuration d'authentification. Notez qu'une fois le cluster créé, il ne peut pas être renommé.

  2. Exécutez la commande gkectl suivante pour fusionner ou combiner les informations de configuration :

    gkectl create-login-config --kubeconfig USER_CLUSTER_KUBECONFIG \
    --merge-from IN_AUTH_CONFIG_FILE --output OUT_AUTH_CONFIG_FILE

    Remplacez les éléments suivants :

    • USER_CLUSTER_KUBECONFIG spécifie le fichier kubeconfig du cluster d'utilisateur que vous souhaitez ajouter.

    • IN_AUTH_CONFIG_FILE spécifie le chemin d'accès au fichier de configuration d'authentification existant que vous souhaitez fusionner avec les informations de cluster supplémentaires.

    • OUT_AUTH_CONFIG_FILE spécifie le chemin d'accès au fichier dans lequel vous souhaitez enregistrer la configuration d'authentification fusionnée :

      • Spécifiez le même fichier que IN_AUTH_CONFIG_FILE pour fusionner les informations de cluster supplémentaires dans ce fichier.
      • Spécifiez un nouveau chemin d'accès et un nouveau nom de fichier pour combiner les informations de configuration d'authentification dans un nouveau fichier.

Distribuer le fichier de configuration d'authentification

Pour permettre à vos utilisateurs de s'authentifier auprès de vos clusters d'utilisateur, vous devez leur donner accès à un ou plusieurs des fichiers de configuration d'authentification que vous avez créés. Notez que les étapes suivantes utilisent les valeurs de nom de fichier et d'emplacement par défaut attendues par gcloud CLI. Pour en savoir plus sur l'utilisation d'autres noms et emplacements de fichiers, consultez la section Configuration personnalisée.

Envisagez de distribuer les fichiers de configuration d'authentification comme suit :

  • Héberger le fichier en l'associant à une URL accessible. Si vous incluez l'option --login-config dans la commande gcloud anthos auth login, gcloud CLI obtient le fichier de configuration d'authentification à partir de cet emplacement.

    Envisagez d'héberger le fichier sur un hôte sécurisé. Pour en savoir plus sur l'utilisation de certificats PEM pour l'accès HTTPS sécurisé, consultez l'option --login-config-cert de gcloud CLI.

  • Fournir le fichier manuellement à chaque utilisateur. Une fois que les utilisateurs ont téléchargé le fichier, vous devez leur indiquer comment l'enregistrer à l'emplacement par défaut et avec le nom de fichier par défaut attendus par gcloud CLI.

    Par exemple, les utilisateurs peuvent exécuter les commandes suivantes pour stocker le fichier de configuration d'authentification en utilisant le nom de fichier kubectl-anthos-config.yaml par défaut et l'emplacement par défaut :

    Linux

    mkdir -p  $HOME/.config/google/anthos/
    cp AUTH_CONFIG_FILE $HOME/.config/google/anthos/kubectl-anthos-config.yaml

    AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

    macOS

    mkdir -p  $HOME/Library/Preferences/google/anthos/
    cp AUTH_CONFIG_FILE $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

    AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

    Windows

    md "%APPDATA%\google\anthos"
    copy AUTH_CONFIG_FILE "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

    AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

  • Utiliser vos outils internes pour transférer le fichier de configuration d'authentification sur l'ordinateur de chaque utilisateur. Par exemple, vous pouvez utiliser vos outils pour transférer des fichiers en utilisant le nom de fichier kubectl-anthos-config.yaml et l'emplacement par défaut sur la machine de chaque utilisateur :

    Linux

    $HOME/.config/google/anthos/kubectl-anthos-config.yaml

    macOS

    $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

    Windows

    %APPDATA%\google\anthos\kubectl-anthos-config.yaml

Configuration personnalisée

gcloud CLI s'attend à ce que le fichier de configuration d'authentification soit enregistré à l'emplacement par défaut et avec le nom de fichier par défaut kubectl-anthos-config.yaml, comme indiqué dans la section précédente. Toutefois, vous avez la possibilité de renommer votre fichier de configuration d'authentification ou de l'enregistrer à un autre emplacement. Si le nom et l'emplacement du fichier diffèrent de ceux par défaut, vous devez ajouter l'option --login-config à chaque commande que vous exécutez lorsque vous vous authentifiez auprès du cluster. L'option supplémentaire de commande transmet le chemin d'accès et le nom de fichier personnalisés. Pour en savoir plus sur l'option de commande, consultez la section S'authentifier via gcloud CLI.

Installer la CLI gcloud

Cette section s'adresse à la fois aux administrateurs de cluster et aux développeurs.

Chaque développeur ou utilisateur devant s'authentifier auprès d'un cluster doit installer Google Cloud CLI sur sa propre machine. Les commandes d'authentification Anthos ont été intégrées à la CLI gcloud en tant que composant anthos-auth.

Supprimer les anciens plug-ins

Vous devez désinstaller l'ancien plug-in pour pouvoir utiliser le composant anthos-auth de gcloud CLI. Vous pouvez vérifier si l'un des anciens plug-ins basés sur kubectl est présent sur votre machine en exécutant la commande suivante :

kubectl anthos version

  • Si la commande renvoie Error: unknown command "anthos" for "kubectl", aucun plug-in n'a été trouvé et vous pouvez passer à la section suivante.

  • Si une version 1.0beta du plug-in a été trouvée, vous devez localiser le binaire du plug-in et le supprimer. Exécutez la commande suivante pour afficher l'emplacement, puis utilisez cet emplacement pour supprimer le binaire de votre machine :

    kubectl plugin list

Installer gcloud CLI et la CLI gcloud

Pour installer gcloud CLI, vous devez d'abord installer gcloud CLI :

  1. Installez gcloud CLI, mais ignorez la commande gcloud init.

  2. Exécutez les commandes suivantes pour installer le composant anthos-auth :

    gcloud components update
    gcloud components install anthos-auth
  3. Vérifiez que gcloud CLI a bien été installé en exécutant l'une des commandes suivantes :

    gcloud anthos auth
    gcloud anthos auth login

    Résultat : Chaque commande doit renvoyer des informations sur les arguments requis et les options disponibles.

Obtenir le fichier de configuration d'authentification

Cette section s'adresse aux développeurs.

Votre administrateur est chargé de créer votre fichier de configuration d'authentification, puis de vous le fournir. Pour en savoir plus, consultez la section Distribuer le fichier de configuration d'authentification.

Par défaut, gcloud CLI utilise un nom de fichier et un emplacement de stockage par défaut pour votre fichier de configuration d'authentification. Si vous avez reçu manuellement le fichier et que vous devez l'enregistrer sur votre ordinateur, utilisez les valeurs par défaut pour simplifier vos commandes d'authentification gcloud.

Utilisez les commandes suivantes pour copier le fichier de configuration d'authentification à l'emplacement par défaut :

Linux

mkdir -p  $HOME/.config/google/anthos/
cp AUTH_CONFIG_FILE $HOME/.config/google/anthos/kubectl-anthos-config.yaml

AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

macOS

mkdir -p  $HOME/Library/Preferences/google/anthos/
cp AUTH_CONFIG_FILE $HOME/Library/Preferences/google/anthos/kubectl-anthos-config.yaml

AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

Windows

md "%APPDATA%\google\anthos"
copy AUTH_CONFIG_FILE "%APPDATA%\google\anthos\kubectl-anthos-config.yaml"

AUTH_CONFIG_FILE est le nom de votre fichier de configuration d'authentification. Par exemple, kubectl-anthos-config.yaml.

Si vous choisissez d'utiliser un nom de fichier ou un emplacement différent, vous avez la possibilité d'ajouter l'option --login-config à chacune de vos requêtes d'authentification. Consultez la section suivante pour en savoir plus sur l'utilisation de la commande gcloud anthos auth login.

S'authentifier auprès de clusters d'utilisateur

Cette section s'adresse aux développeurs.

Maintenant que gcloud CLI est installé sur votre ordinateur et que le fichier de configuration d'authentification vous a été fourni par votre administrateur, vous pouvez utiliser gcloud CLI ou la console Google Cloud pour vous authentifier auprès de vos clusters.

S'authentifier via la CLI gcloud

Exécutez des commandes gcloud pour vous authentifier auprès de vos clusters :

  1. Exécutez la commande gcloud anthos auth login pour lancer le processus d'authentification :

    gcloud anthos auth login \
     --cluster CLUSTER_NAME \
     --user USER_NAME \
     --login-config AUTH_CONFIG_FILE_PATH \
     --login-config-cert CA_CERT_PEM_FILE \
     --kubeconfig USER_CLUSTER_KUBECONFIG

    où :

    • CLUSTER_NAME (facultatif) spécifie le nom de votre cluster d'utilisateur. Si cette option est omise, vous êtes invité à choisir parmi les clusters d'utilisateur spécifiés dans votre fichier de configuration d'authentification.

    • USER_NAME (facultatif) spécifie le nom d'utilisateur des identifiants enregistrés dans le fichier kubeconfig. La valeur par défaut est CLUSTER_NAME-anthos-default-user.

    • AUTH_CONFIG_FILE_PATH (facultatif) spécifie le chemin d'accès personnalisé ou l'URL de l'emplacement auquel votre fichier de configuration d'authentification est enregistré ou hébergé. Vous pouvez omettre ce paramètre si le fichier se trouve à l'emplacement par défaut. Exemple : --login-config /path/to/custom/authentication-config.yaml

    • CA_CERT_PEM_FILE (facultatif) spécifie le chemin d'accès à un fichier de certificat PEM de votre autorité de certification. Si votre fichier de configuration d'authentification est hébergé de manière sécurisée, vous pouvez utiliser une connexion HTTPS pour y accéder. Exemple : --login-config-cert my-cert.pem

    • USER_CLUSTER_KUBECONFIG (facultatif) spécifie le chemin d'accès personnalisé au fichier kubeconfig de votre cluster d'utilisateur. Les jetons d'ID OIDC renvoyés par votre fournisseur OpenID sont enregistrés dans le fichier kubeconfig.

      Utilisez cette option si votre fichier kubeconfig se trouve ailleurs que dans l'emplacement par défaut. Si cette option est omise, un nouveau fichier kubeconfig est créé à l'emplacement par défaut. Exemple : --kubeconfig /path/to/custom.kubeconfig

    Exemples :

    • S'authentifier auprès d'un cluster spécifique :

      gcloud anthos auth login --cluster my-production-cluster
      
    • Utiliser une invite pour sélectionner le cluster auprès duquel l'authentification doit s'effectuer :

      gcloud anthos auth login
      

      Résultat :

      Please use the --cluster flag to specify a cluster from the list below:
      Source: $HOME/.config/google/anthos/kubectl-anthos-config.yaml
      1. Cluster: test-cluster ServerIP: https://192.168.0.1:6443
      2. Cluster: test-cluster-2 ServerIP: https://192.168.0.2:6443
      3. Cluster: my-production-cluster ServerIP: https://192.168.0.3:6443
      
    • Utiliser un fichier de configuration d'authentification hébergé :

      gcloud anthos auth login \
       --cluster my-production-cluster \
       --login-config HTTPS://my-secure-server/kubectl-anthos-config.yaml \
       --login-config-cert my-cert.pem
      
  2. Saisissez vos identifiants dans l'écran d'autorisation basé sur navigateur qui s'affiche.

  3. Vérifiez que l'authentification a réussi en exécutant l'une des commandes kubectl pour récupérer les informations concernant votre cluster. Exemple :

    kubectl get nodes --kubeconfig USER_CLUSTER_KUBECONFIG

Résultat : Votre fichier kubeconfig contient désormais un jeton d'ID que vos commandes kubectl utiliseront pour s'authentifier auprès du serveur d'API Kubernetes sur votre cluster d'utilisateur.

S'authentifier via SSH depuis une machine distante

Supposons que vous souhaitiez vous connecter en SSH à une machine distante et vous authentifier auprès d'un cluster d'utilisateur à partir de celle-ci. Pour ce faire, votre fichier de configuration d'authentification doit se trouver sur la machine distante et vous devez être en mesure d'accéder à votre fournisseur OpenID depuis votre machine locale.

Sur votre machine locale, exécutez la commande suivante :

ssh USER_NAME@REMOTE_MACHINE -L LOCAL_PORT:localhost:REMOTE_PORT

où :

  • USER_NAME et REMOTE_MACHINE sont les valeurs standards permettant de se connecter en SSH.

  • LOCAL_PORT est un port ouvert de votre choix sur votre machine locale que vous utiliserez pour accéder à la machine distante.

  • REMOTE_PORT est le port que vous avez configuré pour votre URL de redirection OIDC. Vous le trouverez dans le champ kubectlRedirectURI de votre fichier de configuration d'authentification.

Dans votre interface système SSH, exécutez la commande suivante pour lancer l'authentification :

gcloud anthos auth login --login-config AUTH_CONFIG_FILE

AUTH_CONFIG_FILE est le chemin d'accès à votre fichier de configuration d'authentification sur la machine distante.

Sur votre ordinateur local, dans un navigateur, accédez à http://localhost:LOCAL_PORT/login et suivez la procédure de connexion OIDC.

Le fichier kubeconfig sur la machine distante contient maintenant le jeton dont vous avez besoin pour accéder au cluster d'utilisateur.

Dans votre interface système SSH, vérifiez que vous avez accès au cluster d'utilisateur :

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes

S'authentifier via Google Cloud Console

Démarrez le processus d'authentification sur la page des clusters Kubernetes dans la console Google Cloud :

  1. Ouvrez la console Google Cloud.

    Accéder à la page Clusters Kubernetes

  2. Localisez votre cluster du service Anthos clusters on VMware dans la liste, puis cliquez sur Login (Connexion).

  3. Sélectionnez S'authentifier auprès du fournisseur d'identité configuré pour le cluster, puis cliquez sur CONNEXION.

    Vous êtes redirigé vers votre fournisseur d'identité et il vous faudra peut-être vous connecter à la console Google Cloud ou l'autoriser à accéder à votre compte. Vous êtes ensuite de nouveau redirigé vers la page Clusters Kubernetes dans la console Google Cloud.

Résoudre les problèmes de configuration OIDC

Pour résoudre vos problèmes liés à OIDC, passez en revue les erreurs et comportements suivants :

Configuration non valide
Si Google Cloud Console ne parvient pas à lire la configuration OIDC de votre cluster, le bouton CONNEXION est désactivé.
Configuration de fournisseur non valide
Si la configuration de votre fournisseur d'identité est incorrecte, un message d'erreur en provenance de votre fournisseur d'identité s'affiche lorsque vous cliquez sur CONNEXION. Suivez les instructions spécifiques au fournisseur pour configurer correctement le fournisseur ou votre cluster.
Autorisations non valides
Si vous avez suivi toute la procédure d'authentification mais que vous ne voyez toujours pas les détails du cluster, assurez-vous d'avoir accordé les autorisations RBAC appropriées au compte que vous avez utilisé avec OIDC. Notez qu'il peut s'agir d'un compte différent de celui que vous utilisez pour accéder à la console Google Cloud.
Error: missing 'RefreshToken' field in 'OAuth2Token' in credentials struct
Vous pouvez rencontrer cette erreur si le serveur d'autorisation demande votre autorisation, mais que le paramètre d'authentification requis n'a pas été fourni. Renseignez le paramètre prompt=consent dans le champ oidc: extraparams du fichier de configuration de Anthos clusters on VMware, puis générez à nouveau le fichier d'authentification du client avec l'option --extra-params prompt=consent.

Étapes suivantes