Die V4-Signatur ist ein Prozess, mit dem Sie Signaturen für die Authentifizierung in Cloud Storage XML API-Anfragen generieren können. Auf dieser Seite wird beschrieben, wie Sie mit der Google Cloud CLI und den Cloud Storage-Clientbibliotheken signierte URLs mithilfe von Dienstkonto-Anmeldedaten erstellen. Signierte URLs bieten zeitlich begrenzten Lese- oder Schreibzugriff auf eine bestimmte Cloud Storage-Ressource. Wenn Sie ein eigenes Programm zum Erstellen signierter URLs erstellen möchten, lesen Sie sich V4-Signaturprozess mit einem eigenen Programm durch.
Hinweise
Führen Sie die folgenden Schritte aus, bevor Sie die Aufgaben auf dieser Seite ausführen:
Enable the Service Account Credentials API.
Dienstkonto erstellen Wenn Sie bereits ein Dienstkonto haben, mit dem Sie URLs signieren möchten, können Sie diesen Schritt überspringen.
Erteilen Sie dem Dienstkonto ausreichende Berechtigungen, um die Anfrage der signierten URL ausführen zu können. Wenn die signierte URL beispielsweise einem Nutzer das Lesen von Objektdaten ermöglicht, muss das Dienstkonto selbst die Berechtigung zum Lesen der Objektdaten haben.
Bitten Sie Ihren Administrator, dem Dienstkonto eine der folgenden IAM-Rollen zuzuweisen, um die in diesem Leitfaden beschriebenen Aufgaben ausführen zu können:
Storage-Objekt-Nutzer (
roles/storage.objectUser
): Mit dieser Rolle können Sie signierte URLs sowohl zum Hoch- als auch zum Herunterladen von Objekten erstellen. Diese Rolle ist auch erforderlich, wenn die signierte URL ein vorhandenes Objekt überschreiben könnte.Storage-Objekt-Betrachter (
roles/storage.objectViewer
): Verwenden Sie diese Rolle, wenn Sie nur signierte URLs zum Herunterladen von Objekten erstellen möchten.Storage-Objekt-Ersteller (
roles/storage.objectCreator
): Verwenden Sie diese Rolle, wenn Sie nur signierte URLs zum Hochladen von Objekten erstellen möchten und das hochgeladene Objekt kein vorhandenes Objekt im Bucket überschreibt.
Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Erstellen signierter URLs erforderlich sind, über die Objekte herunter- und hochgeladen werden. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
storage.objects.get
(nicht erforderlich, wenn Sie nur Objekte hochladen möchten)storage.objects.create
(nicht erforderlich, wenn Sie nur Objekte herunterladen möchten)storage.objects.delete
(nicht erforderlich, wenn Sie beim Hochladen keine Objekte überschreiben müssen)
Sie können diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten. Informationen dazu, welche Rollen mit welchen Berechtigungen verknüpft sind, finden Sie unter IAM-Rollen für Cloud Storage.
Sie haben ausreichende Berechtigungen, um Blobs mit dem Dienstkonto zu signieren. Bitten Sie Ihren Administrator, Ihnen die Rolle „Ersteller von Dienstkonto-Tokens“ (
roles/iam.serviceAccountTokenCreator
) zu gewähren.Wenn Sie Nutzeranmeldedaten für die Authentifizierung verwenden, sollten Sie der Hauptbenutzer sein, dem diese Rolle zugewiesen ist. Diese Rolle sollte dem Dienstkonto zugewiesen werden, mit dem die signierten URLs erstellt werden.
Wenn Sie zur Authentifizierung ein Dienstkonto verwenden, das einer Compute-Instanz zugeordnet ist, muss das Dienstkonto das Hauptkonto für diese Rolle sein, um seine Identität zu übernehmen. Diese Rolle sollte dem Projekt gewährt werden, das das Dienstkonto enthält.
Diese vordefinierte Rolle enthält die Berechtigung, Blobs mit einem Dienstkonto zu signieren. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderliche Berechtigung anzuzeigen:
Erforderliche Berechtigungen
iam.serviceAccounts.signBlob
Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten. Informationen dazu, welche Rollen mit welchen Berechtigungen verknüpft sind, finden Sie unter IAM-Rollen für Cloud Storage.
Eine Anleitung zum Zuweisen von Rollen für Projekte finden Sie unter Zugriff auf Projekte verwalten.
Signierte URL zum Herunterladen eines Objekts erstellen
Führen Sie die folgenden Schritte aus, um eine signierte URL zu erstellen, mit der ein Objekt aus einem Bucket abgerufen werden kann:
Befehlszeile
Führen Sie den Befehl
gcloud storage sign-url
aus. Mit dem folgenden Befehl wird beispielsweise eine signierte URL erstellt, mit der Nutzer ein Objekt zehn Minuten lang herunterladen können:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --duration=10m
Dabei gilt:
BUCKET_NAME
ist der Name des Buckets, in dem sich das Objekt befindet. Beispiel:example-bucket
.OBJECT_NAME
ist der Name des Objekts, das heruntergeladen werden soll. Beispiel:cat.jpeg
.SERVICE_ACCOUNT_EMAIL
ist die E-Mail-Adresse eines Dienstkontos, mit dessen Schlüssel die Signatur erfolgt. Beispiel:signed-url-account@my-project.iam.gserviceaccount.com
.
Wenn der Vorgang erfolgreich ist, wird Ihnen in etwa folgende Antwort angezeigt:
--- expiration: '2023-07-14 23:19:35' http_verb: GET resource: gs://example-bucket/cat.jpeg signed_url: https://storage.googleapis.com/example-bucket/cat.jpeg? x-goog-signature=11ae9c61ca84dd0bec319f7d52a38029e5873caa2eeced0568 ef96076258cfc1a925a9683cc907d210036b61af9e06a13bf4a15b15fab3916669b e2f4c9f66ea6be822bec5858af519a6da705415b5768721197be213103fa09b8a18 8a143be77a24351517ff208a2c62cfebb78040daf1f953907080bd98f9462739d11 1355b1d9bcf54705b862f37392c031fde0d52add1a4d3bbb98a22e8b7023f6a1623 2e0a2dd56e524d410624d28663e557fafaf4ba0a04290a1066f894713857b429258 d14f056066c7622baf114c124e645688e19b4df3c4a7925f580693c93fa9c1dae7f dff0edff7259c72f3f0eadc5a9f9f556c83c9c8dc02ee3af8d20ab634bad&x-goog -algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-account%40 my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog 4_request&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-si gnedheaders=host
Diese URL kann von jeder Person für den angegebenen Zeitraum (in diesem Fall zehn Minuten) verwendet werden, um auf die zugehörige Ressource (hier
cat.jpeg
) zuzugreifen.
Clientbibliotheken
C++
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
C#
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Signierte URL zum Hochladen eines Objekts erstellen
Führen Sie die folgenden Schritte aus, um eine signierte URL zu erstellen, mit der ein Objekt in einen Bucket hochgeladen werden kann:
Befehlszeile
Führen Sie den Befehl
gcloud storage sign-url
aus. Mit dem folgenden Befehl wird beispielsweise eine signierte URL erstellt, mit der Nutzer eine Datei eine Stunde lang hochladen können:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --http-verb=PUT --duration=1h --headers=content-type=CONTENT_TYPE
BUCKET_NAME
ist der Name des Buckets, in den das Objekt hochgeladen wird. Beispiel:example-bucket
OBJECT_NAME
ist der Name, der dem hochgeladenen Objekt zugewiesen werden soll. Beispiel:cat.png
.SERVICE_ACCOUNT_EMAIL
ist die E-Mail-Adresse eines Dienstkontos, mit dessen Schlüssel die Signatur erfolgt. Beispiel:signed-url-account@my-project.iam.gserviceaccount.com
.CONTENT_TYPE
ist der Inhaltstyp des hochgeladenen Objekts. Beispiel:image/png
.
Wenn der Vorgang erfolgreich ist, wird Ihnen in etwa folgende Antwort angezeigt:
--- expiration: '2023-07-14 23:35:47' http_verb: PUT resource: gs://example-bucket/cat.png signed_url: https://storage.googleapis.com/example-bucket/cat.png? x-goog-signature=2f670a686102963e0574f3c1a3b4d29ee4aa406c1528d42d2 30195d17fef73834b254314de7d7990afd48538a84b66f20010e7ecd90a900490e 6119b7e56a912f71c8d64285c40e86f31b8fec51cf8c7a61ded81de3cedac9c1ca b92474b7371740fdac20b2d8d092b15396f79443bbde954a4174ed11aef6c2cf5f a4d72a84ff60fd6003ed0a505b0e40b6207ddbaec2a15778f715c3ec7537a1b14f b6661b2abaa5736f1670a412ca7e2555c830591f0595c01ff95af7f2206abe2e27 41948c16d4bd4c7cbb25f41277ece59236c06e00ca6c63ae2eb3efc22c216bb24c e1b8b3801d07fd3a7ed3f2df3db6e59c6fc3cc76a002335dd936efd0237cf584e3 6&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-a ccount%40my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstor age%2Fgoog4_request&x-goog-date=20230714T223547Z&x-goog-expires=36 00&x-goog-signedheaders=content-type%3Bhost
Diese URL kann von jeder Person verwendet werden, um eine Ressource (in diesem Fall
cat.png
) in den angegebenen Cloud Storage-Bucket für den angegebenen Zeitraum (in diesem Fall 1 Stunde) hochzuladen.
Clientbibliotheken
C++
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
C#
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Go
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Java
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Node.js
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
PHP
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Python
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Ruby
Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.
Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für Clientbibliotheken einrichten.
Nächste Schritte
- Weitere Informationen zum Signieren von URLs mit Ihrem eigenen Programm
- Weitere Informationen zu signierten URLs
- Objekt mit der XML API hochladen
- Objekte hochladen