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 doté d'un compte de service par défaut, elle peut récupérer les identifiants du compte de service pour appeler les API Google Cloud. Ces environnements incluent 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 le fichier de compte de service 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.Si la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
n'est pas définie et qu'aucun compte de service n'est associé à la ressource qui exécute votre code, ADC utilise le compte de service par défaut utilisé fourni par Compute Engine, Google Kubernetes App Engine, App Engine, Cloud Run et Cloud Functions.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 :
C#
Go
Java
Node.js
PHP
Python
Ruby
Transmettre manuellement des identifiants
Si votre application s'exécute en dehors des environnements Google Cloud qui fournissent un compte de service par défaut, vous devez en créer un manuellement. Vous pouvez ensuite créer 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.
Créer un compte de service
Les étapes suivantes décrivent comment créer un compte de service si vous n'en avez pas :
Cloud 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 un 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 Create (Créer).
-
Cliquez sur le champ Sélectionner un rôle.
Dans la section Accès rapide, cliquez sur Basique, puis sur Propriétaire.
- 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 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).
Ligne de commande
Vous pouvez exécuter les commandes suivantes à l'aide du SDK Cloud sur votre ordinateur local, ou dans Cloud Shell.
-
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
-
Accordez des autorisations au compte de service. Remplacez PROJECT_ID par votre ID de projet.
gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role="roles/owner"
-
Générez le fichier de clé. Remplacez FILE_NAME par le nom du fichier de clé.
gcloud iam service-accounts keys create FILE_NAME.json --iam-account=NAME@PROJECT_ID.iam.gserviceaccount.com
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
.
Remplacez [PATH] par le chemin du fichier JSON contenant la clé de votre compte de service. Cette variable ne s'applique qu'à la session d'interface système actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez la définir à nouveau.
Linux ou macOS
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Exemple :
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/my-key.json"
Windows
Avec PowerShell :
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Exemple :
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\my-key.json"
Avec l'invite de commande :
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
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
Bonnes pratiques de gestion des identifiants
Les identifiants permettent d'accéder aux données sensibles. Les pratiques suivantes vous aident à protéger l'accès à vos identifiants.
N'intégrez pas les informations secrètes liées à l'authentification dans le code source, telles que les clés API, les jetons OAuth et les clés de compte de service. Vous pouvez utiliser une variable d'environnement renvoyant vers des identifiants en dehors du code source de l'application, comme Cloud Key Management Service.
Créez et utilisez différents identifiants pour différents contextes, comme par exemple pour les environnements de test et de production.
Ne transférez vos identifiants que via un canal sécurisé tel que HTTPS pour empêcher un tiers de les intercepter. Ne les transférez jamais en texte clair ou dans l'URL.
N'intégrez jamais des identifiants de longue durée dans votre application côté client. Par exemple, n'intégrez pas les clés de compte de service dans une application mobile. Les applications côté client peuvent être analysées et les identifiants pourraient facilement être découverts et utilisés par un tiers.
Révoquez un jeton si vous n'en avez plus besoin.
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.
Étapes suivantes
- 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