Télécharger la configuration des identifiants et accorder l'accès

Cette page explique comment configurer vos charges de travail pour accéder aux ressources Google Cloudà l'aide de la fédération d'identité de charge de travail et comment accéder directement aux ressources ou emprunter l'identité d'un compte de service.

Vous trouverez des instructions de bout en bout spécifiques à chaque cas d'utilisation dans les guides de configuration pour AWS et Azure, Active Directory, GitHub, GitLab et autres pipelines de déploiement, et Kubernetes.

Autoriser votre charge de travail externe à accéder aux ressources Google Cloud

Pour autoriser votre charge de travail à accéder aux ressources Google Cloud , nous vous recommandons d'accorder un accès direct aux ressources au compte principal. Dans ce cas, le compte principal est l'utilisateur fédéré. Certains Google Cloud produits sont soumis à des limites de l'API Google Cloud. Si votre charge de travail appelle un point de terminaison d'API présentant une limite, vous pouvez emprunter l'identité d'un compte de service. Dans ce cas, le compte principal est le compte de serviceGoogle Cloud , qui agit en tant qu'identité. Vous accordez l'accès au compte de service sur la ressource.

Accès direct aux ressources

Vous pouvez accorder l'accès à une identité fédérée directement sur les ressources à l'aide de la console Google Cloud ou de gcloud CLI.

Console

Pour attribuer des rôles IAM directement sur une ressource à l'aide de la console Google Cloud, vous devez accéder à la page de la ressource, puis attribuer le rôle. L'exemple suivant montre comment accéder à la page Cloud Storage et accorder le rôle Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) à une identité fédérée directement sur un bucket Cloud Storage.

  1. Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.

    Accéder à la page "Buckets"

  2. Dans la liste des buckets, cliquez sur le nom du bucket pour lequel vous souhaitez attribuer le rôle.

  3. Sélectionnez l'onglet Autorisations en haut de la page.

  4. Cliquez sur le bouton  Accorder l'accès.

    La boîte de dialogue Ajouter des entités principales s'affiche.

  5. Dans le champ Nouveaux comptes principaux, saisissez une ou plusieurs identités nécessitant un accès au bucket.

    Par sujet

    principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • POOL_ID : ID du pool de charges de travail
    • SUBJECT : sujet individuel mappé à partir de votre fournisseur d'identité (par exemple, administrator@example.com)

    Par groupe

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • WORKLOAD_POOL_ID : ID du pool de charges de travail
    • GROUP : groupe mappé à partir de votre fournisseur d'identité (par exemple, administrator-group@example.com)

    Par attribut

    principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
    

    Remplacez les éléments suivants :

    • PROJECT_NUMBER : numéro de projet
    • WORKLOAD_POOL_ID : ID du pool de charges de travail
    • ATTRIBUTE_NAME : l'un des attributs mappés à partir de votre fournisseur d'identité
    • ATTRIBUTE_VALUE : valeur de l'attribut
  6. Sélectionnez un ou plusieurs rôles dans le menu déroulant Select a role (Sélectionnez un rôle). Les rôles sélectionnés apparaissent dans le volet et sont accompagnés d'une brève description des autorisations auxquelles ils correspondent.

  7. Cliquez sur Enregistrer.

gcloud

Pour accorder des rôles IAM sur une ressource d'un projet à l'aide de gcloud CLI, procédez comme suit :

  1. Obtenez le numéro du projet dans lequel la ressource est définie.

    gcloud projects describe $(gcloud config get-value core/project) --format=value\(projectNumber\)
    
  2. Accordez l'accès à la ressource.

    Pour attribuer le rôle Lecteur d'objets de stockage (roles/storage.objectViewer) à des identités externes qui répondent à certains critères à l'aide de gcloud CLI, exécutez la commande suivante.

    Par sujet

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Par groupe

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Par attribut

    gcloud storage buckets add-iam-policy-binding BUCKET_ID \
        --role=roles/storage.objectViewer \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Remplacez les éléments suivants :

    • BUCKET_ID : bucket pour lequel vous souhaitez accorder l'accès.
    • PROJECT_NUMBER : numéro du projet contenant le pool d'identités de charge de travail
    • POOL_ID : ID du pool d'identités de charge de travail.
    • SUBJECT : valeur attendue pour l'attribut que vous avez mappé sur google.subject.
    • GROUP : valeur attendue pour l'attribut que vous avez mappé sur google.groups.
    • ATTRIBUTE_NAME : nom d'un attribut personnalisé dans votre mappage d'attributs
    • ATTRIBUTE_VALUE : valeur de l'attribut personnalisé dans votre mappage d'attributs

    Vous pouvez attribuer des rôles à n'importe quelle Google Cloud ressource compatible avec les stratégies d'autorisation IAM.

