Emprunter l'identité d'un compte de service

Lorsque le compte principal que vous utilisez ne dispose pas des autorisations nécessaires pour accomplir votre tâche ou si vous souhaitez utiliser un compte de service dans un environnement de développement, vous pouvez utiliser l'emprunt d'identité du compte de service.

Lorsque vous utilisez l'emprunt d'identité d'un compte de service, vous commencez par un compte principal authentifié (votre compte Google ou un compte de service) et vous demandez des identifiants éphémères pour un compte de service disposant de l'autorisation requise par votre cas d'utilisation. Le compte principal authentifié doit disposer des autorisations nécessaires pour emprunter l'identité du compte de service.

L'emprunt d'identité d'un compte de service est plus sécurisé qu'une clé de compte de service, car il nécessite une identité authentifiée antérieure, et les identifiants créés à l'aide de l'emprunt d'identité ne sont pas conservés. En comparaison, l'authentification avec une clé de compte de service ne nécessite aucune authentification préalable, et la clé persistante est un identifiant à haut risque si elle est exposée.

Pour plus d'informations sur l'emprunt de l'identité d'un compte de service, consultez la page Emprunter l'identité d'un compte de service.

Avant de commencer

Avant d'avoir recours à l'emprunt d'identité d'un compte de service, vous devez activer les API requises et vous assurer que vous disposez des rôles requis.

Activer les API

Pour emprunter l'identité d'un compte de service, vous devez activer l'API Service Account Credentials dans votre projet.

Activer l'API

Rôles requis

Pour vous assurer que le compte principal dispose des autorisations nécessaires pour emprunter l'identité d'un compte de service, demandez à votre administrateur d'accorder au compte principal le rôle IAM Créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur le compte de service. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient l'autorisation iam.serviceAccounts.getAccessToken, qui est requise pour emprunter l'identité d'un compte de service.

Votre administrateur peut également attribuer au compte principal cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.

Vous devez attribuer ces rôles à votre compte principal, même lorsque vous travaillez dans un projet que vous avez créé.

Pour en savoir plus sur les rôles requis pour l'emprunt d'identité, consultez la section Rôles pour l'authentification du compte de service.

Vous pouvez emprunter l'identité d'un compte de service à l'aide des méthodes suivantes :

Utiliser la CLI gcloud

gcloud CLI constitue un moyen simple d'avoir recours à l'emprunt d'identité d'un compte de service. Cette méthode est adaptée lorsque vous devez utiliser un compte de service pour accéder à des ressources ou services Google Cloud à l'aide de gcloud CLI.

Vous pouvez emprunter l'identité d'un compte de service pour une commande gcloud CLI spécifique, ou configurer gcloud CLI afin qu'elle utilise automatiquement l'emprunt d'identité pour chaque commande.

Utiliser l'emprunt d'identité pour une commande gcloud CLI spécifique

Pour utiliser l'emprunt d'identité pour une commande gcloud CLI spécifique, utilisez l'option --impersonate-service-account. Par exemple, la commande suivante liste les buckets de stockage, en utilisant l'identité et l'accès fournis par le compte de service spécifié :

gcloud storage buckets list --impersonate-service-account=SERVICE_ACCT_EMAIL

Lorsque vous utilisez cette option, gcloud CLI demande des identifiants éphémères pour le compte de service spécifié, et les utilise pour s'authentifier auprès de l'API et autoriser l'accès. Le compte principal connecté à gcloud CLI (généralement votre compte utilisateur) doit disposer de l'autorisation requise sur le compte de service.

Utiliser l'emprunt d'identité avec gcloud CLI par défaut

Pour configurer gcloud CLI afin d'utiliser l'identité et l'accès fournis par un compte de service par défaut, utilisez la commande gcloud CLI config :

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Une fois cette propriété config définie, gcloud CLI demande des identifiants éphémères pour le compte de service spécifié, puis les utilise pour s'authentifier auprès de l'API et autoriser l'accès à la ressource pour chaque commande. Le compte principal connecté à gcloud CLI doit disposer de l'autorisation requise sur le compte de service.

Configurer les identifiants par défaut de l'application pour utiliser les bibliothèques clientes

Vous pouvez emprunter l'identité d'un compte de service pour configurer un fichier local d'identifiants par défaut de l'application (fichier ADC). Les bibliothèques clientes compatibles avec l'emprunt d'identité peuvent utiliser ces identifiants automatiquement. Les fichiers ADC locaux créés à l'aide de l'emprunt d'identité sont compatibles avec les langages suivants :

  • C#
  • Go
  • Java
  • Node.js
  • Python

Empruntez l'identité d'un compte de service pour créer un fichier ADC local :

gcloud auth application-default login --impersonate-service-account SERVICE_ACCT_EMAIL

Vous pouvez maintenant utiliser les bibliothèques clientes dans des langages compatibles de la même manière qu'après avoir configuré un fichier ADC local avec des identifiants utilisateur. Les identifiants sont automatiquement trouvés par les bibliothèques d'authentification. Pour en savoir plus, consultez la section S'authentifier à l'aide des bibliothèques clientes.

Générer et gérer des identifiants éphémères

Si aucune des méthodes précédentes ne résout votre cas d'utilisation, vous devez générer et gérer des jetons de courte durée. Vous procéderez par exemple de la sorte si vous avez besoin d'un type d'identifiant éphémère différent (autre qu'un jeton d'accès), ou si vous devez utiliser l'emprunt d'identité dans un environnement de production.

Pour en savoir plus sur la génération de jetons de courte durée, consultez la section Créer des identifiants éphémères pour un compte de service.

Étapes suivantes