Gérer l'accès aux comptes de service

Cette page explique comment accorder, modifier et révoquer l'accès d'un compte principal à un seul compte de service. Pour gérer l'accès d'un compte principal à tous les comptes de service d'un projet, d'un dossier ou d'une organisation, vous devez gérer son accès au niveau du projet, du dossier ou de l'organisation.

Dans Identity and Access Management (IAM), l'accès est géré via les stratégies IAM. Une stratégie IAM est associée à une ressource Google Cloud. Chaque stratégie contient un ensemble de liaisons de rôles qui associent un ou plusieurs comptes principaux, tels que des utilisateurs ou des comptes de service, à un rôle IAM. Ces liaisons de rôles accordent les rôles spécifiés aux comptes principaux, à la fois sur la ressource associée à la stratégie et sur tous les descendants de cette ressource. Pour en savoir plus sur les stratégies IAM, consultez la page Comprendre les stratégies.

Les comptes de service sont à la fois des ressources auxquelles d'autres comptes principaux peuvent être autorisés à accéder et des comptes principaux auxquels l'accès à d'autres ressources peut être accordé. Cette page traite les comptes de service comme des ressources et explique comment autoriser d'autres comptes principaux à y accéder. Pour savoir comment accorder à un compte de service l'accès à d'autres ressources, consultez les guides suivants :

Cette page explique comment gérer l'accès aux comptes de service à l'aide de Google Cloud Console, de l'outil de ligne de commande gcloud et de l'API REST. Vous pouvez également gérer les accès à l'aide des bibliothèques clientes IAM.

Avant de commencer

En savoir plus sur les comptes de service

Autorisations requises

Pour gérer l'accès à un compte de service, vous devez disposer d'un rôle comprenant les autorisations suivantes :

  • iam.serviceAccounts.get
  • iam.serviceAccounts.list
  • iam.serviceAccounts.getIamPolicy
  • iam.serviceAccounts.setIamPolicy

Pour obtenir ces autorisations tout en suivant le principe du moindre privilège, demandez à votre administrateur de vous attribuer l'un des rôles suivants :

  • Administrateur de compte de service (roles/iam.serviceAccountAdmin)
  • Administrateur de sécurité (roles/iam.securityAdmin)

Votre administrateur peut également vous attribuer un autre rôle qui inclut les autorisations requises, par exemple un rôle personnalisé ou un rôle prédéfini moins restrictif.

Afficher l'accès actuel

La section suivante explique comment utiliser Cloud Console, l'outil gcloud et l'API REST pour afficher qui a accès à un compte de service. Vous pouvez également afficher les accès à l'aide des bibliothèques clientes IAM pour obtenir la stratégie IAM du compte de service.

Console

  1. Dans Cloud Console, accédez à la page Comptes de service.

    Accéder à la page Comptes de service

  2. Sélectionnez un projet.

  3. Cliquez sur l'adresse e-mail du compte de service.

  4. Accédez à l'onglet Autorisations. La section Comptes principaux ayant accès à ce compte de service répertorie tous les comptes principaux auxquels un rôle a été attribué sur le compte de service.

    Cette liste inclut les comptes principaux dont l'accès provient de rôles attribués sur des ressources parentes. Pour en savoir plus sur l'héritage des stratégies, consultez la section Héritage des stratégies et hiérarchie des ressources.

  5. Facultatif : Pour afficher les attributions de rôles sur les comptes de service gérés par Google, cochez la case Inclure les attributions de rôles fournies par Google.

gcloud

Pour savoir qui a accès à votre compte de service, obtenez la stratégie IAM pour le compte de service. Pour apprendre à interpréter les stratégies IAM, consultez la page Comprendre les stratégies.

Pour obtenir la stratégie IAM du compte de service, exécutez la commande get-iam-policy pour le compte de service :

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Indiquez les valeurs suivantes :

  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format suivant :
  • FORMAT : format souhaité pour la stratégie. Utilisez json ou yaml.
  • PATH : le chemin d'accès à un nouveau fichier de sortie pour la stratégie.

