Configurer la gestion de l'authentification au niveau du parc

Ce document explique aux administrateurs de clusters comment configurer plusieurs clusters pour l'authentification à partir de fournisseurs d'identité tiers à l'aide de parcs. Google Cloud gère la configuration des clusters dans un parc, ce qui permet une configuration plus rapide et moins complexe que celle des clusters individuels. Pour en savoir plus sur la procédure d'authentification des fournisseurs tiers, consultez À propos de l'authentification à l'aide d'identités tierces.

Avant de commencer

  1. Installez et configurez Google Cloud CLI :

    1. Install the Google Cloud CLI.

    2. Si vous utilisez un fournisseur d'identité (IdP) externe, vous devez d'abord vous connecter à la gcloud CLI avec votre identité fédérée.

    3. Pour initialiser la gcloud CLI, exécutez la commande suivante :

      gcloud init
    4. Après avoir initialisé la gcloud CLI, mettez-la à jour et installez les composants requis :

      gcloud components update
      gcloud components install kubectl
    5. Dans la gcloud CLI, sélectionnez votre projet hôte du parc :
      gcloud config set project FLEET_HOST_PROJECT_ID
      Remplacez FLEET_HOST_PROJECT_ID par l'ID du projet hôte de votre parc.

  2. Activez les API requises :

    1. Dans la console Google Cloud , accédez à la page de sélection du projet :

      Accéder au sélecteur de projet

    2. Sélectionnez votre projet hôte de parc.

    3. Enable the GKE Hub and Kubernetes Engine APIs.

      Roles required to enable APIs

      To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

      Enable the APIs

  3. Assurez-vous que l'administrateur de votre plate-forme vous a fourni toutes les informations sur le fournisseur dont vous avez besoin pour le protocole sélectionné. Pour en savoir plus, consultez les documents suivants :

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer des clusters au niveau du parc, demandez à votre administrateur de vous accorder le rôle IAM Administrateur de parc (roles/gkehub/admin) sur le projet hôte du parc. Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.

Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

Activer la fonctionnalité de service d'identité au niveau du parc

La fonctionnalité de service d'identité au niveau du parc utilise un contrôleur pour gérer la configuration dans chacun des clusters du parc. Vous ne devez activer la fonctionnalité au niveau du parc que dans le projet hôte du parc.

Pour activer la fonctionnalité au niveau du parc, sélectionnez l'une des options suivantes :

Console

  1. Dans la console Google Cloud , accédez à la page GKE Identity Service.

    Accéder au gestionnaire de fonctionnalités

  2. Cliquez sur Activer Identity Service.

gcloud

Activez la fonctionnalité de service d'identité au niveau du parc :

gcloud container fleet identity-service enable

Configurer les clusters

Pour configurer vos clusters, vous devez spécifier les informations suivantes :

  • Informations sur votre fournisseur d'identité, comme un ID client et un code secret.
  • Informations sur les jetons Web JSON (JWT) que votre fournisseur d'identité utilise pour l'authentification.
  • Tous les champs d'application ou paramètres supplémentaires propres à votre fournisseur d'identité.

Pour en savoir plus sur les informations que vous devez obtenir auprès de l'administrateur de votre plate-forme ou de la personne qui gère l'identité dans votre organisation, consultez les documents suivants :

Si vous avez des configurations existantes au niveau du cluster pour les fournisseurs OIDC, l'application d'une configuration au niveau du parc au cluster écrase toutes vos spécifications d'authentification existantes. De plus, si vous avez des configurations existantes au niveau du cluster pour les fournisseurs non compatibles avec la configuration au niveau du parc, cette configuration échouera. Vous devez supprimer la configuration de fournisseur existante pour appliquer la configuration au niveau du parc.

Pour configurer vos clusters, procédez comme suit :

