Configurer les identifiants par défaut de l'application

Cette page explique comment configurer le service d'identifiants par défaut de l'application (ADC, Application Default Credentials) pour les utiliser avec les bibliothèques clientes Cloud, les bibliothèques clientes des API Google, ainsi que avec les API REST et RPC dans divers environnements. Pour configurer le service ADC, vous devez lui fournir des identifiants pour l'environnement dans lequel votre code est exécuté.

Application Default Credentials (ADC) est une stratégie utilisée par les bibliothèques d'authentification pour rechercher automatiquement des identifiants en fonction de l'environnement d'application. Les bibliothèques d'authentification mettent ces identifiants à la disposition des bibliothèques clientes Cloud et des bibliothèques clientes des API Google. Lorsque vous utilisez le service ADC, votre code peut s'exécuter dans un environnement de développement ou bien de production, sans modifier la manière dont votre application s'authentifie auprès des API et services Google Cloud.

Pour en savoir plus sur l'emplacement des ADC (Identifiants par défaut de l'application) et l'ordre dans lequel ils sont consultés, consultez la section Fonctionnement des identifiants par défaut de l'application.

Si vous utilisez des clés API, vous n'avez pas besoin de configurer le service ADC. Pour plus d'informations, consultez la section Utiliser des clés API.

Fournir des identifiants aux ADC

Choisissez l'environnement dans lequel votre code s'exécute :

Environnement de développement local

Vous pouvez fournir vos identifiants utilisateur ou des identifiants de compte de service à l'ADC dans un environnement de développement local.

Identifiants utilisateur

Lorsque votre code s'exécute dans un environnement de développement local (par exemple, un poste de travail de développement), la meilleure option consiste à utiliser les identifiants associés à votre compte utilisateur.

Lorsque vous configurez le fichier ADC avec votre compte utilisateur, vous devez tenir compte des points suivants :

  • La configuration du fichier ADC avec un compte utilisateur peut ne pas fonctionner pour certaines méthodes et API (API Cloud Translation ou API Cloud Vision, par exemple) sans paramètres ni configuration supplémentaires. Si vous voyez un message d'erreur indiquant que l'API n'est pas activée dans le projet ou qu'aucun projet de quota n'est disponible, consultez la section Les identifiants de l'utilisateur ne fonctionnent pas.

  • Le fichier ADC local contient votre jeton d'actualisation. Tout utilisateur ayant accès à votre système de fichiers peut l'utiliser pour obtenir un jeton d'accès valide. Si vous n'avez plus besoin de ces identifiants locaux, vous pouvez les révoquer à l'aide de la commande gcloud auth application-default revoke.

  • Votre fichier ADC local est associé à votre compte utilisateur, et non à votre configuration gcloud CLI. Le fait de modifier la configuration de gcloud CLI peut modifier l'identité utilisée par gcloud CLI, mais n'a aucune incidence sur votre fichier ADC local ni sur la configuration de l'ADC.

La façon dont vous configurez l'ADC avec votre compte utilisateur dépend de la façon dont votre compte utilisateur est géré par Google (c'est-à-dire s'il s'agit d'un compte Google) ou par un autre fournisseur d'identité (IdP), et fédéré à l'aide de la fédération des identités des employés.

Configurer ADC avec votre compte Google

Pour configurer ADC avec un compte Google, vous utilisez Google Cloud CLI :

  1. Install the Google Cloud CLI, then initialize it by running the following command:

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC.

Configurer les identifiants par défaut de l'application avec un compte géré par un IdP externe

Pour configurer les identifiants par défaut de l'application pour un compte utilisateur géré par un IdP externe et fédéré avec la fédération des identités des employés, procédez comme suit :

  1. After installing the Google Cloud CLI, configure the gcloud CLI to use your federated identity and then initialize it by running the following command:

    gcloud init
  2. If you're using a local shell, then create local authentication credentials for your user account:

    gcloud auth application-default login

    You don't need to do this if you're using Cloud Shell.

    If an authentication error is returned, confirm that you have configured the gcloud CLI to use Workforce Identity Federation.

    Un écran de connexion s'affiche. Une fois que vous êtes connecté, vos identifiants sont stockés dans le fichier d'identifiants local utilisé par ADC.

Identifiants du compte de service

Vous pouvez configurer les identifiants par défaut de l'application avec les identifiants d'un compte de service à l'aide de l'emprunt d'identité d'un compte de service ou d'une clé de compte de service.

Emprunter l'identité d'un compte de service

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

Vous devez disposer du rôle IAM "Créateur de jetons du compte de service" (roles/iam.serviceAccountTokenCreator) sur le compte de service que vous empruntez. Pour en savoir plus, consultez la section Rôles requis.

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.

Clés de compte de service