Par exemple, la commande suivante récupère la stratégie du compte de service my-service-account et l'enregistre dans votre répertoire d'accueil au format JSON :

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

Pour savoir qui a accès à votre compte de service, obtenez la stratégie IAM pour le compte de service. Pour apprendre à interpréter les stratégies IAM, consultez la page Comprendre les stratégies.

La méthode serviceAccounts.getIamPolicy permet d'obtenir la stratégie IAM d'un compte de service.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • POLICY_VERSION : version de la stratégie à renvoyer. Les requêtes doivent spécifier la version de stratégie la plus récente, qui est la version 3. Pour plus d'informations, consultez la section Spécifier une version de stratégie lors de l'obtention d'une stratégie.

Méthode HTTP et URL :

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Corps JSON de la requête :

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

La réponse contient la stratégie IAM du compte de service. Exemple :

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Attribuer ou révoquer un rôle unique

Vous pouvez utiliser Cloud Console et l'outil gcloud pour accorder ou révoquer rapidement un rôle unique pour un seul compte principal, sans modifier directement la stratégie IAM du compte de service. Les types de membres courants incluent les comptes principaux Google, les comptes de service, les Google Groupes et les domaines. Pour obtenir la liste de tous les types de comptes principaux, consultez la page Concepts liés à l'identité.

Attribuer un rôle unique

Pour attribuer un seul rôle à un compte principal, procédez comme suit :

Console

  1. Dans Cloud Console, accédez à la page Comptes de service.

    Accéder à la page Comptes de service

  2. Sélectionnez un projet.

  3. Cliquez sur l'adresse e-mail du compte de service.

  4. Accédez à l'onglet Autorisations, puis recherchez la section Comptes principaux ayant accès à ce compte de service.

  5. Sélectionnez un compte principal auquel attribuer un rôle :

    • Pour attribuer un rôle à un compte principal qui dispose déjà d'autres rôles sur le compte de service, recherchez la ligne contenant l'adresse e-mail du compte principal, puis cliquez sur Modifier le compte principal sur cette ligne, puis sur Ajouter un autre rôle.

      Si vous souhaitez attribuer un rôle à un compte de service géré par Google, vous devez cocher la case Inclure les attributions de rôles fournies par Google pour afficher son adresse e-mail.

    • Pour accorder l'accès à un compte principal qui ne dispose pas déjà d'autres rôles sur le compte de service, cliquez sur Accorder l'accès, puis saisissez l'adresse e-mail du compte principal.

  6. Sélectionnez un rôle à attribuer dans la liste déroulante. Pour respecter les bonnes pratiques de sécurité, choisissez un rôle qui n'inclut que les autorisations dont votre compte principal a besoin.

  7. Facultatif : ajoutez une condition au rôle.

  8. Cliquez sur Enregistrer. Le rôle est attribué au compte principal sur le compte de service.

gcloud

Pour attribuer rapidement un rôle à un compte principal, exécutez la commande add-iam-policy-binding :

gcloud iam service-accounts add-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_ID \
    --condition=CONDITION

Indiquez les valeurs suivantes :

  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • PRINCIPAL : l'identifiant du compte principal, qui se présente généralement sous la forme suivante : PRINCIPAL-TYPE:ID. Exemple : user:my-user@example.com. Pour obtenir la liste complète des valeurs possibles pour PRINCIPAL, consultez la documentation de référence sur les liaisons de stratégie.

    Pour le type de membre user, le nom de domaine indiqué dans l'identifiant doit être un domaine Google Workspace ou Cloud Identity. Pour savoir comment configurer un domaine Cloud Identity, consultez la présentation de Cloud Identity.

  • ROLE_ID : nom du rôle que vous souhaitez attribuer. Exemple :roles/iam.serviceAccountUser Pour obtenir la liste des rôles, consultez la page Comprendre les rôles.

  • CONDITION : facultatif. Condition à ajouter à la liaison de rôle. Pour en savoir plus sur les conditions, consultez la présentation des conditions.

