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 Google 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 les identifiants de l'utilisateur ou du 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 fournissez des identifiants utilisateur pour créer un fichier ADC local, vous devez tenir compte des points suivants :

  • Les identifiants utilisateur peuvent 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 Résoudre les problèmes de configuration de vos ADC.

  • L'ADC local contient vos jetons d'accès et d'actualisation. Tout utilisateur ayant accès à votre système de fichiers peut utiliser ces identifiants. 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.

  • Si votre compte Google ne dispose pas des rôles IAM (Identity and Access Management) requis dans votre projet, votre code risque de ne pas pouvoir accéder à certaines ressources. Dans ce cas, quelqu'un doit vous accorder les rôles requis.

  • Votre fichier ADC local est associé à votre compte utilisateur et non à votre configuration gcloud CLI. Le fait de modifier la configuration de gcloud CLI n'a aucune incidence sur votre fichier ADC local ni sur les identifiants fournis à ADC.

La façon dont vous fournissez vos identifiants utilisateur à ADC varie selon que votre compte utilisateur est géré par Google (c'est-à-dire qu'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.

Fournir les identifiants à votre compte Google

Pour fournir vos identifiants utilisateur à ADC, vous utilisez Google Cloud CLI :

  1. Installez et initialisez la gcloud CLI.

    Lorsque vous initialisez la gcloud CLI, veillez à spécifier un projet Google Cloud dans lequel vous êtes autorisé à accéder aux ressources dont votre application a besoin.

  2. Créez votre fichier d'identifiants :

    gcloud auth application-default login

    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.

Fournir les identifiants utilisateur pour un compte géré par un fournisseur d'identité externe

Pour fournir vos identifiants utilisateur pour un compte utilisateur géré par un fournisseur d'identité externe et fédéré avec la fédération des identités des employés, vous devez disposer du nom de votre fournisseur de pool d'employés. Votre administrateur doit pouvoir vous fournir ces informations. Le nom du fournisseur de pools d'employés a le format suivant :

locations/global/workforcePools/POOL_ID/provider/PROVIDER_ID

Fournissez vos identifiants utilisateur à ADC pour un compte utilisateur fédéré :

  1. Créez votre fichier de configuration de connexion et définissez la propriété auth/login_config_file de gcloud CLI pour qu'elle pointe vers son emplacement, à l'aide de la commande iam worker-pools create-login-config :

    gcloud iam workforce-pools create-login-config PROVIDER_ID \
    --output-file=LOGIN_CONFIG_FILE --activate
    

    Remplacez les éléments suivants :

    • PROVIDER_ID : ID du fournisseur
    • LOGIN_CONFIG_FILE : chemin d'accès au fichier de configuration que vous spécifiez, par exemple login.json

    Le fichier créé ressemble à l'exemple suivant :

    {
    "type": "external_account_authorized_user_login_config",
    "audience": "//iam.googleapis.com/PROVIDER_ID",
    "auth_url": "https://auth.cloud.google/authorize",
    "token_url": "https://sts.googleapis.com/v1/oauthtoken",
    "token_info_url": "https://sts.googleapis.com/v1/introspect",
    }
    

  2. Connectez-vous à la gcloud CLI à l'aide du fichier de connexion suivant :

    gcloud auth login
    
  3. Initialisez la gcloud CLI :

    gcloud init
    
  4. Créez votre fichier ADC local :

    gcloud auth application-default login
    

Pour en savoir plus, consultez la page Fédération des identités des employés.

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 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

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

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

Clés de compte de service

Si vous ne pouvez pas utiliser les identifiants utilisateur ou l'emprunt d'identité de 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.

  2. Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin d'accès du fichier JSON contenant vos identifiants. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

Environnement de développement basé 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 la gcloud CLI pour fournir des identifiants à ADC dans ces environnements. Si vous devez fournir un autre compte utilisateur à l'ADC, ou fournir des identifiants à 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 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.

Configurez l'authentification :

  1. Créez le compte de service :

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME

    Remplacez SERVICE_ACCOUNT_NAME par le nom que vous souhaitez donner au compte de service.

  2. Pour accorder l'accès à votre projet et à vos ressources, attribuez un rôle au compte de service :

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

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service.
    • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
    • ROLE : rôle à accorder
  3. Pour attribuer un autre rôle au compte de service, exécutez la commande comme vous l'avez fait à l'étape précédente.
  4. Attribuez à votre compte Google un rôle vous permettant d'utiliser les rôles du compte de service et d'associer le compte de service à d'autres ressources :

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

    Remplacez les éléments suivants :

    • SERVICE_ACCOUNT_NAME : nom du compte de service.
    • PROJECT_ID : ID du projet dans lequel vous avez créé le compte de service.
    • USER_EMAIL: adresse e-mail de votre compte Google

GKE ou GKE Enterprise

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

Tester des applications en conteneur localement

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 les pages Configurer la fédération d'identité de charge de travail et Obtenir des identifiants éphémères avec la fédération d'identité.

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.

    Définissez la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin d'accès du fichier JSON contenant vos identifiants. Cette variable ne s'applique qu'à la session de shell actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez de nouveau la définir.

Étapes suivantes