Cet article explique comment authentifier une application en tant que compte de service. Pour obtenir des informations générales sur l'authentification auprès des API Google Cloud, y compris les scénarios et les stratégies d'authentification courants, consultez la page Présentation de l'authentification. Pour en savoir plus sur les comptes de service, consultez la section Comptes de service dans la documentation sur la gestion de l'authentification et des accès.
Rechercher automatiquement des identifiants
Si votre application s'exécute dans un environnement Google Cloud et que vous avez associé un compte de service à cet environnement, votre application peut récupérer les identifiants du compte de service. L'application peut ensuite utiliser ces identifiants pour appeler les API Google Cloud.
Vous pouvez associer des comptes de service à des ressources pour de nombreux services Google Cloud, dont Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run et Cloud Functions. Nous vous recommandons d'utiliser cette stratégie car elle est plus pratique et plus sécurisée que la transmission manuelle des identifiants.
En outre, nous vous recommandons d'utiliser les bibliothèques clientes Google Cloud pour votre application. Les bibliothèques clientes Google Cloud utilisent une bibliothèque appelée "Application Default Credentials" (ADC) pour rechercher automatiquement vos identifiants de compte de service. L'ADC recherche les identifiants du compte de service dans l'ordre suivant :
Si la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
est définie, ADC utilise la clé de compte de service ou le fichier de configuration vers lequel renvoie la variable.Si la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
n'est pas définie, ADC utilise le compte de service associé à la ressource qui exécute votre code.Ce compte de service peut être un compte de service par défaut fourni par Compute Engine, Google Kubernetes Engine, App Engine, Cloud Run ou Cloud Functions. Il peut également s'agir d'un compte de service géré par l'utilisateur que vous avez créé.
Si ADC ne peut utiliser aucune des informations d'identification ci-dessus, une erreur se produit.
L'exemple de code suivant montre comment utiliser la bibliothèque ADC dans le code de votre application. Pour exécuter cet exemple, vous devez installer la bibliothèque cliente Cloud Storage.
C#
Go
Java
Node.js
PHP
Python
Ruby
Transmettre manuellement des identifiants
Si votre application s'exécute dans un environnement sans compte de service associé, tel qu'un environnement sur site ou un autre fournisseur cloud, vous devez utiliser la fédération d'identité de charge de travail.
Si vous ne pouvez pas utiliser la fédération d'identité de charge de travail, vous devez créer un compte de service et une ou plusieurs clés de compte de service, qui sont des identifiants associés au compte de service. Les clés de compte de service peuvent ensuite être transmises manuellement à votre application.
Assurez-vous de consulter les bonnes pratiques pour gérer les clés de compte de service.
Créer un compte de service
Les étapes suivantes décrivent comment créer un compte de service si vous n'en avez pas :
Console
Créez un compte de service :
-
Dans Cloud Console, accédez à la page Créer un compte de service.
Accéder à la page "Créer un compte de service" - Sélectionnez votre projet.
-
Dans le champ Nom du compte de service, saisissez un nom. Cloud Console remplit le champ ID du compte de service en fonction de ce nom.
Dans le champ Description du compte de service, saisissez une description. Exemple :
Service account for quickstart
. - Cliquez sur Créer et continuer.
-
Pour accorder l'accès à votre projet, attribuez le ou les rôles suivants à votre compte de service : Projet > Propriétaire.
Dans la liste Sélectinoner un rôle, sélectionnez un rôle.
Pour ajouter des rôles supplémentaires, cliquez sur
Ajouter un autre rôle et ajoutez chaque rôle supplémentaire. - Cliquez sur Continuer.
-
Cliquez sur OK pour terminer la création du compte de service.
Ne fermez pas la fenêtre de votre navigateur. Vous en aurez besoin lors de la tâche suivante.
Créez une clé de compte de service :
- Dans Cloud Console, cliquez sur l'adresse e-mail du compte de service que vous avez créé.
- Cliquez sur Keys (Clés).
- Cliquez sur Ajouter une clé, puis sur Créer une clé.
- Cliquez sur Create (Créer). Un fichier de clé JSON est téléchargé sur votre ordinateur.
- Cliquez sur Close (Fermer).
gcloud
Configurez l'authentification :
-
Créez le compte de service. Remplacez NAME par le nom que vous souhaitez donner au compte de service :
gcloud iam service-accounts create NAME
-
Attribuez des rôles au compte de service. Exécutez la commande suivante une fois pour chacun des rôles IAM suivants :
roles/owner
:gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role=ROLE
Remplacez les éléments suivants :
- NAME : nom du compte de service.
- PROJECT_ID: ID du projet dans lequel vous avez créé le compte de service.
- ROLE: rôle à accorder
-
Générez le fichier de clé :
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
Remplacez les éléments suivants :
- FILE_NAME: nom du fichier de clé
- NAME : nom du compte de service.
- PROJECT_ID: ID du projet dans lequel vous avez créé le compte de service.
Transmettre des identifiants via une variable d'environnement
Fournissez des identifiants d'authentification au code de votre application en définissant la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
. Cette variable ne s'applique qu'à la session d'interface système actuelle. Si vous souhaitez que la variable s'applique aux sessions d'interface système futures, définissez-la dans votre fichier de démarrage de l'interface système, par exemple dans le fichier ~/.bashrc
ou ~/.profile
.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Remplacez KEY_PATH
par le chemin du fichier JSON contenant la clé de votre compte de service.
Exemple :
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Windows
Pour PowerShell :
$env:GOOGLE_APPLICATION_CREDENTIALS="KEY_PATH
"
Remplacez KEY_PATH
par le chemin du fichier JSON contenant la clé de votre compte de service.
Exemple :
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
Pour l'invite de commande :
set GOOGLE_APPLICATION_CREDENTIALS=KEY_PATH
Remplacez KEY_PATH
par le chemin du fichier JSON contenant la clé de votre compte de service.
Une fois que vous avez terminé les étapes ci-dessus, l'ADC peut trouver automatiquement vos identifiants, comme décrit dans la section ci-dessus. Nous vous recommandons d'utiliser la stratégie ADC, car elle nécessite moins de code et rend votre code portable dans environnements différents.
Transmettre des identifiants grâce à du code
Vous pouvez également choisir de renvoyer explicitement vers votre fichier de compte de service, directement dans le code comme indiqué dans l'exemple suivant. Vous devez installer la bibliothèque cliente Cloud Storage pour exécuter l'exemple suivant.
C#
Go
Java
Node.js
PHP
Python
Ruby
Dépanner les erreurs d'API
Pour en savoir plus sur le dépannage des requêtes d'API ayant échoué, consultez la section Erreurs.
Étape suivante
- Consultez nos bonnes pratiques pour gérer les comptes de service et les clés de compte de service.
- En savoir plus sur les bonnes pratiques pour sécuriser les comptes de service.
- Apprenez-en davantage sur l'authentification auprès d'une API Google Cloud.
- Apprenez-en davantage sur l'authentification en tant qu'utilisateur final
- Découvrez comment utiliser les clés API.
Faites l'essai
Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
Essai gratuit