Par exemple, pour attribuer le rôle "Utilisateur du compte de service" à l'utilisateur my-user@example.com pour le compte de service my-service-account@my-project.iam.gserviceaccount.com, procédez comme suit :

gcloud iam service-accounts add-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Révoquer un rôle unique

Pour révoquer un seul rôle d'un compte principal, procédez comme suit :

Console

  1. Dans Cloud Console, accédez à la page Comptes de service.

    Accéder à la page Comptes de service

  2. Sélectionnez un projet.

  3. Cliquez sur l'adresse e-mail du compte de service.

  4. Accédez à l'onglet Autorisations, puis recherchez la section Comptes principaux ayant accès à ce compte de service.

  5. Recherchez la ligne contenant l'adresse e-mail du compte principal dont vous souhaitez révoquer l'accès. Cliquez ensuite sur Modifier le compte principal sur cette ligne.

  6. Cliquez sur le bouton Supprimer () pour chaque rôle que vous souhaitez révoquer, puis cliquez sur Enregistrer.

gcloud

Pour révoquer rapidement un rôle d'un utilisateur, exécutez la commande remove-iam-policy-binding :

gcloud iam service-accounts remove-iam-policy-binding SA_ID \
    --member=PRINCIPAL --role=ROLE_ID

Indiquez les valeurs suivantes :

  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • PRINCIPAL : l'identifiant du compte principal, qui se présente généralement sous la forme suivante : PRINCIPAL-TYPE:ID. Exemple : user:my-user@example.com. Pour obtenir la liste complète des valeurs possibles pour PRINCIPAL, consultez la documentation de référence sur les liaisons de stratégie.

    Pour le type de membre user, le nom de domaine indiqué dans l'identifiant doit être un domaine Google Workspace ou Cloud Identity. Pour savoir comment configurer un domaine Cloud Identity, consultez la présentation de Cloud Identity.

  • ROLE_ID : nom du rôle que vous souhaitez révoquer. Exemple :roles/iam.serviceAccountUser Pour obtenir la liste des rôles, consultez la page Comprendre les rôles.

Par exemple, pour révoquer le rôle "Utilisateur du compte de service" associé à l'utilisateur my-user@example.com pour le compte de service my-service-account@my-project.iam.gserviceaccount.com, procédez comme suit :

gcloud iam service-accounts remove-iam-policy-binding my-service-account@my-project.iam.gserviceaccount.com \
    --member=user:my-user@example.com --role=roles/iam.serviceAccountUser

Attribuer ou révoquer plusieurs rôles

Pour effectuer des modifications d'accès à grande échelle impliquant l'attribution et la révocation de plusieurs rôles, utilisez le modèle lecture-modification-écriture pour mettre à jour la stratégie IAM du compte de service :

  1. Lire la stratégie actuelle en appelant getIamPolicy().
  2. Modifier la stratégie renvoyée, à l’aide d’un éditeur de texte ou de façon automatisée, afin d'ajouter ou de supprimer des comptes principaux ou des liaisons de rôles.
  3. Écrire la stratégie mise à jour en appelant setIamPolicy().

Cette section explique comment utiliser l'outil gcloud et l'API REST pour mettre à jour la stratégie. Vous pouvez également mettre à jour la stratégie à l'aide des bibliothèques clientes IAM.

Obtenir la stratégie actuelle

gcloud

Pour obtenir la stratégie IAM du compte de service, exécutez la commande get-iam-policy pour le compte de service :

gcloud iam service-accounts get-iam-policy SA_ID --format=FORMAT > PATH

Indiquez les valeurs suivantes :

  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format suivant :
  • FORMAT : format souhaité pour la stratégie. Utilisez json ou yaml.
  • PATH : le chemin d'accès à un nouveau fichier de sortie pour la stratégie.

Par exemple, la commande suivante récupère la stratégie du compte de service my-service-account et l'enregistre dans votre répertoire d'accueil au format JSON :

