Créer des identifiants éphémères pour un compte de service

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.

Cette page explique comment emprunter l'identité d'un compte de service en créant des identifiants éphémères pour ce compte de service.

Certaines architectures système sont conçues autour des comptes de service disposant de privilèges, qui sont conçus pour être utilisés ensemble. Dans ce cas, vous devrez peut-être créer vos identifiants pour plusieurs comptes de service.

À propos de la création d'identifiants éphémères

Les comptes de service peuvent utiliser des identifiants éphémères pour authentifier les appels aux API Google Cloud, à d'autres API Google et à des API autres que Google. Les identifiants éphémères ont une durée de vie limitée, de quelques heures ou moins. Les identifiants de compte de service éphémères sont utiles pour les scénarios dans lesquels vous devez accorder un accès limité aux ressources des comptes de service de confiance. Ils présentent également moins de risques que les identifiants longue durée, tels que les clés de compte de service.

Vous pouvez créer les types d'identifiants éphémères suivants en empruntant l'identité d'un compte de service :

  • Jetons d'accès OAuth 2.0

    Les jetons d'accès sont les jetons de courte durée les plus couramment utilisés.

  • Jetons d'ID

    Les jetons d'identification suivent la spécification OIDC (OpenID Connect) et sont compatibles avec un nombre limité de services et d'applications.

  • Jetons Web JSON (JWT) autosignés

    Vous pouvez utiliser des jetons JWT autosignés pour vous authentifier auprès de certaines API Google sans obtenir de jeton d'accès auprès du serveur d'autorisation. Les API déployées avec API Gateway en ont besoin.

  • Blobs binaires autosignés

    Les blobs autosignés sont utiles pour les scénarios dans lesquels vous devez transmettre de manière sécurisée des données binaires arbitraires, généralement à des fins d'authentification.

Flux de requête directe

Lorsque vous créez des identifiants éphémères pour un compte de service à l'aide d'un flux de requête directe, l'appelant effectue une requête directe permettant de créer des identifiants éphémères. Deux identités sont impliquées dans ce flux : l'auteur de l'appel et le compte de service pour lequel l'identifiant est créé.

Si votre architecture système est conçue selon les niveaux de comptes de service à privilèges restreints, consultez la section Créer des identifiants éphémères pour plusieurs comptes de service.

Avant de commencer

  • Activer les API IAM and Service Account Credentials.

    Activer les API

  • Consultez la documentation relative aux comptes de service IAM.

  • Si vous ne l'avez pas déjà fait, activez la facturation et l'API IAM en suivant les étapes du guide de démarrage rapide.

Fournir les autorisations requises

Une requête directe n'implique que deux identités : l'auteur de l'appel et le compte de service pour lequel l'identifiant est créé. La façon dont vous configurez les autorisations varie selon que l'appelant utilise un compte de service ou des identifiants d'utilisateur.

Si vous souhaitez exécuter les exemples sur cette page dans un environnement de développement local, vous devez utiliser les identifiants utilisateur. Pour une utilisation en production, par exemple une application s'exécutant sur Compute Engine, vous utilisez un compte de service pour représenter l'appelant.

Fournir les autorisations requises pour un compte utilisateur

Lorsque vous souhaitez utiliser la CLI Google Cloud pour générer des jetons de courte durée ou générer des jetons de courte durée à partir d'un environnement de développement local, vous pouvez utiliser un compte utilisateur pour générer les jetons. Vous pouvez souvent utiliser votre propre compte Google.

Lorsque vous utilisez un compte utilisateur pour générer des jetons de courte durée, les identités suivantes sont impliquées:

  • Compte Google de l'appelant (CALLER_ACCOUNT)

    Ce compte utilisateur permet de générer des identifiants éphémères pour le compte de service porteur de privilèges.

  • Compte de service avec privilège (PRIV_SA)

    Ce compte de service se voit attribuer les rôles IAM requis pour le jeton de courte durée. Il s'agit du compte de service pour lequel le jeton de courte durée est créé.

Pour permettre à CALLER_ACCOUNT de créer des identifiants éphémères pour PRIV_SA, vous devez accorder à CALLER_ACCOUNT le rôle de créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur PRIV_SA.

