Quelle est la manière la plus simple d'utiliser la ligne de commande gcloud
de manière non interactive avec un compte de service en dehors de GCE? De préférence sans salir le système de fichiers avec des fichiers d'informations d'identification, c'est ce que gcloud auth activate-service-account --key-file=...
Est-ce que.
Il existe de nombreux cas d'utilisation pour utiliser gcloud
avec un compte de service. Par exemple, sur un serveur, je voudrais tester que le GOOGLE_APPLICATION_CREDENTIALS
est correctement défini et dispose des autorisations requises avant d'exécuter mon application. Ou, je voudrais exécuter des scripts de configuration ou des scripts cron qui effectuent une vérification avec la ligne de commande gcloud
.
Les bibliothèques Google Cloud (par exemple python , Java ) utilisent automatiquement la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
pour vous authentifier auprès de Google Cloud. Mais malheureusement, cette ligne de commande semble n'avoir aucun effet sur gcloud
. Quelle est une façon propre d'utiliser gcloud
tout en laissant le système de fichiers intact?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
gcloud
n'utilise généralement pas GOOGLE_APPLICATION_CREDENTIALS
variable d'environnement. Il ne contient que quelques commandes pour faciliter la configuration de ces informations d'identification par défaut de l'application dans gcloud auth application-default [login|revoke|print-access-token...]
.
Par défaut, gcloud
stocke sa configuration dans $ {HOME} /. Config/gcloud. Il est possible de remplacer cet emplacement en définissant CLOUDSDK_CONFIG
variable d'environnement.
Il est également possible (bien que plus fastidieux) de remplacer la plupart des paramètres afin qu'ils n'aient pas besoin d'être préconfigurés via gcloud config set ...
et/ou gcloud auth activate-service-account
. Pour chaque paramètre, on peut spécifier une variable d'environnement.
Par exemple, la commande équivalente que vous avez essayé d'utiliser le fichier de clé de compte de service serait:
$ CLOUDSDK_AUTH_CREDENTIAL_FILE_OVERRIDE=/etc/my-service-account-4b4b6e63aaed.json \
gcloud alpha pubsub topics publish testtopic hello
Notez que cela mettra toujours en cache les informations d'identification dans CLOUDSDK_CONFIG
car il doit mettre en cache le jeton d'accès, de sorte qu'il n'aura pas à le rafraîchir à chaque appel.
Pour votre cas d'utilisation, la meilleure option à mon avis serait
CLOUDSDK_CONFIG
vers un répertoire temporairegcloud auth activate-service-account --key-file=...
gcloud
pour faire votre travail ...CLOUDSDK_CONFIG
répertoire.1) Créez un ServiceAccount dans GCP IAM. Cochez la case "Fournir une nouvelle clé privée" et sélectionnez JSON comme type de fichier.
2) Téléchargez le fichier JSON sur votre serveur et tapez: gcloud auth activate-service-account --key-file serviceaccount.json
3) Vérifiez que les informations d'identification ont été appliquées en exécutant gcloud auth list
.
Avez-vous regardé le --account
option? Comme
$gcloud --account="foo" ...
( Référence )
En ce qui concerne "De préférence sans joncher le système de fichiers de fichiers d'informations d'identification", je ne sais pas si c'est possible.