Anmeldedaten für verschiedene Anwendungsfälle
Übersicht
gsutil unterstützt derzeit verschiedene Anmeldedaten-/Authentifizierungstypen sowie die Möglichkeit, anonym auf öffentliche Daten zuzugreifen. Jeder dieser Anmeldedatentypen wird weiter unten ausführlicher erklärt. Sie finden dort außerdem Informationen zum Konfigurieren und Verwenden von Anmeldedaten über das Cloud SDK.
Anmeldedaten über die Cloud SDK-Distribution von gsutil konfigurieren/verwenden
Wenn gsutil über das Cloud SDK ("gcloud") installiert/verwendet wird, werden die Anmeldedaten vom Cloud SDK in einer nicht vom Nutzer bearbeitbaren Datei unter ~/.config/gcloud gespeichert. Jegliche Bearbeitung von Anmeldedaten sollte über den Befehl "gcloud auth" erfolgen. Wenn Sie mehrere Anmeldedaten einrichten müssen, z. B. für ein persönliches Nutzerkonto und für ein Dienstkonto, verwaltet der Befehl "gcloud auth" die Anmeldedaten für Sie. Mit dem Befehl "gcloud auth" können Sie auch zwischen Anmeldedaten wechseln. Weitere Informationen finden Sie unter https://cloud.google.com/sdk/gcloud/reference/auth.
Sobald die Anmeldedaten über "gcloud auth" konfiguriert wurden, werden diese auch verwendet, unabhängig davon, ob der Nutzer boto-Konfigurationsdateien hat (die sich unter ~/.boto befinden, sofern kein anderer Pfad in der Umgebungsvariablen BOTO_CONFIG angegeben ist). gsutil sucht jedoch weiterhin nach Anmeldedaten in der boto-Konfigurationsdatei, wenn ein Anmeldedatentyp außerhalb von Cloud Storage erforderlich ist, der nicht im gcloud-Anmeldedatenspeicher vorhanden ist (z. B. HMAC-Anmeldedaten für ein S3-Konto).
Unterstützte Anmeldedatentypen
gsutil unterstützt mehrere Typen von Anmeldedaten. Die jeweilige Untergruppe hängt davon ab, welche gsutil-Distribution Sie verwenden (siehe oben).
- OAuth2-Nutzerkonto:
Dies ist der bevorzugte Anmeldedatentyp für die Authentifizierung von Anfragen im Namen eines bestimmten Nutzers, was wahrscheinlich der häufigste Einsatz von gsutil ist. Dies ist der standardmäßige Anmeldedatentyp, der erstellt wird, wenn Sie "gsutil config" ausführen bzw. "gcloud init" für Cloud SDK-Installationen. Weitere Informationen zur OAuth2-Authentifizierung finden Sie unter https://developers.google.com/accounts/docs/OAuth2#scenarios.
- HMAC:
Dieser Anmeldedatentyp kann von Programmen verwendet werden, die mit HMAC-Authentifizierung implementiert werden. Dieser Authentifizierungsmechanismus wird von bestimmten anderen Cloud Storage-Dienstanbietern unterstützt. Er kann auch für die interaktive Authentifizierung eingesetzt werden, wenn Daten zu/von Dienstanbietern verschoben werden, die HMAC-Anmeldedaten unterstützen. Dieser Anmeldedatentyp wird erstellt, wenn Sie "gsutil config -a" ausführen.
Beachten Sie, dass Sie HMAC-Anmeldedaten sowohl für Cloud Storage als auch für einen anderen Dienstanbieter einrichten können. Sie können auch OAuth2-Anmeldedaten für ein Cloud Storage-Nutzerkonto und HMAC-Anmeldedaten für einen anderen Dienstanbieter einrichten. Dazu können Sie nach dem Ausführen des Befehls "gsutil config" (oder "gcloud init" für Cloud SDK-Installationen) die erzeugte Konfigurationsdatei ~/.boto bearbeiten und nach Kommentaren suchen, die angeben, wo andere Anmeldedaten hinzugefügt werden können.
Weitere Informationen zur HMAC-Authentifizierung finden Sie unter https://developers.google.com/storage/docs/reference/v1/getting-startedv1#keys
- OAuth2-Dienstkonto:
Dies ist der bevorzugte Anmeldedatentyp, der bei der Authentifizierung im Namen eines Dienstes oder einer Anwendung (und nicht eines Nutzers) verwendet werden sollte. Wenn Sie beispielsweise gsutil über einen nächtlichen Cronjob ausführen, um Daten hoch- oder herunterzuladen, ist der Cronjob durch den Einsatz eines Dienstkontos nicht von den Anmeldedaten eines einzelnen Mitarbeiters in Ihrem Unternehmen abhängig. Dieser Anmeldedatentyp wird konfiguriert, wenn Sie "gsutil config -e" ausführen. Wenn die Installation über das Cloud SDK erfolgt ist, führen Sie "gcloud auth activate-service-account" aus, um Anmeldedaten für ein Dienstkonto zu konfigurieren.
Beachten Sie, dass ein Dienstkonto für den API-Zugriff standardmäßig als Bearbeiter und nicht als Inhaber betrachtet wird. Insbesondere kann es vorkommen, dass Bearbeiter die Zugriffsberechtigung "Inhaber" in den Standard-ACLs für Objekte und Buckets haben, der Inhaberzugriff der Bearbeiter aber von den Optionen für vordefinierte ACLs entfernt wird. Dies kann zu unerwarteten Ergebnissen führen. Die Lösung für dieses Problem besteht darin, "gsutil acl ch" anstelle von "gsutil acl set <canned-ACL>" zu verwenden, um die Berechtigungen für einen Bucket zu ändern.
Informationen zum Einrichten von Anmeldedaten für ein Dienstkonto mit "gsutil config -e" oder "gcloud auth activate-service-account" finden Sie unter https://cloud.google.com/storage/docs/authentication#generating-a-private-key
Weitere Informationen zu OAuth2-Dienstkonten finden Sie unter https://developers.google.com/accounts/docs/OAuth2ServiceAccount.
Weitere Informationen zu Kontorollen finden Sie unter https://developers.google.com/console/help/#DifferentRoles.
- Internes Compute Engine-Dienstkonto:
Dies ist der Dienstkontotyp, der für von App Engine oder Compute Engine gehostete Konten verwendet wird. Diese Anmeldedaten werden automatisch in Compute Engine erstellt, wenn Sie den Befehl
gcloud compute instances create
ausführen. Die Anmeldedaten können mit dem Flag--scopes
gesteuert werden.Weitere Informationen zur Verwendung von Dienstkonto-Anmeldedaten für die Authentifizierung von Arbeitslasten in Compute Engine finden Sie unter https://cloud.google.com/compute/docs/access/create-enable-service-accounts-for-instances.
Weitere Informationen zu App Engine-Dienstkonten finden Sie unter https://developers.google.com/appengine/docs/python/appidentity/overview
- Identitätsübertragung für ein Dienstkonto:
Die Identitätsübertragung für ein Dienstkonto ist nützlich, wenn Sie kurzfristigen Zugriff auf bestimmte Ressourcen gewähren müssen. Sie haben beispielsweise einen Bucket mit sensiblen Daten, der in der Regel schreibgeschützt ist, möchten aber vorübergehend über ein vertrauenswürdiges Dienstkonto Schreibzugriff darauf gewähren.
Sie können angeben, welches Dienstkonto für die Identitätsübertragung verwendet werden soll. Führen Sie dafür "gsutil -i" und "gsutil config" aus und bearbeiten Sie die boto-Konfigurationsdatei oder verwenden Sie den Befehl "gcloud config set auth/impersonate_service_account [service_account_email_address]".
Wenn Sie eine Identität übertragen möchten, muss Ihren ursprünglichen Anmeldedaten die Rolle "roles/iam.serviceAccountTokenCreator" im Zieldienstkonto zugewiesen werden. Weitere Informationen finden Sie unter https://cloud.google.com/iam/docs/creating-short-lived-service-account-credentials.
- Externe Kontoanmeldedaten (Workload Identity Federation):
Mithilfe der Workload Identity Federation können Sie über Amazon Web Services (AWS), Microsoft Azure oder einen anderen Identitätsanbieter, der OpenID Connect (OIDC) oder SAML 2.0 unterstützt, auf Google Cloud-Ressourcen zugreifen.
Weitere Informationen finden Sie unter https://cloud.google.com/iam/docs/using-workload-identity-federation