Utiliser l'usurpation d'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 pas d'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'utiliser l'emprunt d'identité de 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 de lui accorder 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 de l'une des manières suivantes:

Utiliser la CLI gcloud

gcloud CLI fournit un moyen simple d'utiliser l'emprunt d'identité de compte de service. Cette méthode fonctionne bien lorsque vous devez utiliser un compte de service pour accéder aux ressources ou aux services Google Cloud à l'aide de gcloud CLI.

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

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

Pour utiliser l'emprunt d'identité pour une commande de gcloud CLI spécifique, utilisez l'option --impersonate-service-account. Par exemple, la commande suivante répertorie 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 défaut par un compte de service, utilisez la commande gcloud CLI:

gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

Lorsque cette propriété de configuration est définie, 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 à la ressource pour chaque commande. Le compte principal connecté à gcloud CLI doit disposer des autorisations requises 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 ADC (Identifiants par défaut de l'application) local. 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

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

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

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

Si aucune des méthodes précédentes ne répond à votre cas d'utilisation, vous devez générer et gérer des jetons de courte durée. Par exemple, utilisez un autre type d'identifiant éphémère (autre qu'un jeton d'accès) ou si vous devez emprunter l'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