Si vous ne pouvez pas utiliser un compte utilisateur ou un compte de service pour le développement local, vous pouvez utiliser une clé de compte de service.

Pour créer une clé de compte de service et la rendre disponible pour les ADC, procédez comme suit :

  1. Créez un compte de service avec les rôles dont votre application a besoin, ainsi qu'une clé pour ce compte de service, en suivant les instructions de la section Créer une clé de compte de service.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Environnements de développement basés sur le cloud Google Cloud

Lorsque vous utilisez un environnement de développement basé sur le cloud Google Cloud, tel que Cloud Shell ou Cloud Code, l'outil utilise les identifiants que vous avez fournis lors de votre connexion et gère les autorisations requises. Vous ne pouvez pas utiliser gcloud CLI pour configurer ADC dans ces environnements. Si vous devez utiliser un autre compte utilisateur pour configurer le fichier ADC ou configurer ADC à l'aide d'un compte de service, utilisez un environnement de développement local ou une ressource de calcul Google Cloud comme environnement de développement.

Services Google Cloud compatibles avec l'association d'un compte de service

Certains services Google Cloud, tels que Compute Engine, App Engine et Cloud Run Functions, permettent de rattacher un compte de service géré par l'utilisateur à certains types de ressources. En règle générale, l'association d'un compte de service est acceptée lorsque les ressources de ce service peuvent exécuter ou inclure un code d'application. Lorsque vous associez un compte de service à une ressource, le code exécuté sur la ressource peut utiliser ce compte de service comme identité.

Associer un compte de service géré par l'utilisateur est la méthode privilégiée pour fournir des identifiants au code de production ADC exécuté sur Google Cloud.

Pour déterminer le rôle que vous devez attribuer à votre compte de service, consultez la section Choisir des rôles prédéfinis.

Pour en savoir plus sur les ressources auxquelles vous pouvez associer un compte de service et sur l'association de ce compte de service, consultez la documentation IAM sur l'association d'un compte de service.

Set up authentication:

  1. Create the service account:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Replace SERVICE_ACCOUNT_NAME with a name for the service account.

  2. To provide access to your project and your resources, grant a role to the service account:

    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • ROLE: the role to grant
  3. To grant another role to the service account, run the command as you did in the previous step.
  4. Grant the required role to the principal that will attach the service account to other resources.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com --member="user:USER_EMAIL" --role=roles/iam.serviceAccountUser

    Replace the following:

    • SERVICE_ACCOUNT_NAME: the name of the service account
    • PROJECT_ID: the project ID where you created the service account
    • USER_EMAIL: the email address for a Google Account

GKE

L'authentification des applications conteneurisées exécutées sur GKE ou GKE Enterprise est gérée différemment entre les environnements de test locaux et les environnements Google Cloud.

Tester des applications conteneurisées en local

Pour tester votre application conteneurisée sur votre poste de travail local, vous pouvez configurer des conteneurs pour qu'ils s'authentifient avec votre fichier d'identifiants local. Pour tester les conteneurs, utilisez une mise en œuvre Kubernetes locale telle que minikube et le module complémentaire gcp-auth.

Exécuter des applications en conteneur sur Google Cloud

Vous configurez l'authentification pour les environnements Google Cloud conteneurisés différemment selon le contexte :

Fournisseur sur site ou autre fournisseur cloud

Si vous exécutez votre application en dehors de Google Cloud, vous devez fournir des identifiants reconnus par Google Cloud pour utiliser les services Google Cloud.

Fédération d'identité de charge de travail

Le meilleur moyen de gérer l'authentification auprès de Google Cloud à l'aide des identifiants d'un autre fournisseur d'identité est d'utiliser la fédération d'identité de charge de travail. Il vous suffit de créer un fichier de configuration d'identifiants et de définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur son emplacement. Cette approche est plus sécurisée que la création d'une clé de compte de service.

Pour obtenir de l'aide sur la configuration de la fédération d'identité de charge de travail pour ADC, consultez la page Fédération d'identité de charge de travail avec d'autres clouds.

Clé de compte de service

Si vous ne parvenez pas à configurer la fédération d'identité de charge de travail, vous devez créer un compte de service, lui attribuer les rôles IAM requis par l'application et créer une clé pour ce compte.

Pour créer une clé de compte de service et la rendre disponible pour les ADC, procédez comme suit :

  1. Créez un compte de service avec les rôles dont votre application a besoin, ainsi qu'une clé pour ce compte de service, en suivant les instructions de la section Créer une clé de compte de service.

    Set the environment variable GOOGLE_APPLICATION_CREDENTIALS to the path of the JSON file that contains your credentials. This variable applies only to your current shell session, so if you open a new session, set the variable again.

Étapes suivantes