Console

  1. Dans Google 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 avec privilège, PRIV_SA.

  4. Cliquez sur l'onglet Autorisations.

  5. Sous Comptes principaux avec accès à ce compte de service, cliquez sur  Accorder l'accès.

  6. Saisissez l'adresse e-mail du compte Google appelant, CALLER_ACCOUNT.

    Par exemple, username@google.com.

  7. Sélectionnez le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator).

  8. Cliquez sur Enregistrer pour attribuer le rôle au compte utilisateur.

gcloud

Accordez le rôle requis sur PRIV_SA:

La commande gcloud iam service-accounts add-iam-policy-binding accorde un rôle à un compte de service.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PRIV_SA: l'adresse e-mail du compte de service avec privilège pour lequel le jeton est généré.
  • CALLER_ACCOUNT: adresse e-mail du compte utilisateur utilisé pour demander le jeton de courte durée.

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=user:CALLER_ACCOUNT --role=roles/iam.serviceAccountTokenCreator

Vous devriez obtenir un résultat semblable à celui-ci :

Updated IAM policy for serviceAccount [PRIV_SA].
bindings:
- members:
  - user:CALLER_ACCOUNT
  role: roles/iam.serviceAccountTokenCreator
etag: BwXhCB4eyjY=
version: 1

REST

Commencez par lire la stratégie d'autorisation pour PRIV_SA :

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

Avant d'utiliser les données de requête ci-dessous, 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.
  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • 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/PRIV_SA:getIamPolicy

Corps JSON de la requête :

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

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

Vous devriez recevoir une réponse JSON de ce type :

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

Si vous n'avez attribué aucun rôle au compte de service, la réponse ne contient qu'une valeur etag. Incluez cette valeur etag à l'étape suivante.

Ensuite, modifiez la stratégie d'autorisation pour accorder à CALLER_ACCOUNT le rôle de créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator).

Par exemple, pour modifier l'exemple de réponse de l'étape précédente, ajoutez ce qui suit :

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

Enfin, écrivez la stratégie d'autorisation mise à jour :

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

Avant d'utiliser les données de requête ci-dessous, 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.
  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • 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.
  • 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 règle d'autorisation affichée à l'étape précédente, remplacez POLICY par ce qui suit, où CALLER_ACCOUNT correspond au compte utilisateur créant le jeton de courte durée:

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

Méthode HTTP et URL :

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

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 d'autorisation mise à jour.

Fournir les autorisations requises pour un compte de service

Lorsque l'application appelante utilise un compte de service comme identité, les comptes principaux suivants sont impliqués:

  • Compte de service de l'appelant (CALLER_SA)

    Ce compte de service représente l'application appelante, qui émet la requête de création d'identifiants éphémères.

  • Compte de service avec privilège (PRIV_SA)

    Ce compte de service se voit attribuer les rôles IAM requis pour le jeton de courte durée. Il s'agit du compte de service pour lequel le jeton de courte durée est créé.

Pour donner à CALLER_SA les autorisations pour créer des identifiants éphémères pour PRIV_SA, vous accordez à CALLER_SA Le rôle de créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator) sur PRIV_SA.

Console

  1. Dans Google 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 avec privilège, PRIV_SA.

  4. Cliquez sur l'onglet Autorisations.

  5. Sous Comptes principaux avec accès à ce compte de service, cliquez sur  Accorder l'accès.

  6. Saisissez l'adresse e-mail du compte de service appelant (CALLER_SA).

    Par exemple, demo@my-project.iam.gserviceaccount.com.

  7. Sélectionnez le rôle Créateur de jetons de compte de service (roles/iam.serviceAccountTokenCreator).

  8. Cliquez sur Enregistrer pour attribuer le rôle au compte de service.

gcloud

Accordez le rôle requis sur PRIV_SA:

La commande gcloud iam service-accounts add-iam-policy-binding accorde un rôle à un compte de service.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • PRIV_SA: l'adresse e-mail du compte de service avec privilège pour lequel le jeton est généré.
  • CALLER_SA: adresse e-mail du compte de service représentant l'application qui demande le jeton de courte durée.

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (PowerShell)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Windows (cmd.exe)

gcloud iam service-accounts add-iam-policy-binding PRIV_SA --member=serviceAccount:CALLER_SA --role=roles/iam.serviceAccountTokenCreator

Vous devriez obtenir un résultat semblable à celui-ci :

Updated IAM policy for serviceAccount [PRIV_SA].
bindings:
- members:
  - serviceAccount:CALLER_SA
  role: roles/iam.serviceAccountTokenCreator
etag: BwXhCB4eyjY=
version: 1

REST