Emprunter l'identité d'un compte de service

  1. Pour créer un compte de service pour la charge de travail externe, procédez comme suit :

    1. Enable the IAM, Security Token Service, and Service Account Credentials APIs.

      Enable the APIs

    2. Créez un compte de service qui représente la charge de travail. Nous vous recommandons d'utiliser un compte de service dédié pour chaque charge de travail. Le compte de service ne doit pas obligatoirement se trouver dans le même projet que le pool d'identités de charge de travail, mais vous devez faire référence au projet qui contient le compte de service.

    3. Accordez au compte de service l'accès aux ressources auxquelles vous souhaitez que les identités externes accèdent.

  1. Pour autoriser l'identité fédérée à emprunter l'identité du compte de service, procédez comme suit:

    Console

    Pour attribuer des rôles IAM à une identité fédérée avec un compte de service à l'aide de la console Google Cloud, procédez comme suit :

    Compte de service dans le même projet

    1. Pour accorder l'accès à l'aide de l'emprunt d'identité d'un compte de service dans le même projet, procédez comme suit :

      1. Accédez à la page Pools d'identités de charge de travail.

        Accéder aux pools d'identité de charge de travail

      2. Sélectionnez Accorder l'accès.

      3. Dans la boîte de dialogue Accorder l'accès au compte de service, sélectionnez Accorder l'accès à l'aide de l'emprunt d'identité du compte de service.

      4. Dans la liste Comptes de service, sélectionnez le compte de service pour les identités externes à emprunter, puis procédez comme suit :

      5. Pour choisir les identités du pool qui peuvent emprunter l'identité du compte de service, effectuez l'une des actions suivantes :

        • Pour n'autoriser que les identités spécifiques du pool d'identités de charge de travail à emprunter l'identité du compte de service, sélectionnez Uniquement les identités correspondant au filtre.

        • Dans la liste Nom de l'attribut, sélectionnez l'attribut sur lequel vous souhaitez filtrer les données.

        • Dans le champ Valeur d'attribut, saisissez la valeur attendue de l'attribut. Par exemple, si vous utilisez un mappage d'attribut google.subject=assertion.sub, définissez le nom de l'attribut sur subject et la valeur d'attribut sur la valeur de la revendication sub dans les jetons émis par votre fournisseur d'identité externe.

      6. Pour enregistrer la configuration, cliquez sur Enregistrer, puis sur Ignorer.

    Compte de service dans un autre projet

    1. Pour accorder l'accès à l'aide de l'emprunt d'identité d'un compte de service pour un compte de service dans un autre projet, procédez comme suit :

      1. Accéder à la page Comptes de service.

        Accéder à la page "Comptes de service"

      2. Sélectionnez le compte de service que vous souhaitez usurper.

      3. Cliquez sur Gérer l'accès.

      4. Cliquez sur Ajouter un compte principal.

      5. Dans le champ Nouveau compte principal, saisissez l'identifiant de l'un des comptes principaux suivants pour les identités de votre pool qui usurperont l'identité du compte de service.

        Par sujet

        principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER : numéro de projet
        • POOL_ID : ID du pool de charges de travail
        • SUBJECT : sujet individuel mappé à partir de votre fournisseur d'identité (par exemple, administrator@example.com)

        Par groupe

        principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER : numéro de projet
        • WORKLOAD_POOL_ID : ID du pool de charges de travail
        • GROUP : groupe mappé à partir de votre fournisseur d'identité (par exemple, administrator-group@example.com)

        Par attribut

        principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER : numéro de projet
        • WORKLOAD_POOL_ID : ID du pool de charges de travail
        • ATTRIBUTE_NAME : l'un des attributs mappés à partir de votre fournisseur d'identité
        • ATTRIBUTE_VALUE : valeur de l'attribut

        Par piscine

        principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/*
        

        Remplacez les éléments suivants :

        • PROJECT_NUMBER : numéro de projet
        • WORKLOAD_POOL_ID : ID du pool de charges de travail
      6. Dans Sélectionner un rôle, sélectionnez le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser).

      7. Pour enregistrer la configuration, cliquez sur Enregistrer.

    gcloud

    Pour accorder le rôle Utilisateur Workload Identity (roles/iam.workloadIdentityUser) à un compte principal ou à un ensemble de comptes principaux fédérés, exécutez la commande suivante. Pour en savoir plus sur les identifiants de compte principal de la fédération d'identité de charge de travail, consultez la section Types de compte principal.

    Par sujet

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/iam.workloadIdentityUser \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT"

    Par groupe

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/iam.workloadIdentityUser \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/group/GROUP"

    Par attribut

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_EMAIL \
        --role=roles/iam.workloadIdentityUser \
        --member="principalSet://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/POOL_ID/attribute.ATTRIBUTE_NAME/ATTRIBUTE_VALUE"

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_EMAIL : adresse e-mail du compte de service
    • PROJECT_NUMBER : numéro du projet contenant le pool d'identités de charge de travail
    • POOL_ID : ID du pool d'identités de charge de travail.
    • SUBJECT : valeur attendue pour l'attribut que vous avez mappé sur google.subject.
    • GROUP : valeur attendue pour l'attribut que vous avez mappé sur google.groups.
    • ATTRIBUTE_NAME : nom d'un attribut personnalisé dans votre mappage d'attributs
    • ATTRIBUTE_VALUE : valeur de l'attribut personnalisé dans votre mappage d'attributs

Télécharger la configuration

Pour permettre à votre charge de travail d'accéder aux bibliothèques clientes, vous devez d'abord télécharger et configurer les identifiants par défaut de l'application en procédant comme suit :

  1. Dans la console Google Cloud, accédez à la page Pools d'identités de charge de travail.

    Accéder aux pools d'identité de charge de travail
  2. Dans le tableau, sélectionnez votre pool pour accéder à sa page d'informations.

  3. Cliquez sur Accorder l'accès.

  4. Sélectionnez Accorder l'accès à l'aide d'identités fédérées (recommandé)

  5. Pour télécharger les identifiants par défaut de l'application afin que votre charge de travail puisse accéder aux bibliothèques clientes, procédez comme suit :

    1. Cliquez sur Télécharger la configuration.

    2. Dans la boîte de dialogue Configurer votre application, procédez comme suit :

      1. Dans la liste déroulante Fournisseur, sélectionnez votre fournisseur.

      2. Dans Chemin d'accès au jeton OIDC ou Chemin d'accès à l'assertion SAML, saisissez le chemin d'accès au jeton ou à l'assertion.

      3. Dans la liste déroulante Type de format, sélectionnez le format.

    3. Cliquez sur Télécharger la configuration et notez le chemin d'accès dans lequel vous avez enregistré le fichier.