Verwenden von JSON-Schlüsseln mit Google Cloud gsutil


14


Ich habe einen privaten ssh-Schlüssel in einer key.jsonDatei und möchte diesen Berechtigungsnachweis verwenden, um mit gsutil auf einen Speicher-Bucket zuzugreifen.

Ich kann anscheinend nichts darüber finden, wie JSON-Schlüssel als Authentifizierungsmethode eingefügt werden können, nur "private" und "geheime" Felder.

Die Dateistruktur lautet:

{
  "private_key_id":
  "private_key": "-----BEGIN PRIVATE KEY-- ...
   "client_email":
   "client_id":
  "type": "service_account"
}

Wie verwende ich gsutildiese Datei?

Antworten:


2

In der Kurzversion müssen Sie den folgenden Befehl ausführen und die Anweisungen befolgen:

gsutil config -e

Das gsutil-Tool verfügt über eine integrierte Hilfe, die für alle Arten von Optionen und Betriebsarten abgerufen werden kann. Während der Ausführung gsutil help creds, eine der Hilfeoptionen, die empfohlen werden, wenn Sie gsutilalleine ausgeführt werden, können Sie den Abschnitt " OAuth2 Service Account" lesen , um die Anweisungen zur Verwendung der JSON-Schlüsseldatei eines Dienstkontos anzuzeigen:

OAuth2 Service Account:

This is the preferred type of credential to use when authenticating on
behalf of a service or application (as opposed to a user). For example, if
you will run gsutil out of a nightly cron job to upload/download data,
using a service account allows the cron job not to depend on credentials of
an individual employee at your company. This is the type of credential that
will be configured when you run "gsutil config -e".

It is important to note that a service account is considered an Editor by
default for the purposes of API access, rather than an Owner. In particular,
the fact that Editors have OWNER access in the default object and
bucket ACLs, but the canned ACL options remove OWNER access from
Editors, can lead to unexpected results. The solution to this problem is to
ensure the service account is an Owner in the Permissions tab for your
project. To find the email address of your service account, visit the
`Google Developers Console <https://cloud.google.com/console#/project>`_,
click on the project you're using, click "APIs & auth", and click
"Credentials".

To create a service account, visit the Google Developers Console and then:

   - Click "APIs & auth" in the left sidebar.

   - Click "Credentials".

   - Click "Create New Client ID".

   - Select "Service Account" as your application type.

   - Save the JSON private key or the .p12 private key and password
     provided.

For further information about account roles, see:
  https://developers.google.com/console/help/#DifferentRoles

For more details about OAuth2 service accounts, see:
  https://developers.google.com/accounts/docs/OAuth2ServiceAccount

Ok, um den Befehl zusammenzufassen gsutil config -e, folgen Sie den Anweisungen
GuySoft

10

Bis heute gsutil config -eist noch im Dokument, wenn Sie dies tun gsutil help config, funktioniert aber nicht. gsutil help credssagt, zuerst zu tungcloud auth activate-service-account

So tat ich:

gcloud auth activate-service-account --key-file=mycredentialsialreadyhad.json

Es füllte sich ~/.config/gcloud/und gsutilfunktioniert jetzt.

Aus den Dokumenten:

OAuth2-Dienstkonto: Dies ist die bevorzugte Art von Anmeldeinformationen, die bei der Authentifizierung im Namen eines Dienstes oder einer Anwendung verwendet werden (im Gegensatz zu einem Benutzer). (...). Dies ist die Art der Anmeldeinformationen, die konfiguriert werden, wenn Sie "gsutil config -e" ausführen. Führen Sie "gcloud auth activate-service-account" aus, um die Anmeldeinformationen des Dienstkontos bei der Installation über das Cloud SDK zu konfigurieren.


2
Dies ist nicht ganz korrekt, der gsutil config -eBefehl funktioniert immer noch, aber nur, wenn Sie gsutileigenständig ausgeführt werden und Google-Cloud-SDK nicht installiert ist.
Jonathan Liuti
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.