Commencez par lire la stratégie d'autorisation pour PRIV_SA :

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

Avant d'utiliser les données de requête ci-dessous, 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.
  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • 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/PRIV_SA:getIamPolicy

Corps JSON de la requête :

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

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

Vous devriez recevoir une réponse JSON de ce type :

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

Si vous n'avez attribué aucun rôle au compte de service, la réponse ne contient qu'une valeur etag. Incluez cette valeur etag à l'étape suivante.

Ensuite, modifiez la stratégie d'autorisation pour accorder à CALLER_SA le rôle de créateur de jetons du compte de service (roles/iam.serviceAccountTokenCreator).

Par exemple, pour modifier l'exemple de réponse de l'étape précédente, ajoutez ce qui suit :

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

Enfin, écrivez la stratégie d'autorisation mise à jour :

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

Avant d'utiliser les données de requête ci-dessous, 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.
  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • 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.
  • 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 règle d'autorisation affichée à l'étape précédente, remplacez POLICY par ce qui suit, où CALLER_SA correspond au compte de service créant le jeton de courte durée:

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

Méthode HTTP et URL :

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

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 d'autorisation mise à jour.

Demander des identifiants éphémères

Une fois que vous avez attribué les rôles appropriés à chaque identité, vous pouvez demander des identifiants éphémères pour le compte de service souhaité. Les types d'identifiants compatibles sont les suivants :

Les exemples de cette section nécessitent l'utilisation d'un compte utilisateur.

Générer un jeton d'accès OAuth 2.0

Vous pouvez générer un jeton d'accès OAuth 2.0 à l'aide de la CLI gcloud, de l'API REST ou des bibliothèques clientes Cloud et des bibliothèques clientes des API Google.

Si vous utilisez l'API REST et que votre système est configuré pour autoriser une durée de vie étendue des jetons, vous pouvez créer un jeton dont la durée de vie est supérieure à la valeur par défaut. La CLI Google Cloud ne permet pas de définir une durée de vie pour le jeton.

Les exemples ci-dessous sont conçus pour être utilisés dans un environnement de développement local. L'appelant doit être représenté par un compte utilisateur plutôt que par un compte de service.

Pour générer un jeton d'accès OAuth 2.0 pour le compte de service disposant de privilèges:

gcloud

  1. Connectez-vous à la CLI Google Cloud en tant que compte Google appelant.

    gcloud auth login CALLER_ACCOUNT
    
  2. Prenez le contrôle du compte de service portant le privilège pour générer le jeton.

    La commande gcloud auth print-access-token génère un jeton d'accès OAuth 2.0 pour un compte de service.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
      • Exécutez la commande suivante :

        Linux, macOS ou Cloud Shell

        gcloud auth print-access-token --impersonate-service-account=PRIV_SA
        

        Windows (PowerShell)

        gcloud auth print-access-token --impersonate-service-account=PRIV_SA
        

        Windows (cmd.exe)

        gcloud auth print-access-token --impersonate-service-account=PRIV_SA
        

        Vous devriez obtenir un résultat semblable à celui-ci :

        WARNING: This command is using service account impersonation. All API calls will be executed as
        [my-sa@my-project.iam.gserviceaccount.com].
        ya29.c.b0AXv0zTPnzTnDV8F8Aj5Fgy46Yf2v_v8eZIoKq7xGpfbpXuy23aQ1693m3gAuE8AZga7w6kdagN7a9bfdDYbdeoGY0CMHOClsCwIdutL7k_RFC672lOCbUgF5hS8Iu2nCA8hle-11LJXBLmaxFmH08ZTBJLuDrWSNd8cYqGYFunSC1K1qLIPBF18tsa0hxVgKPucI8b1A9L8_MK1JGLGcr0n7-zY77_lmbcdODG3NmIbLOGWOutjJgqSO_YoeCKK2QTUZIp5PG7RkKlXWnmYJA9pEahzNoQrs5sWZctc2bia9af_ITzqqlXC9h1Kj5-me6e8rd734MJvpagqYazRk0gGWpMb03XmMGpgPc_FBp4pnX9rGOzW83SNpcDz8zeFO1Q0Bo3N7CuZougjRce0y8I2_4rtw5ME_nV3wrCWa..................................................................................................................................................................................................................................................................................................
        

REST

