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
- Environnements de développement basés dans le cloud Google Cloud
- Compute Engine ou autres services Google Cloud compatibles avec l'association d'un compte de service
Environnement de développement local
Vous pouvez fournir vos identifiants utilisateur ou des identifiants de compte de service au fichier 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 un fichier ADC avec votre compte utilisateur, vous devez tenir compte des points suivants :
La configuration d'un 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 recevez 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 changer l'identité utilisée par gcloud CLI, mais n'a aucune incidence sur votre fichier ADC local ni sur sa configuration.
La façon dont vous configurez le fichier 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 des ADC avec votre compte Google
Pour configurer ADC avec un compte Google, vous utilisez Google Cloud CLI :
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
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 des ADC avec un compte géré par un fournisseur d'identité externe
Pour configurer un fichier ADC 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 :
-
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
-
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 un fichier ADC 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 l'emprunt d'identité d'un compte de service pour le développement local, vous pouvez utiliser une clé de compte de service à la place.
Pour créer une clé de compte de service et la rendre disponible pour les ADC, procédez comme suit :
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 dans le cloud Google Cloud
Lorsque vous utilisez un environnement de développement basé dans 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 le fichier 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:
-
Create the service account:
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
Replace
SERVICE_ACCOUNT_NAME
with a name for the service account. -
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 accountPROJECT_ID
: the project ID where you created the service accountROLE
: the role to grant
- To grant another role to the service account, run the command as you did in the previous step.
-
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 accountPROJECT_ID
: the project ID where you created the service accountUSER_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 :
- Pour GKE Enterprise, consultez les pages présentation de l'authentification et Utiliser Workload Identity Federation for GKE pour les parcs.
- Pour GKE, consultez la page Accéder aux API Google Cloud à partir de charges de travail GKE.
- Pour Knative Serving, consultez la page Utiliser Workload Identity Federation for GKE pour Knative Serving.
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 concernant la configuration de la fédération d'identité de charge de travail pour le fichier 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 :
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
- Découvrez comment ADC trouve des identifiants.
- Authentifiez-vous pour utiliser les bibliothèques clientes Cloud.
- Découvrez les méthodes d'authentification.