Console

  1. Sélectionnez les clusters à configurer :

    1. Dans la console Google Cloud , accédez à la page GKE Identity Service.

      Accéder au gestionnaire de fonctionnalités

    2. Cochez une ou plusieurs cases correspondant aux clusters que vous souhaitez configurer. Vous pouvez choisir des clusters individuels ou spécifier que tous les clusters doivent être configurés avec la même configuration d'identité. Si vous avez configuré des valeurs par défaut au niveau du parc, la configuration revient à la valeur par défaut.

    3. Cliquez sur Mettre à jour la configuration. Le volet Modifier la configuration des clusters Identity Service s'ouvre.

    4. Dans la section Fournisseurs d'identité, choisissez la manière dont vous souhaitez configurer les clusters. Vous pouvez mettre à jour une configuration existante, copier une configuration à partir d'un autre cluster ou créer une configuration. Pour créer une configuration, cliquez sur Ajouter un fournisseur d'identité. La section Nouveau fournisseur d'identité s'affiche.

  2. Dans la section Nouveau fournisseur d'identité, définissez les détails du fournisseur :

    OIDC

    1. Sélectionnez Nouveau Open ID Connect pour créer une configuration OIDC.
    2. Dans le champ Nom du fournisseur, saisissez le nom que vous souhaitez utiliser pour identifier cette configuration (généralement, le nom du fournisseur d'identité). Le nom doit commencer par une lettre suivie de 1 à 39 lettres minuscules, chiffres ou traits d'union, et ne peut pas se terminer par un trait d'union. Vous ne pourrez plus modifier ce nom après avoir créé une configuration.
    3. Spécifiez l'ID client du fournisseur d'identité dans le champ ID client.
    4. Indiquez le code secret du client qui doit être partagé entre l'application cliente et le fournisseur d'identité dans le champ Code secret du client.
    5. Dans le champ URL de l'émetteur, spécifiez l'URI vers lequel les requêtes d'autorisation sont envoyées à votre fournisseur d'identité.
    6. Cliquez sur Suivant pour définir les attributs OIDC.

    Azure AD

    1. Sélectionnez Nouvelle configuration Azure Active Directory pour créer une configuration Azure AD.
    2. Dans le champ Nom du fournisseur, saisissez le nom que vous souhaitez utiliser pour identifier cette configuration (généralement, le nom du fournisseur d'identité). Le nom doit commencer par une lettre suivie de 1 à 39 lettres minuscules, chiffres ou traits d'union, et ne peut pas se terminer par un trait d'union. Vous ne pourrez plus modifier ce nom après avoir créé une configuration.
    3. Spécifiez l'ID client du fournisseur d'identité dans le champ ID client.
    4. Indiquez le code secret du client qui doit être partagé entre l'application cliente et le fournisseur d'identité dans le champ Code secret du client.
    5. Spécifiez le locataire qui est le compte Azure AD à authentifier dans Locataire.
    6. Cliquez sur Suivant pour définir les attributs Azure AD.

    LDAP

    1. Sélectionnez LDAP pour créer une configuration LDAP.
    2. Dans le champ Nom du fournisseur, saisissez le nom que vous souhaitez utiliser pour identifier cette configuration (généralement, le nom du fournisseur d'identité). Le nom doit commencer par une lettre suivie de 1 à 39 lettres minuscules, chiffres ou traits d'union, et ne peut pas se terminer par un trait d'union. Vous ne pourrez plus modifier ce nom après avoir créé une configuration.
    3. Cliquez sur Suivant.
    4. Indiquez le nom d'hôte (obligatoire), le type de connexion LDAP et le certificat CA encodé en base64 du serveur LDAP.
    5. Cliquez sur Suivant pour configurer le serveur.
    6. Spécifiez le nom distinctif, le filtre, l'attribut de connexion et l'attribut d'identifiant de l'utilisateur.
    7. Cliquez sur Suivant pour définir les détails de l'utilisateur.
    8. Si vous choisissez d'utiliser des groupes, spécifiez le nom distinctif, le filtre et l'attribut d'identifiant du groupe.
    9. Cliquez sur Suivant pour définir les détails du groupe.
    10. Spécifiez le nom d'utilisateur et le mot de passe du compte de service.
    11. Cliquez sur Terminé pour définir le nom du compte de service.
  3. Cliquez sur Suivant. La section Définir les attributs s'ouvre.

  4. Définissez les attributs de votre fournisseur d'identité. Pour afficher les attributs pour OIDC ou Azure AD, sélectionnez l'une des options suivantes :

    OIDC

    • URI de redirection kubectl : port et URL de redirection utilisés par gcloud CLI et spécifiés par l'administrateur de la plate-forme à l'enregistrement, généralement au format http://localhost:PORT/callback.
    • Autorité de certification (facultatif) : si fournie par l'administrateur de votre plate-forme, une chaîne de certificat encodée au format PEM pour le fournisseur d'identité.
    • Revendication de groupe (facultatif) : revendication de jeton JWT (nom de champ) que votre fournisseur utilise pour renvoyer les groupes de sécurité d'un compte.
    • Préfixe de groupe (facultatif) : préfixe que vous souhaitez ajouter aux noms de groupe de sécurité pour éviter les conflits avec les noms existants dans vos règles de contrôle des accès si vous avez des configurations pour plusieurs fournisseurs d'identité (généralement le nom du fournisseur).
    • Proxy (facultatif) : adresse du serveur proxy à utiliser pour se connecter au fournisseur d'identité, le cas échéant. Vous devrez peut-être définir cette option si, par exemple, votre cluster se trouve sur un réseau privé et doit se connecter à un fournisseur d'identité public. Exemple : http://user:password@10.10.10.10:8888.
    • Niveaux d'accès (facultatif) : tous les niveaux d'accès supplémentaires requis par votre fournisseur d'identité. Microsoft Azure et Okta nécessitent le niveau d'accès offline_access. Cliquez sur Ajouter un niveau d'accès pour ajouter d'autres niveaux d'accès, si nécessaire.
    • Revendication utilisateur (facultatif) : revendication de jeton JWT (nom de champ) que votre fournisseur utilise pour identifier un compte. Si vous ne spécifiez pas de valeur ici, le cluster utilise "sub ", qui est la revendication d'ID utilisateur utilisée par de nombreux fournisseurs. Vous pouvez choisir d'autres revendications, telles que l'adresse e-mail ou le nom, selon le fournisseur OpenID. Les revendications autres que l'adresse e-mail sont précédées de l'URL de l'émetteur pour éviter les conflits de noms.
    • Préfixe de l'utilisateur (facultatif) : préfixe que vous souhaitez ajouter aux revendications de l'utilisateur pour éviter les conflits avec les noms existants, si vous ne souhaitez pas utiliser le préfixe par défaut.
    • Paramètres supplémentaires (facultatif) : tous les paramètres supplémentaires requis pour votre configuration, spécifiés sous forme de paires Clé et Valeur. Cliquez sur Ajouter un paramètre pour ajouter d'autres paramètres si nécessaire.
    • Activer le jeton d'accès (facultatif) : si cette option est activée, elle autorise la compatibilité de groupes avec les fournisseurs OIDC tels que Okta.
    • Déployer le proxy de la Google Cloud console (facultatif) : si ce proxy est activé, il permet à la console Google Cloud de se connecter à un fournisseur d'identité sur site qui n'est pas accessible publiquement sur Internet.

    Azure AD

    • URI de redirection kubectl : port et URL de redirection utilisés par gcloud CLI et spécifiés par l'administrateur de la plate-forme à l'enregistrement, généralement au format http://localhost:PORT/callback.
    • Revendication utilisateur (facultatif) : revendication de jeton JWT (nom de champ) que votre fournisseur utilise pour identifier un compte. Si vous ne spécifiez pas de valeur ici, le cluster utilise une valeur dans l'ordre "email", "preferred_username" ou "sub" pour récupérer les informations sur l'utilisateur.
    • Proxy (facultatif) : adresse du serveur proxy à utiliser pour se connecter au fournisseur d'identité, le cas échéant. Vous devrez peut-être définir cette option si, par exemple, votre cluster se trouve sur un réseau privé et doit se connecter à un fournisseur d'identité public. Exemple : http://user:password@10.10.10.10:8888.
  5. Cliquez sur OK.

  6. Facultatif : Pour ajouter d'autres fournisseurs à la configuration, cliquez sur Ajouter un fournisseur d'identité et répétez les étapes précédentes.

  7. Cliquez sur Mettre à jour la configuration.

Cela permet d'installer les composants requis si nécessaire et d'appliquer la configuration du client aux clusters sélectionnés.

gcloud

Pour utiliser la gcloud CLI afin de configurer le parc, vous devez créer une ressource personnalisée Kubernetes nommée ClientConfig, avec des champs pour toutes les informations dont le cluster a besoin pour interagir avec le fournisseur d'identité. Pour créer et utiliser un ClientConfig, procédez comme suit :

  1. Créez une spécification ClientConfig dans un fichier nommé auth-config.yaml. Pour afficher des exemples de configurations pour OIDC, SAML ou LDAP, sélectionnez l'une des options suivantes. Pour d'autres configurations de fournisseur d'identité, consultez Configurations spécifiques aux fournisseurs.

    OIDC

    L'exemple ClientConfig suivant montre à la fois une configuration oidc et une configuration azuread. Pour savoir quand utiliser oidc ou azuread, consultez Configurations spécifiques aux fournisseurs.

    apiVersion: authentication.gke.io/v2alpha1
    kind: ClientConfig
    metadata:
      name: default
      namespace: kube-public
    spec:
      authentication:
      - name: NAME
        proxy: PROXY_URL
        oidc:
          certificateAuthorityData: CERTIFICATE_STRING
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          deployCloudConsoleProxy: PROXY_BOOLEAN
          extraParams: EXTRA_PARAMS
          groupsClaim: GROUPS_CLAIM
          groupPrefix: GROUP_PREFIX
          issuerURI: ISSUER_URI
          kubectlRedirectURI: http://localhost:PORT/callback
          scopes: SCOPES
          userClaim: USER_CLAIM
          userPrefix: USER_PREFIX
      - name: azure
        azureAD:
          clientID: CLIENT_ID
          clientSecret: CLIENT_SECRET
          tenant: TENANT_UUID
          kubectlRedirectURI: http://localhost:PORT/callback
          groupFormat: GROUP_FORMAT
          userClaim: USER_CLAIM
    

    Pour en savoir plus sur les champs de l'objet oidc, consultez Champs OIDC ClientConfig.

    SAML

    L'exemple ClientConfig suivant montre une configuration saml :

        apiVersion: authentication.gke.io/v2alpha1
        kind: ClientConfig
        metadata:
          name: default
          namespace: kube-public
        spec:
          authentication:
          - name: NAME
            saml:
              idpEntityID: ENTITY_ID
              idpSingleSignOnURI: SIGN_ON_URI
              idpCertificateDataList: IDP_CA_CERT
              userAttribute: USER_ATTRIBUTE
              groupsAttribute: GROUPS_ATTRIBUTE
              userPrefix: USER_PREFIX
              groupPrefix: GROUP_PREFIX
              attributeMapping:
                ATTRIBUTE_KEY_1 : ATTRIBUTE_CEL_EXPRESSION_1
                ATTRIBUTE_KEY_2 : ATTRIBUTE_CEL_EXPRESSION_2
            certificateAuthorityData: CERTIFICATE_STRING
            preferredAuthentication: PREFERRED_AUTHENTICATION
            server: <>
    

    Pour en savoir plus sur ces champs, consultez Champs SAML ClientConfig.

    LDAP

    L'exemple ClientConfig suivant montre une configuration ldap :

    apiVersion: authentication.gke.io/v2alpha1
    kind: ClientConfig
    metadata:
      name: default
      namespace: kube-public
    spec:
      authentication:
      - name: ldap
        ldap:
          server:
            host: HOST_NAME
            connectionType: CONNECTION_TYPE
            certificateAuthorityData: CERTIFICATE_AUTHORITY_DATA
          user:
            baseDn: BASE_DN
            loginAttribute: LOGIN_ATTRIBUTE
            filter: FILTER
            identifierAttribute: IDENTIFIER_ATTRIBUTE
          group:
            baseDn: BASE_DN
            filter: FILTER
            identifierAttribute: IDENTIFIER_ATTRIBUTE
          serviceAccount:
            simpleBindCredentials:
              dn: DISTINGUISHED_NAME
              password: PASSWORD
    

    Pour en savoir plus sur ces champs, consultez Champs LDAP ClientConfig.

    Vous pouvez ajouter plusieurs configurations de fournisseur d'identité au même ClientConfig. Le cluster tente de s'authentifier avec chaque configuration dans l'ordre dans lequel elles sont définies, et s'arrête après la première authentification réussie.

  2. Appliquez ClientConfig à un cluster :

    gcloud container fleet identity-service apply \
        --membership=CLUSTER_NAME \
        --config=auth-config.yaml
    

    Remplacez CLUSTER_NAME par le nom unique de votre cluster dans le parc.

Le cluster installe les composants requis et utilise le ClientConfig que vous avez créé. Le contrôleur au niveau du parc gère la configuration du cluster. Toutes les modifications locales apportées à la configuration du cluster sont appliquées par le contrôleur à la configuration au niveau du parc.

Pour certaines versions de clusters, l'application de votre configuration au niveau du parc ajoute par défaut une configuration authentication supplémentaire à vos clusters. Cela permet au cluster de récupérer des informations Google Groupes pour les comptes utilisateur se connectant avec leur ID Google. Cette configuration s'applique aux clusters sur Google Distributed Cloud (VMware et Bare Metal). Pour en savoir plus sur la fonctionnalité Google Groupes, consultez Configurer la passerelle de connexion avec Google Groupes.

Si vous ne souhaitez plus que le contrôleur au niveau du parc gère votre configuration (par exemple, si vous souhaitez utiliser une ou plusieurs options d'authentification différentes), vous pouvez désactiver cette fonctionnalité en suivant les instructions de la page Désactiver la gestion des identités au niveau du parc.

Configurations spécifiques aux fournisseurs

Cette section fournit des conseils de configuration pour les fournisseurs OIDC (tels qu'Azure AD et Okta), y compris un exemple de configuration que vous pouvez copier et modifier avec vos propres détails.

Azure AD

Il s'agit de la configuration par défaut pour configurer l'authentification avec Azure AD. Cette configuration permet au cluster d'obtenir des informations sur les utilisateurs et les groupes à partir d'Azure AD, et vous permet de configurer le contrôle des accès basé sur les rôles Kubernetes (RBAC) en fonction des groupes. Toutefois, l'utilisation de cette configuration vous limite à la récupération d'environ 200 groupes par utilisateur.

Si vous devez récupérer plus de 200 groupes par utilisateur, consultez les instructions pour Azure AD (Configuration avancée).

...
spec:
  authentication:
  - name: oidc-azuread
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      extraParams: prompt=consent, access_type=offline
      issuerURI: https://login.microsoftonline.com/TENANT_ID/v2.0
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: openid,email,offline_access
      userClaim: email

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Azure AD (Configuration avancée)

Cette configuration facultative pour Azure AD permet au cluster de récupérer des informations sur les utilisateurs et les groupes sans limitation du nombre de groupes par utilisateur, à l'aide de l'API Microsoft Graph. Pour en savoir plus sur les plates-formes compatibles avec cette configuration, consultez Informations sur la configuration du fournisseur d'identité.

Si vous devez récupérer moins de 200 groupes par utilisateur, nous vous recommandons d'utiliser la configuration par défaut à l'aide d'une ancre oidc dans votre ClientConfig. Pour en savoir plus, consultez les instructions pour Azure AD.

Tous les champs de l'exemple de configuration suivant sont requis.

...
spec:
  authentication:
  - name: azure
    azureAD:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      tenant: TENANT_UUID
      kubectlRedirectURI: http://localhost:PORT/callback
      groupFormat: GROUP_FORMAT
      userClaim: USER_CLAIM

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Remplacez GROUP_FORMAT par le format dans lequel vous souhaitez récupérer les informations de groupe. Ce champ peut prendre des valeurs correspondant aux valeurs ID ou NAME des groupes d'utilisateurs. Ce paramètre n'est disponible que pour les clusters dans les déploiements Google Distributed Cloud (sur site).

Okta

Vous trouverez ci-dessous la procédure à suivre pour configurer l'authentification en utilisant à la fois les utilisateurs et les groupes avec Okta comme fournisseur d'identité. Cette configuration permet au cluster de récupérer les revendications des utilisateurs et des groupes à l'aide d'un jeton d'accès et du point de terminaison userinfo d'Okta.

...
spec:
  authentication:
  - name: okta
    oidc:
      clientID: CLIENT_ID
      clientSecret: CLIENT_SECRET
      cloudConsoleRedirectURI: https://console.cloud.google.com/kubernetes/oidc
      enableAccessToken: true
      extraParams: prompt=consent
      groupsClaim: groups
      issuerURI: https://OKTA_ISSUER_URI/
      kubectlRedirectURI: http://localhost:PORT/callback
      scopes: offline_access,email,profile,groups
      userClaim: email

# Rest of the resource is managed by Google. DO NOT MODIFY.
...

Configurer les valeurs par défaut au niveau du parc

Vous pouvez spécifier une configuration par défaut au niveau du parc pour l'authentification. Avec cette configuration, chaque nouveau cluster que vous enregistrez dans le parc utilise automatiquement la configuration d'authentification que vous spécifiez.

Les clusters membres du parc existants ne sont pas automatiquement mis à jour lorsque vous spécifiez une configuration par défaut au niveau du parc. Vous pouvez éventuellement appliquer votre configuration par défaut à ces clusters. Pour en savoir plus sur la gestion de la configuration au niveau du parc, consultez Gérer les fonctionnalités au niveau du parc.

Une fois que vous avez défini une valeur par défaut au niveau du parc, toutes les modifications locales apportées à la configuration de l'authentification des clusters individuels sont écrasées lorsque le contrôleur de parc réconcilie le cluster avec la configuration par défaut.

Pour configurer une configuration par défaut au niveau du parc, procédez comme suit :

  1. Créez un ClientConfig dans un fichier nommé fleet-default.yaml. Pour en savoir plus sur la création du fichier, consultez les étapes de gcloud CLI dans la section Configurer des clusters.
  2. Pour appliquer la configuration par défaut au niveau du parc, exécutez l'une des commandes suivantes :

    • Si la fonctionnalité de service d'identité au niveau du parc n'est pas activée, activez-la et spécifiez la configuration par défaut au niveau du parc :

      gcloud container fleet identity-service enable --fleet-default-member-config=fleet-default.yaml
    • Si la fonctionnalité de service d'identité au niveau du parc est activée, appliquez la nouvelle configuration par défaut au niveau du parc :

      gcloud container fleet identity-service apply --fleet-default-member-config=default-config.yaml

    Les nouveaux clusters que vous enregistrez dans le parc utilisent cette configuration par défaut. Les clusters membres du parc existants n'héritent pas automatiquement de la nouvelle configuration par défaut.

  3. Pour appliquer la configuration par défaut à un cluster membre du parc existant, exécutez la commande suivante :

    gcloud container fleet identity-service apply --origin=fleet --membership=CLUSTER_NAME

Supprimer la configuration par défaut au niveau du parc

Pour supprimer la configuration par défaut, exécutez la commande suivante :

gcloud container fleet identity-service delete --fleet-default-member-config

Les nouveaux clusters que vous enregistrez dans le parc n'utilisent pas automatiquement de configuration d'authentification.

Vérifier la configuration du service d'identité

Une fois la configuration au niveau du parc terminée, vous pouvez vérifier si les clusters de votre parc ont été correctement configurés avec la configuration du service d'identité que vous avez spécifiée.

Console

  1. Dans la console Google Cloud , accédez à la page Gestionnaire de fonctionnalités.

    Accéder au gestionnaire de fonctionnalités

    Toutes les fonctionnalités activées sont indiquées comme Activée dans leur panneau.

  2. Cliquez sur Détails dans le panneau Identity Service. Un panneau de détails affiche l'état de vos clusters enregistrés.

gcloud

Exécutez la commande suivante :

gcloud container fleet identity-service describe

Étape suivante

Après avoir configuré les clusters, procédez à la configuration de l'accès des utilisateurs.