La méthode serviceAccounts.generateAccessToken de l'API Service Account Credentials génère un jeton d'accès OAuth 2.0 pour un compte de service.

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

  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • LIFETIME : délai avant expiration du nouveau jeton d'accès, exprimé en secondes. Exemple :300s

    Par défaut, la durée de vie maximale du jeton est d'une heure, soit 3 600 secondes. Pour étendre la durée de vie maximale de ces jetons à 12 heures (43 200 secondes), ajoutez le compte de service à une règle d'administration comprenant la contrainte de liste constraints/iam.allowServiceAccountCredentialLifetimeExtension.

Méthode HTTP et URL :

POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateAccessToken

Corps JSON de la requête :

{
  "scope": [
    "https://www.googleapis.com/auth/cloud-platform"
  ],
  "lifetime": "LIFETIME"
}

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

Si la requête generateAccessToken a abouti, le corps de la réponse contient un jeton d'accès OAuth 2.0 et une heure d'expiration. Ce jeton d'accès (accessToken) peut alors être utilisé pour authentifier une requête au nom du compte de service jusqu'à ce que l'heure d'expiration spécifiée expireTime soit atteinte :

{
  "accessToken": "eyJ0eXAi...NiJ9",
  "expireTime": "2020-04-07T15:01:23.045123456Z"
}

Générer des jetons d'identification OpenID Connect

Vous pouvez générer un jeton d'identification OpenID Connect (OIDC) à l'aide de la CLI gcloud, de l'API REST ou des bibliothèques clientes Cloud et des bibliothèques clientes des API Google.

Les exemples ci-dessous sont conçus pour être utilisés dans un environnement de développement local. L'appelant doit être représenté par un compte utilisateur plutôt que par un compte de service.

Les jetons d'identification OIDC sont valides pendant 1 heure,soit 3 600 secondes.

Pour générer un jeton d'ID OIDC signé par Google pour le compte de service avec privilège, procédez comme suit:

gcloud

  1. Connectez-vous à la CLI Google Cloud en tant que compte Google appelant.

    gcloud auth login CALLER_ACCOUNT
    
  2. Prenez le contrôle du compte de service portant le privilège pour générer le jeton.

    La commande gcloud auth print-identity-token génère un jeton d'ID OIDC pour un compte de service.

    Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

    • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
    • AUDIENCE_NAME : audience du jeton, généralement l'URL de l'application ou du service auquel le jeton sera appliqué pour autoriser l'accès.
      • Exécutez la commande suivante :

        Linux, macOS ou Cloud Shell

        gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
        

        Windows (PowerShell)

        gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
        

        Windows (cmd.exe)

        gcloud auth print-identity-token --impersonate-service-account=PRIV_SA --audiences="AUDIENCE_NAME"
        

        Vous devriez obtenir un résultat semblable à celui-ci :

        WARNING: This command is using service account impersonation. All API calls will be executed as
        [my-sa@my-project.iam.gserviceaccount.com].
        eyJhbGciOiJSUzI1NiIsImtpZDNhMDg4ZDRmZmMjJkYTVmZTM5MDZjY2MiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJ3d3cuZXhhbXBsJhenAiOiIxMTYzwNDYyMDk0ODIiLCJleHAiOjE2NTQ4ODU0MzEsImlhdCI6MTY1NDg4MTgzMSwiaXN6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViIMDQ2MjA5NDgyIn0.F7mu8IHj5VQdu7ItFrnYAKyGd7YqXuOP_rFLc98q8BaFBycAF1zAQnSnwqnSUXba0UK9PDT_-IOry68qLwBObz4XlX9lk0ehpN0O0W9FcFToKLB6wefXXPd4h7xtuPe5KzmpSOqj2Qqv34HriGw00Nqd-oGSgNY_lZ4wGEf4rT4oQa_kEcrY57Q2G6pwd769BhgeFwoLi5aK_Cv2kvf_zfMszC-xlkP9zwWQ8XinJBwe-qcQBa4NTgrbueNtXsEjccBS366zmw
        

REST

La méthode serviceAccounts.generateIdToken de l'API Service Account Credentials génère un jeton d'identification OIDC pour un compte de service.

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

  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • AUDIENCE_NAME : audience du jeton, généralement l'URL de l'application ou du service auquel le jeton sera appliqué pour autoriser l'accès.

Méthode HTTP et URL :

POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:generateIdToken

Corps JSON de la requête :

{
  "audience": "AUDIENCE_NAME",
  "includeEmail": "true"
}

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