gcloud iam service-accounts get-iam-policy my-service-account --format json > ~/policy.json

REST

La méthode serviceAccounts.getIamPolicy permet d'obtenir la stratégie IAM d'un compte de service.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • POLICY_VERSION : version de la stratégie à renvoyer. Les requêtes doivent spécifier la version de stratégie la plus récente, qui est la version 3. Pour plus d'informations, consultez la section Spécifier une version de stratégie lors de l'obtention d'une stratégie.

Méthode HTTP et URL :

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:getIamPolicy

Corps JSON de la requête :

{
  "options": {
    "requestedPolicyVersion": POLICY_VERSION
  }
}

Pour envoyer votre requête, développez l'une des options suivantes :

La réponse contient la stratégie IAM du compte de service. Exemple :

{
  "version": 1,
  "etag": "BwWKmjvelug=",
  "bindings": [
    {
      "role": "roles/serviceAccountAdmin",
      "members": [
        "user:admin@example.com"
      ]
    }
  ]
}

Enregistrez la réponse dans un fichier du type approprié (json ou yaml).

Modifier la stratégie

De façon automatisée ou à l'aide d'un éditeur de texte, modifiez la copie locale de la stratégie de votre projet afin de refléter les rôles que vous souhaitez accorder ou révoquer aux utilisateurs donnés.

Pour vous assurer de ne pas écraser les autres modifications de la stratégie, ne modifiez pas et ne supprimez pas le champ etag de la stratégie. Le champ etag identifie l'état actuel de la stratégie. Lorsque vous définissez la stratégie modifiée, Cloud IAM compare la valeur etag de la requête avec la valeur etag existante et n'écrit la stratégie que si les valeurs correspondent.

Attribuer un rôle

Pour attribuer des rôles à vos comptes principaux, modifiez les liaisons de rôles dans la stratégie. Pour en savoir plus sur les rôles que vous pouvez attribuer, consultez la section Comprendre les rôles ou Afficher les rôles pouvant être attribués pour le compte de service.

Pour accorder un rôle déjà inclus dans la stratégie, ajoutez le compte principal à une liaison de rôle existante :

gcloud

Modifiez la stratégie renvoyée en ajoutant le compte principal à une liaison de rôle existante. Notez que cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, imaginons que la stratégie renvoyée contienne la liaison de rôle suivante, qui attribue le rôle "Utilisateur du compte de service" (roles/iam.serviceAccountUser) à kai@example.com :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Pour accorder ce même rôle à raha@example.com, ajoutez raha@example.com à la liaison de rôle existante :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

REST

Modifiez la stratégie renvoyée en ajoutant le compte principal à une liaison de rôle existante. Notez que cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, imaginons que la stratégie renvoyée contienne la liaison de rôle suivante, qui attribue le rôle "Utilisateur du compte de service" (roles/iam.serviceAccountUser) à kai@example.com :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com"
  ]
}

Pour accorder ce même rôle à raha@example.com, ajoutez raha@example.com à la liaison de rôle existante :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Pour accorder un rôle qui n'est pas encore inclus dans la stratégie, ajoutez une liaison de rôle :

gcloud

Modifiez la stratégie renvoyée en ajoutant une nouvelle liaison de rôle qui accorde le rôle au compte principal. Cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, pour accorder le rôle "Créateur de jetons du compte de service" (roles/iam.serviceAccountTokenCreator) à raha@example.com, ajoutez la liaison de rôle suivante au tableau bindings de la stratégie :

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

REST

Modifiez la stratégie renvoyée en ajoutant une nouvelle liaison de rôle qui accorde le rôle au compte principal. Cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, pour accorder le rôle "Créateur de jetons du compte de service" (roles/iam.serviceAccountTokenCreator) à raha@example.com, ajoutez la liaison de rôle suivante au tableau bindings de la stratégie :

{
  "role": "roles/iam.serviceAccountTokenCreator",
  "members": [
    "user:raha@example.com"
  ]
}

Révoquer un rôle

