Ce guide explique comment configurer l’authentification et l’autorisation pour le serveur.
aux applications de production de serveur. Authentification se réfère au processus de
déterminer l'identité d'un client. Autorisation se réfère au processus de
déterminer quelles autorisations un client authentifié a pour un particulier
Ressource. Autrement dit, l'authentification identifie votre identité et l'autorisation
détermine ce que vous pouvez faire. Pour plus d'informations sur l'authentification prise en charge
méthodes et comment les choisir, voir Vue d'ensemble de l'authentification.
Google utilise des informations d'identification pour identifier votre application pour le quota et la facturation.
Vos identifiants sont également utilisés pour autoriser l’accès aux API GCP,
ressources et fonctionnalités.
Sommaire
Fournir des informations d'identification pour votre application
Recherche automatique d'informations d'identification
Les bibliothèques clientes GCP utilisent un
stratégie appelée Application Default Credentials (ADC) pour rechercher
les informations d'identification de votre application. Lorsque votre code utilise une bibliothèque cliente, le
stratégie vérifie vos informations d'identification dans l'ordre suivant:
-
Tout d'abord, ADC vérifie si la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
est réglé. Si la variable est définie, ADC utilise le
fichier de compte de service vers lequel pointe la variable. La section suivante
Décrit comment définir la variable d'environnement. -
Si la variable d'environnement n'est pas définie, ADC utilise le compte de service par défaut.
fournis par Compute Engine, Kubernetes Engine, App Engine et Cloud,
pour les applications qui fonctionnent sur ces services. -
Si ADC ne peut utiliser aucune des informations d'identification ci-dessus, une erreur se produit.
L'exemple de code suivant illustre cette stratégie. L'exemple
ne spécifie pas explicitement les informations d'identification de l'application. Cependant, ADC est capable de
trouver implicitement les pouvoirs tant que le GOOGLE_APPLICATION_CREDENTIALS
la variable d’environnement est définie ou tant que l’application est en cours d’exécution
Fonctions Compute Engine, Kubernetes Engine, App Engine ou Cloud.
Vous devez
installer la bibliothèque cliente Cloud Storage
pour exécuter l'exemple suivant.
C #
Aller
Java
Node.js
PHP
Python
Rubis
Cette stratégie est utile pour tester et expérimenter, mais peut rendre la tâche difficile
pour indiquer les informations d'identification utilisées par votre application. Nous recommandons explicitement
spécifiant les informations d'identification que l'application doit utiliser, comme décrit dans
section suivante.
Obtention et fourniture manuelle des informations d'identification du compte de service
Si vous développez du code localement, déployez votre application sur site ou
Lors du déploiement sur un autre cloud public, vous pouvez créer et obtenir manuellement les informations d'identification du compte de service.
Création d'un compte de service
Les étapes suivantes décrivent comment créer un compte de service. Cependant, au lieu
de définir des autorisations au niveau du propriétaire, vous devez limiter l’accès au
autorisations, comme décrit dans la
section d'accès restreinte
au dessous de.
Console GCP
-
Dans la console GCP, accédez à la Créer une clé de compte de service page.
Accédez à la page Créer une clé de compte de service.
- Du Compte de service liste, sélectionnez
Nouveau compte de service. - dans le Nom du compte de service champ, entrez un nom.
-
Du Rôle liste, sélectionnez Projet > Propriétaire.
Remarque: Le Rôle le champ autorise votre compte de service
accéder aux ressources. Vous pouvez afficher et modifier ce champ ultérieurement à l'aide de la touche
Console GCP. Si vous êtes
développer une application de production, spécifier plus granulaire
autorisations que Projet> Propriétaire. Pour plus d'informations, voir
attribuer des rôles aux comptes de service. - Cliquez sur Créer. Un fichier JSON contenant votre clé
téléchargements sur votre ordinateur.
Ligne de commande
Vous pouvez exécuter les commandes suivantes à l’aide de la touche
Cloud SDK sur votre machine locale ou dans
Cloud Shell.
-
Créez le compte de service. Remplacer [NAME] avec un nom
pour le compte de service.gcloud iam service-accounts créer [NAME]
-
Accordez des autorisations au compte de service. Remplacer [PROJECT_ID]
avec votre identifiant de projet.
gcloud projects add-iam-policy-binding [PROJECT_ID] --member "serviceAccount:[NAME]@[PROJECT_ID].iam.gserviceaccount.com "--role" rôles / propriétaire "
Remarque: Le Rôle le champ autorise votre compte de service
accéder aux ressources. Vous pouvez afficher et modifier ce champ ultérieurement à l'aide de
Console GCP. Si vous êtes
développer une application de production, spécifier plus granulaire
autorisations que Projet > Propriétaire. Pour plus d'informations, voir
attribuer des rôles aux comptes de service. -
Générez le fichier de clé. Remplacer [FILE_NAME] avec un nom pour
le fichier de clé.Les clés des comptes de service gcloud iam créent [FILE_NAME].json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
Fournir les informations d'identification du compte de service
Après avoir créé un compte de service, vous avez le choix entre deux options:
informations d'identification de votre application. Vous pouvez soit définir le
GOOGLE_APPLICATION_CREDENTIALS variable d'environnement
explicitement, ou vous pouvez passer le chemin de la clé du compte de service dans le code.
Définition de la variable d'environnement
Fournissez des informations d’authentification à votre code d’application en
définir la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.
Remplacer [PATH] avec le chemin du fichier JSON qui contient votre
clé de compte de service, et [FILE_NAME] avec le
nom de fichier. Cette variable s’applique uniquement à votre session shell actuelle, donc si vous
ouvrez une nouvelle session, redéfinissez la variable.
Linux ou macOS
exporter GOOGLE_APPLICATION_CREDENTIALS = "[PATH]"
Par exemple:
exportez GOOGLE_APPLICATION_CREDENTIALS = "/ home / utilisateur / Téléchargements /[FILE_NAME].json "
les fenêtres
Avec PowerShell:
$ env: GOOGLE_APPLICATION_CREDENTIALS = "[PATH]"
Par exemple:
$ env: GOOGLE_APPLICATION_CREDENTIALS = "C: Utilisateurs nom d'utilisateur Téléchargements [FILE_NAME].json "
Avec invite de commande:
set GOOGLE_APPLICATION_CREDENTIALS =[PATH]
Une fois que vous avez terminé les étapes ci-dessus, ADC
est capable de déterminer implicitement vos informations d'identification, comme décrit dans
fournir des informations d'identification à votre application
section ci-dessus. Nous recommandons cette approche, car elle nécessite moins de code.
De plus, en utilisant la variable d’environnement, votre code est plus portable,
parce que vous pouvez exécuter le même code dans plusieurs environnements avec différents
comptes de service.
Passer le chemin de la clé du compte de service dans le code
Vous pouvez également choisir de désigner explicitement votre fichier de compte de service dans
code, comme indiqué dans l'exemple de code suivant.
Vous devez
installer la bibliothèque cliente Cloud Storage
pour exécuter l'exemple suivant.
C #
Aller
Java
Node.js
PHP
Python
Rubis
Obtention des informations d'identification sur Compute Engine, Kubernetes Engine, Environnement flexible App Engine et les fonctions de cloud
Si votre application s'exécute sur Compute Engine, Kubernetes Engine, l’environnement flexible App Engine ou les fonctions de cloud, vous devez
vous n'avez pas besoin de créer votre propre compte de service. Compute Engine inclut un compte de service par défaut créé automatiquement pour vous. Vous pouvez affecter un
compte de service différent, par instance, si nécessaire. Lorsque vous créez un nouveau
instance, l'instance est automatiquement activée pour s'exécuter en tant que service par défaut
compte et dispose d'un ensemble d'autorisations d'autorisation par défaut. Pour plus
informations, voir
Compte de service par défaut de Compute Engine.
Après avoir configuré un compte de service, ADC peut implicitement trouver vos informations d'identification.
sans avoir besoin de changer votre code, comme décrit dans la section ci-dessus. Si
vous souhaitez utiliser spécifiquement les informations d'identification Compute Engine, vous pouvez explicitement
Faites-le, comme indiqué dans l'exemple de code suivant.
Vous devez
installer la bibliothèque cliente Cloud Storage
pour exécuter l'exemple suivant.
C #
Aller
Java
Node.js
PHP
Python
Rubis
Obtention des informations d'identification sur l'environnement standard App Engine
Si votre application s'exécute dans un environnement standard App Engine,
vous pouvez utiliser l'API d'identité App Engine App
pour obtenir des informations d'identification.
Après avoir configuré un compte de service, ADC peut implicitement trouver vos informations d'identification.
sans avoir besoin de changer votre code, comme décrit dans la section ci-dessus. Si
vous souhaitez utiliser spécifiquement les informations d'identification App Engine, vous pouvez explicitement
Faites-le, comme indiqué dans l'exemple de code suivant.
Vous devez
installer la bibliothèque cliente Cloud Storage
pour exécuter l'exemple suivant.
Restreindre l'accès
Accordez uniquement à votre application les autorisations dont elle a besoin pour
interagir avec les API, fonctionnalités ou ressources GCP applicables. GCP utilise le cloud
Gestion des identités et des accès (Cloud IAM) pour le contrôle d'accès. Lorsque vous créez un
compte de service, vous pouvez choisir un rôle Cloud IAM pour limiter l’accès. le
la procédure d’initiation à l’authentification vous invite à:
choisir la Propriétaire
rôle lorsque vous créez un compte de service. Vous pouvez
changez cette valeur à tout moment. Pour plus d'informations, voir
attribution de rôles aux comptes de service.
Meilleures pratiques pour la gestion des informations d'identification
Les informations d'identification permettent d'accéder aux données sensibles. Les pratiques suivantes aident
protéger l'accès à ces ressources.
-
Ne pas incorporer les secrets liés à l’authentification dans le code source, tels que API
clés, Jetons OAuth et compte de service
identifiants. Vous pouvez utiliser une variable d'environnement pointant sur des informations d'identification.
en dehors du code source de l'application, tel que
Service de gestion de clé en nuage. -
Utilisez des identifiants différents dans différents contextes, tels que les tests et
environnements de production. -
Ne transférez les informations d'identification que via HTTPS pour empêcher un tiers de
intercepter vos informations d'identification. Ne jamais transférer en texte clair ou dans le cadre du
URL -
Ne jamais intégrer des informations d'identification de longue durée dans votre application côté client. Par exemple,
N'intégrez pas les informations d'identification du compte de service dans une application mobile. Applications côté client
peut être examiné et les informations d'identification peuvent facilement être trouvées et utilisées par une tierce partie. -
Révoquez un jeton si vous n'en avez plus besoin.
Dépannage des erreurs de l'API
En savoir plus sur le dépannage des demandes d'API échouées lors d'erreurs d'API Cloud.
Commentaires
Laisser un commentaire