Der Storage Transfer Service kann einen Cloud Storage-Ziel-Bucket (Senke) in zwei Übertragungstypen verwenden:
Agentenlose Übertragungen: Cloud-zu-Cloud-Übertragungen wie AWS S3, Azure Blob Storage oder Cloud Storage zu Cloud Storage. Berechtigungen werden dem Storage Transfer Service-Dienst-Agent gewährt.
Agent-gesteuerte Übertragungen: Übertragungen von Dateisystemen, HDFS oder S3-kompatiblem Speicher zu Cloud Storage, bei denen Übertragungs-Agents und Agent-Pools verwendet werden. Berechtigungen müssen sowohl dem Dienst-Agent als auch dem Übertragungs-Agent-Konto gewährt werden.
Berechtigungen in der Google Cloud Console automatisch gewähren
Wenn Sie die Google Cloud Console verwenden, um eine Übertragung ohne Agent zu erstellen, und die erforderlichen Nutzerberechtigungen haben, erhält der Dienst-Agent automatisch die erforderlichen Berechtigungen für Ihren Ziel-Bucket.
Sie können die Schritte auf dieser Seite überspringen. Konfigurieren Sie bei Bedarf den Zugriff auf Ihre Quelle und erstellen Sie dann eine Übertragung.
Vorbereitung
Nutzerkontoberechtigungen: Damit Sie die auf dieser Seite aufgeführten erforderlichen IAM-Rollen zuweisen können, muss Ihr Nutzerkonto (oder nutzerverwaltetes Dienstkonto) Berechtigungen zum Ändern von IAM-Richtlinien für Ihren Ziel-Bucket und Ihr Agent-Pool-Projekt haben. Weitere Informationen zu den Anforderungen an Nutzerkonten finden Sie unter Nutzerkontoberechtigungen.
Projektberechtigungen für agentenbasierte Übertragungen: Achten Sie bei agentenbasierten Übertragungen darauf, dass Sie die erforderlichen Rollen auf Projektebene für Ihr Dienst-Agent- und Übertragungs-Agent-Konto konfiguriert haben. Weitere Informationen finden Sie unter Agent-basierte Berechtigungen auf Projektebene.
E-Mail-Adresse des Dienst-Agents suchen
Der Dienst-Agent wird automatisch erstellt, wenn Sie zum ersten Mal einen Übertragungsjob erstellen, gcloud transfer-Einrichtungsbefehle ausführen, die Seite Storage Transfer in derGoogle Cloud Console aufrufen oder googleServiceAccounts.get aufrufen.
So rufen Sie die E-Mail-Adresse des Dienst-Agents ab, die zur Identifizierung in Storage Transfer Service-Befehlen verwendet wird:
- Rufen Sie die Referenzseite
googleServiceAccounts.getauf. Es wird ein interaktives Steuerfeld mit dem Titel Diese Methode testen geöffnet. - Geben Sie im Steuerfeld unter Anfrageparameter Ihre Projekt-ID ein.
- Klicken Sie auf Ausführen.
Kopieren Sie den Wert von accountEmail. Das Format ist: project-PROJECT_NUMBER@storage-transfer-service..
Erforderliche Berechtigungen erteilen
Wählen Sie den Übertragungstyp aus, um die Schritte zum Gewähren des Zugriffs aufzurufen.
Übertragung ohne Agenten
Die folgenden vordefinierten Rollen gewähren dem Dienst-Agent die erforderlichen Berechtigungen für den Ziel-Bucket:
- Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader) - Storage-Objekt-Nutzer (
roles/storage.objectUser) oder Storage-Objekt-Administrator (roles/storage.objectAdmin), wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden.
Fügen Sie den Dienst-Agent der IAM-Richtlinie des Ziel-Buckets hinzu:
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf das Dreipunkt-Menü () für den Ziel-Bucket.
- Wählen Sie Zugriff bearbeiten aus.
- Klicken Sie auf + Hauptkonto hinzufügen.
- Geben Sie unter Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
- Wählen Sie im Drop-down-Menü Rolle auswählen die Option
Storage Legacy Bucket Readeraus. - Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie
Storage Object Useraus oderStorage Object Admin, wenn Objekt-ACLs beibehalten werden sollen. - Klicken Sie auf Speichern.
gcloud
Führen Sie folgende gcloud storage-Befehle aus:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Ersetzen Sie:
- BUCKET_NAME: Der Name Ihres Ziel-Buckets.
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- OBJECT_ROLE: Geben Sie standardmäßig
objectUseran oderobjectAdmin, wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden sollen.
REST API
Generieren Sie ein Zugriffstoken, um Ihre Anfrage zu authentifizieren. Wenn Sie die
gcloud-Befehlszeile verwenden, führen Sie Folgendes aus:gcloud auth print-access-token
Rufen Sie die vorhandene Bucket-IAM-Richtlinie (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam) ab, hängen Sie die folgenden Bindungen an das Arraybindingsan und speichern Sie die zusammengeführte Richtlinie alssink_policy.json:{ "bindings": [ { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Ersetzen Sie:
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- OBJECT_ROLE: Geben Sie standardmäßig
objectUseran oderobjectAdmin, wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden sollen.
Senden Sie eine
PUT-Anfrage mitcurl:curl -X PUT --data-binary @sink_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
Ersetzen Sie:
- OAUTH2_TOKEN: Das in Schritt 1 generierte OAuth 2.0-Zugriffstoken.
- BUCKET_NAME: Der Name Ihres Ziel-Buckets.
Agentengesteuerte Übertragung
Die folgenden vordefinierten Rollen gewähren dem Dienst-Agent den erforderlichen Zugriff auf den Ziel-Bucket:
- Storage-Objekt-Ersteller (
roles/storage.objectCreator) - Storage-Objekt-Betrachter (
roles/storage.objectViewer) - Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader)
Die folgende Rolle gewährt dem Transfer-Agent-Konto den erforderlichen Zugriff auf den Ziel-Bucket:
- Storage-Objekt-Nutzer (
roles/storage.objectUser)
Weisen Sie diese Rollen für den Ziel-Bucket zu.
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf das Dreipunkt-Menü () des Ziel-Buckets und wählen Sie Zugriff bearbeiten aus.
- Klicken Sie auf + Hauptkonto hinzufügen.
- Geben Sie unter Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
- Wählen Sie im Drop-down-Menü Rolle auswählen die Optionen
Storage Object Creator,Storage Object ViewerundStorage Legacy Bucket Readeraus. - Klicken Sie noch einmal auf + Hauptkonto hinzufügen.
- Geben Sie die E-Mail-Adresse Ihres Übertragungsagentenkontos ein. Dies ist das Nutzer- oder Dienstkonto, das bei der Installation von Übertragungs-Agents verwendet wird. Beispiel:
my-agent-sa@PROJECT_ID.oderuser@example.com. - Wählen Sie im Drop-down-Menü Rolle auswählen die Option
Storage Object Useraus. - Klicken Sie auf Speichern.
gcloud
Weisen Sie dem Dienst-Agenten Logging- und Betrachterrollen zu:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderWeisen Sie dem Konto des Übertragungs-Agents Schreib- und Verwaltungsrollen zu:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserErsetzen Sie:
- BUCKET_NAME: Der Name Ihres Ziel-Buckets.
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- serviceAccount_OR_user: Geben Sie entweder
serviceAccountan, wenn Ihr Übertragungs-Agent-Konto ein Dienstkonto ist, oderuser, wenn Ihre Agents mit einem Nutzerkonto installiert wurden. - TRANSFER_AGENT_ACCOUNT: Die E-Mail-Adresse des Kontos, über das Ihre Übertragungs-Agents installiert wurden. Beispiel:
my-agent-sa@PROJECT_ID.oderuser@example.com.
REST API
Generieren Sie ein Zugriffstoken, um Ihre Anfrage zu authentifizieren. Wenn Sie die
gcloud-Befehlszeile verwenden, führen Sie Folgendes aus:gcloud auth print-access-token
Rufen Sie die vorhandene Bucket-IAM-Richtlinie (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam) ab, hängen Sie die folgenden Bindungen an das Arraybindingsan und speichern Sie die zusammengeführte Richtlinie alsagent_sink_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Ersetzen Sie:
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- serviceAccount_OR_user: Geben Sie entweder
serviceAccountan, wenn Ihr Übertragungs-Agent-Konto ein Dienstkonto ist, oderuser, wenn Ihre Agents mit einem Nutzerkonto installiert wurden. - TRANSFER_AGENT_ACCOUNT: Die E-Mail-Adresse des Kontos, über das Ihre Übertragungs-Agents installiert wurden. Beispiel:
my-agent-sa@PROJECT_ID.oderuser@example.com.
Aktualisieren Sie die Bucket-Richtlinie über
curl:curl -X PUT --data-binary @agent_sink_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"Ersetzen Sie:
- OAUTH2_TOKEN: Das in Schritt 1 generierte OAuth 2.0-Zugriffstoken.
- BUCKET_NAME: Der Name Ihres Ziel-Buckets.
Referenz für detaillierte Berechtigungen
Wählen Sie den Übertragungstyp aus, um die erforderlichen Rollen und Berechtigungen aufzurufen.
Übertragung ohne Agenten
Für agentenlose Übertragungen müssen dem Storage Transfer Service-Dienst-Agent Berechtigungen gewährt werden:
| Berechtigung | Beschreibung |
|---|---|
storage.buckets.get |
Ermöglicht dem Dienst-Agent, Bucket-Metadaten und den Standort zu prüfen. |
storage.objects.create |
Ermöglicht dem Dienst-Agent, übertragene Objekte in den Ziel-Bucket zu schreiben. |
storage.objects.get |
Ermöglicht das Ansehen vorhandener Objekte und Metadaten. Erforderlich, wenn die Übertragung so konfiguriert ist, dass Objekte in der Senke überschrieben werden, wenn sie unterschiedlich sind oder nie. |
storage.objects.list |
Ermöglicht das Auflisten von Objekten im Ziel-Bucket. Erforderlich, wenn geprüft wird, ob Objekte bereits im Senke vorhanden sind. |
storage.objects.delete |
Ermöglicht das Löschen von Objekten im Ziel-Bucket. Erforderlich, wenn Optionen zum Überschreiben oder Löschen eindeutiger Objekte aktiviert sind. |
storage.objects.setIamPolicy |
Ermöglicht das Festlegen von Objekt-ACLs im Ziel-Bucket. Erforderlich, wenn die Beibehaltung von Objekt-ACLs (ACL_PRESERVE) aktiviert ist. |
storage.folders.createstorage.folders.get |
Ermöglicht das Erstellen und Lesen von Ordnern. Erforderlich, wenn die Übertragung in einen Ziel-Bucket mit aktiviertem hierarchischen Namespace erfolgt. |
Agentengesteuerte Übertragung
Bei agentengesteuerten Übertragungen an ein Cloud Storage-Ziel werden die Berechtigungen auf zwei Hauptkonten aufgeteilt:
Dienst-Agent: Erfordert Berechtigungen zum Schreiben von Übertragungsprotokollen und zum Prüfen, ob Objekte im Ziel-Bucket vorhanden sind.
Transfer-Agent-Konto: Das Dienstkonto oder Nutzerkonto, mit dem die Transfer-Agents ausgeführt werden, die Dateien in Cloud Storage schreiben.
Berechtigungen des Dienst-Agents
| Berechtigung | Beschreibung |
|---|---|
storage.buckets.get |
Ermöglicht dem Dienst-Agent, Bucket-Metadaten und den Standort zu prüfen. |
storage.objects.create |
Ermöglicht das Erstellen von Übertragungslogs im Bucket. |
storage.objects.get |
Ermöglicht die Prüfung, ob Objekte bereits übertragen wurden. |
Berechtigungen für Transfer-Agent-Konto
| Berechtigung | Beschreibung |
|---|---|
storage.objects.create |
Ermöglicht es Agents, während der Übertragung Objekte in den Ziel-Bucket zu schreiben. |
storage.objects.get |
Ermöglicht Agents, Objektdaten und Metadaten im Ziel-Bucket zu lesen. |
storage.objects.list |
Ermöglicht Agents, vorhandene Objekte im Ziel-Bucket aufzulisten. |
storage.objects.delete |
Erforderlich, wenn die Übertragung so konfiguriert ist, dass Objekte in der Senke überschrieben oder gelöscht werden. |
storage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listPartsstorage.multipartUploads.list |
Ermöglicht es KI-Agenten, mehrteilige Uploads für große Dateien durchzuführen. Automatisch in roles/storage.objectUser enthalten. |
storage.folders.createstorage.folders.get |
Ermöglicht es Agents, Ordner zu erstellen und zu lesen, wenn sie in einen Ziel-Bucket mit aktiviertem hierarchischen Namespace übertragen werden. |