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 Aufgaben in den folgenden Abschnitten aus, um signierte URLs zu erstellen.
Service Account Credentials API aktivieren
Enable the Service Account Credentials API.
Erforderliche Rollen abrufen
Bitten Sie Ihren Administrator, die folgenden Rollen zuzuweisen, um die erforderlichen Berechtigungen zum Erstellen einer signierten URL zum Herunterladen und Hochladen von Objekten zu erhalten:
Storage-Objekt-Nutzer (
roles/storage.objectUser
): Diese Rolle ist zum Herunterladen, Hochladen und Überschreiben von Objekten erforderlich. Diese Rolle sollte dem Dienstkonto zugewiesen werden, dessen Schlüssel zum Signieren der URL verwendet wird.Wenn Sie nur Objekte herunterladen möchten, bitten Sie Ihren Administrator, dem Dienstkonto die Rolle „Storage-Objekt-Betrachter“ (
roles/storage.objectViewer
) anstelle der Rolle „Storage-Objekt-Nutzer“ zuzuweisen.Wenn Sie nur Objekte hochladen möchten, ohne sie zu überschreiben, bitten Sie Ihren Administrator, dem Dienstkonto die Rolle "Storage-Objekt-Ersteller" (
roles/storage.objectCreator
) anstelle der Rolle "Storage-Objekt-Nutzer" zuzuweisen.
Ersteller von Dienstkonto-Tokens (
roles/iam.serviceAccountTokenCreator
): Diese Rolle ist erforderlich, um kurzlebige Anmeldedaten für ein Dienstkonto zu generieren, wenn keine private Schlüsseldatei lokal bereitgestellt wird. Diese Rolle sollte dem Hauptkonto zugewiesen werden, das die signierte URL erstellt.Wenn Sie Nutzeranmeldedaten für die Authentifizierung verwenden, muss Ihre Nutzeridentität diese Rolle haben und Sie müssen Befehle ändern, um die Identität des Dienstkontos zu übernehmen, mit dem die URL signiert wird.
Wenn Sie zur Authentifizierung ein Dienstkonto verwenden, das einer Compute-Instanz zugeordnet ist, muss das Dienstkonto diese Rolle haben, um dessen Identität zu übernehmen. Außerdem müssen Sie Befehle ändern, um die Identität des Dienstkontos zu übernehmen, mit dem die URL signiert wurde.
Wenn Sie eine private Schlüsseldatei für die Authentifizierung verwenden, ist diese Rolle nicht erforderlich.
Diese vordefinierten Rollen enthalten die Berechtigungen, die für ein Dienstkonto erforderlich sind, um Objekte über signierte URLs herunter- und hochzuladen. Erweitern Sie den Abschnitt Erforderliche Berechtigungen, um die erforderlichen Berechtigungen anzuzeigen:
Erforderliche Berechtigungen
storage.objects.get
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)iam.serviceAccounts.signBlob
(nicht erforderlich, wenn Sie lokal einen Dienstkontoschlüssel zum Erstellen der Signatur bereitstellen möchten, für den die MethodesignBlob
nicht erforderlich ist)
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.
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
Generieren Sie einen neuen privaten Schlüssel oder verwenden Sie einen vorhandenen privaten Schlüssel für ein Dienstkonto. Der Schlüssel muss im JSON-Format vorliegen.
Weitere Informationen zu privaten Schlüsseln und Dienstkonten finden Sie unter Dienstkonten.
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 --private-key-file=KEY_FILE --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
.KEY_FILE
ist der Pfad zur Datei mit dem privaten Schlüssel Ihres Dienstkontos. Beispiel:Desktop/private-key.json
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=example%40example-pro ject.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog4_requ est&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-signedhe aders=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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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
Generieren Sie einen neuen privaten Schlüssel oder verwenden Sie einen vorhandenen privaten Schlüssel für ein Dienstkonto. Der Schlüssel kann entweder im JSON- oder im PKCS12-Format vorliegen.
Weitere Informationen zu privaten Schlüsseln und Dienstkonten finden Sie unter Dienstkonten.
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 --private-key-file=KEY_FILE --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
.KEY_FILE
ist der Pfad zur Datei mit dem privaten Schlüssel Ihres Dienstkontos. Beispiel:Desktop/private-key.json
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=example%40ex ample-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2F goog4_request&x-goog-date=20230714T223547Z&x-goog-expires=3600&x-g oog-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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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 eine lokale Entwicklungsumgebung 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