Si la requête generateId a abouti, le corps de la réponse contient un jeton d'identification valide pendant une heure. Ce jeton d'accès (token) peut alors être utilisé pour authentifier une requête au nom du compte de service :

{
  "token": "eyJ0eXAi...NiJ9"
}

Créer un jeton Web JSON (JWT) autosigné

Les jetons Web JSON (JWT) autosignés sont utiles dans divers scénarios. Par exemple :

  • Authentification d'un appel à une API Google, comme indiqué dans le guide d'authentification Google.
  • Communication sécurisée entre des services Google Cloud ou des services autres que Google, comme dans le cas d'une application s'exécutant sur App Engine. Dans un tel scénario, une application est susceptible de signer un jeton qui pourra être validé par une autre application à des fins d'authentification.
  • Traitement d'un compte de service en tant que fournisseur d'identité, via la signature d'un jeton JWT contenant des revendications arbitraires sur un utilisateur, un compte ou un appareil.

Pour exécuter l'exemple ci-dessous, vous devez utiliser un compte utilisateur comme identifiant d'appelant.

Pour générer un jeton JWT autosigné pour le compte de service avec privilège, procédez comme suit:

REST

La méthode serviceAccounts.signJwt de l'API Service Account Credentials signe un jeton JWT à l'aide de la clé privée gérée par le système d'un compte de service.

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

  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • JWT_PAYLOAD : la charge utile JWT à signer. Il s'agit d'un objet JSON contenant un ensemble de revendications JWT. Incluez les revendications nécessaires pour répondre aux besoins du cas d'utilisation souhaité et aux exigences de validation du service que vous appelez. Si vous appelez une API Google, reportez-vous au guide de l'authentification de Google (en anglais) pour connaître les exigences concernant les revendications.

    La revendication exp (heure d'expiration) ne doit pas être fixée au delà de 12 heures dans le futur. Si vous appelez une API Google, la revendication exp ne doit pas être fixée au delà d'une heure dans le futur.

    L'exemple de charge utile suivant contient des revendications pour appeler une API Google, où EXP est un horodatage entier représentant le délai d'expiration :

    { \"iss\": \"PRIV_SA", \"sub\": \"PRIV_SA\", \"aud\": \"https://firestore.googleapis.com/\", \"iat\": 1529350000, \"exp\": EXP }

Méthode HTTP et URL :

POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signJwt

Corps JSON de la requête :

{
  "payload": "JWT_PAYLOAD"
}

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

Si la requête signJwt a abouti, le corps de la réponse contient un jeton JWT signé, ainsi que l'ID de clé de signature utilisé pour signer ce jeton JWT. Vous pouvez utiliser la valeur signedJwt en tant que jeton de support pour authentifier directement une requête émise au nom du compte de service. Le jeton est valide jusqu'à l'heure d'expiration spécifiée dans la requête :

{
  "keyId": "42ba1e...fc0a",
  "signedJwt": "eyJ0eXAi...NiJ9"
}

Créer un blob autosigné

Pour exécuter l'exemple ci-dessous, vous devez utiliser un compte utilisateur comme identifiant d'appelant.

Pour générer un blob autosigné pour le compte de service avec support de privilège, procédez comme suit:

REST

La méthode serviceAccounts.signBlob de l'API Service Account Credentials signe un blob à l'aide de la clé privée gérée par le système d'un compte de service.

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

  • PRIV_SA : adresse e-mail du compte de service avec privilège pour lequel le jeton de courte durée est créé.
  • BLOB_PAYLOAD : chaîne d'octets encodée en base64. Exemple : VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wZWQgb3ZlciB0aGUgbGF6eSBkb2cu.

Méthode HTTP et URL :

POST https://iamcredentials.googleapis.com/v1/projects/-/serviceAccounts/PRIV_SA:signBlob

Corps JSON de la requête :

{
  "payload": "BLOB_PAYLOAD"
}

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

Si la requête signBlob a abouti, le corps de la réponse contient un blob signé, ainsi que l'ID de clé de signature utilisé pour signer ce blob. Vous pouvez utiliser la valeur signedBlob en tant que jeton de support pour authentifier directement une requête émise au nom du compte de service. Le jeton est valide jusqu'à l'expiration de la clé privée gérée par le système d'un compte de service. L'ID de cette clé correspond à la valeur du champ keyId dans la réponse.

{
  "keyId": "42ba1e...fc0a",
  "signedBlob": "eyJ0eXAi...NiJ9"
}