Was ist der einfachste Weg, die gcloud
Befehlszeile nicht interaktiv mit einem Dienstkonto außerhalb von GCE zu verwenden? Am besten ohne das Dateisystem mit Anmeldeinformationsdateien zu verunreinigen gcloud auth activate-service-account --key-file=...
.
Es gibt viele Anwendungsfälle für die Verwendung gcloud
mit einem Dienstkonto. Auf einem Server möchte ich beispielsweise testen, ob der Server GOOGLE_APPLICATION_CREDENTIALS
korrekt eingestellt ist und über die erforderlichen Berechtigungen verfügt, bevor ich meine Anwendung ausführe. Oder ich möchte einige Setup-Skripte oder Cron-Skripte ausführen, die eine Überprüfung über die gcloud
Befehlszeile durchführen.
Google Cloud-Bibliotheken (z. B. Python , Java ) verwenden automatisch die Umgebungsvariable, GOOGLE_APPLICATION_CREDENTIALS
um sich bei Google Cloud zu authentifizieren. Leider scheint diese Befehlszeile keine Auswirkungen zu haben gcloud
. Was ist eine saubere Methode, gcloud
wenn das Dateisystem intakt bleibt?
$ 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.
quelle
Antworten:
gcloud
Verwendet im Allgemeinen keineGOOGLE_APPLICATION_CREDENTIALS
Umgebungsvariablen. Es gibt nur einige Befehle, um das Einrichten dieser Anwendungsstandardanmeldeinformationen in zu erleichterngcloud auth application-default [login|revoke|print-access-token...]
.Standardmäßig wird
gcloud
die Konfiguration in $ {HOME} /. Config / gcloud gespeichert. Sie können diesen Speicherort überschreiben, indem Sie dieCLOUDSDK_CONFIG
Umgebungsvariable festlegen.Es ist auch möglich (wenn auch langwieriger), die meisten Einstellungen zu überschreiben, damit sie nicht über
gcloud config set ...
und / oder vorkonfiguriert werden müssengcloud auth activate-service-account
. Für jede Einstellung kann eine Umgebungsvariable angegeben werden.Der entsprechende Befehl, mit dem Sie versucht haben, die Schlüsseldatei des Dienstkontos zu verwenden, lautet beispielsweise:
Beachten Sie, dass dadurch weiterhin Anmeldeinformationen zwischengespeichert werden,
CLOUDSDK_CONFIG
da das Zugriffstoken zwischengespeichert werden muss, damit es nicht bei jedem Aufruf aktualisiert werden muss.Für Ihren Anwendungsfall wäre aus meiner Sicht die beste Option
CLOUDSDK_CONFIG
ein temporäres Verzeichnis einstellengcloud auth activate-service-account --key-file=...
gcloud
, um Ihre Arbeit zu erledigen ...CLOUDSDK_CONFIG
Verzeichnis entfernen .quelle
Haben Sie sich die
--account
Option angesehen? Mögen( Referenz )
In Bezug auf "Am besten ohne das Dateisystem mit Anmeldeinformationsdateien zu verunreinigen" bin ich mir nicht sicher, ob dies möglich ist.
quelle
--account=
wenn die Anmeldeinformationen aktiviert wurden.1) Erstellen Sie ein ServiceAccount in GCP IAM. Aktivieren Sie das Kontrollkästchen "Neuen privaten Schlüssel bereitstellen" und wählen Sie JSON als Dateityp aus.
2) Laden Sie die JSON-Datei auf Ihren Server herunter und geben Sie Folgendes ein:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Überprüfen Sie, ob die Anmeldeinformationen durch Ausführen angewendet wurden
gcloud auth list
.quelle