Pour révoquer un rôle, supprimez le compte principal de la liaison de rôle. S'il n'y a pas d'autres comptes principaux dans la liaison de rôle, supprimez toute la liaison de rôle de la stratégie.

gcloud

Modifiez la stratégie renvoyée en supprimant le compte principal ou la liaison de rôle entière. Cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, imaginons que la stratégie renvoyée contienne la liaison de rôle suivante, qui accorde à kai@example.com et à raha@example.com le rôle "Utilisateur du compte de service" (roles/iam.serviceAccountUser) :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Pour révoquer le rôle de kai@example.com, supprimez kai@example.com de la liaison de rôle :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Pour révoquer le rôle de kai@example.com et de raha@example.com, supprimez la liaison de rôle de la stratégie.

REST

Modifiez la stratégie renvoyée en supprimant le compte principal ou la liaison de rôle entière. Cette modification de stratégie ne prendra effet que lorsque vous aurez défini la stratégie mise à jour.

Par exemple, imaginons que la stratégie renvoyée contienne la liaison de rôle suivante, qui accorde à kai@example.com et à raha@example.com le rôle "Utilisateur du compte de service" (roles/iam.serviceAccountUser) :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:kai@example.com",
    "user:raha@example.com"
  ]
}

Pour révoquer le rôle de kai@example.com, supprimez kai@example.com de la liaison de rôle :

{
  "role": "roles/iam.serviceAccountUser",
  "members": [
    "user:raha@example.com"
  ]
}

Pour révoquer le rôle de kai@example.com et de raha@example.com, supprimez la liaison de rôle de la stratégie.

Définir la stratégie

Après avoir modifié la stratégie pour accorder et révoquer les rôles souhaités, appelez setIamPolicy() pour effectuer les mises à jour.

gcloud

Pour définir la stratégie IAM de la ressource, exécutez la commande set-iam-policy pour le compte de service :

gcloud iam service-accounts set-iam-policy SA_ID PATH

Indiquez les valeurs suivantes :

  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • PATH : le chemin d'accès à un fichier contenant la nouvelle stratégie.

La réponse contient la stratégie mise à jour.

Par exemple, la commande suivante définit la stratégie stockée dans policy.json en tant que stratégie pour le compte de service my-service-account@my- project.iam.gserviceaccount.com :

gcloud iam service-accounts set-iam-policy my-service-account@my-project.iam.gserviceaccount.com \
    ~/policy.json

REST

La méthode serviceAccounts.setIamPolicy définit une stratégie IAM mise à jour pour le compte de service.

Avant d'utiliser les données de requête, effectuez les remplacements suivants :

  • PROJECT_ID : ID de votre projet Google Cloud. Les ID de projet sont des chaînes alphanumériques, telles que my-project.
  • SA_ID : ID de votre compte de service. Il peut s'agir de l'adresse e-mail du compte de service au format SA_NAME@PROJECT_ID.iam.gserviceaccount.com ou de l'ID numérique unique du compte de service.

  • POLICY : représentation JSON de la stratégie que vous souhaitez définir. Pour en savoir plus sur le format d'une stratégie, consultez la documentation de référence sur les stratégies.

    Par exemple, pour définir la stratégie présentée à l'étape précédente, remplacez policy par ce qui suit :

    {
      "version": 1,
      "etag": "BwUqLaVeua8=",
      "bindings": [
        {
          "role": "roles/iam.serviceAccountUser",
          "members": [
            "user:robin@example.com"
          ]
        },
        {
          "role": "roles/serviceAccountAdmin",
          "members": [
            "user:admin@example.com"
          ]
        }
      ]
    }
    

Méthode HTTP et URL :

POST https://iam.googleapis.com/v1/projects/PROJECT_ID/serviceAccounts/SA_ID:setIamPolicy

Corps JSON de la requête :

{
  "policy": POLICY
}

Pour envoyer votre requête, développez l'une des options suivantes :

La réponse contient la stratégie mise à jour.

Étape suivante

Faites l'essai

Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.

Essai gratuit