Der Storage Transfer Service kann einen Cloud Storage-Quell-Bucket in zwei Übertragungstypen verwenden:
Übertragungen ohne Agent: Cloud-zu-Cloud-Übertragungen, z. B. Cloud Storage zu Cloud Storage, Cloud Storage zu AWS S3 oder Cloud Storage zu Azure Blob Storage. Die Berechtigungen werden dem Storage Transfer Service-Dienst-Agent gewährt.
Agent-gesteuerte Übertragungen: Übertragungen mit Dateisystemen oder lokalem Speicher, die Übertragungs-Agents und Agent-Pools verwenden. 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 Quell-Bucket.
Sie können die Schritte auf dieser Seite überspringen. Konfigurieren Sie bei Bedarf den Zugriff auf Ihr Ziel 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 Quell-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 Quell-Bucket:
- Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader) - Plus:
- Storage-Objekt-Betrachter (
roles/storage.objectViewer), wenn Quellobjekte beibehalten werden. - Storage-Objekt-Nutzer (
roles/storage.objectUser), wenn Quellobjekte nach der Übertragung gelöscht werden (deleteObjectsFromSourceAfterTransfer). - Storage-Objekt-Administrator (
roles/storage.objectAdmin), wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden. Unterstützt auch das Löschen von Quellobjekten nach der Übertragung.
- Storage-Objekt-Betrachter (
Fügen Sie den Dienst-Agent der IAM-Richtlinie des Quell-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 Quell-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 eine der folgenden Optionen aus:
Storage Object ViewerStorage Object UserStorage Object Admin
- 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.legacyBucketReader
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
Ersetzen Sie:
- BUCKET_NAME: Der Name Ihres Quell-Buckets.
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- OBJECT_ROLE: Wählen Sie je nach Übertragungsoption eine der folgenden Optionen aus:
objectViewer: Wenn Quellobjekte beibehalten werden.objectUser: Wenn Quellobjekte nach der Übertragung gelöscht werden.objectAdmin: Gibt an, ob Objekt-ACLs beibehalten werden. Unterstützt auch das Löschen von Quellobjekten nach der Übertragung.
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 alssource_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Ersetzen Sie:
- SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
- OBJECT_ROLE: Wählen Sie
objectVieweraus, wenn Sie Quellobjekte beibehalten möchten,objectUser, wenn Sie Quellobjekte löschen möchten, oderobjectAdmin, wenn Sie Objekt-ACLs beibehalten möchten.
Senden Sie eine
PUT-Anfrage mitcurl:curl -X PUT --data-binary @source_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 Quell-Buckets.
Agentengesteuerte Übertragung
Die folgenden vordefinierten Rollen gewähren dem Dienst-Agent den erforderlichen Zugriff auf den Quell-Bucket:
- Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader) - Storage-Objekt-Ersteller (
roles/storage.objectCreator)
Die folgende Rolle gewährt dem Transfer-Agent-Konto den erforderlichen Zugriff auf den Quell-Bucket:
- Storage-Objekt-Betrachter (
roles/storage.objectViewer), wenn Quellobjekte beibehalten werden, oder Storage-Objekt-Nutzer (roles/storage.objectUser), wenn Quellobjekte nach der Übertragung gelöscht werden.
Weisen Sie diese Rollen für den Quell-Bucket zu.
Console
- Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.
- Klicken Sie auf das Dreipunkt-Menü () des Quell-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 Legacy Bucket ReaderundStorage Object Creatoraus. - 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
Storage Object Vieweraus, wenn Sie Quellobjekte beibehalten möchten, oderStorage Object User, wenn Sie Quellobjekte nach der Übertragung löschen möchten. - Klicken Sie auf Speichern.
gcloud
Weisen Sie dem Dienst-Agent die Rollen zum Lesen von Bucket-Metadaten und zum Schreiben von Übertragungslogs zu:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReadergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorWeisen Sie dem Konto des Übertragungs-Agents Rollen für den Objektzugriff zu:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.OBJECT_ROLEErsetzen Sie:
- BUCKET_NAME: Der Name Ihres Quell-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. - OBJECT_ROLE: Geben Sie
objectVieweran, wenn Quellobjekte beibehalten werden sollen, oderobjectUser, wenn Quellobjekte nach der Übertragung gelöscht 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 alsagent_source_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "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. - OBJECT_ROLE: Geben Sie
objectVieweran, wenn Quellobjekte beibehalten werden sollen, oderobjectUser, wenn Quellobjekte nach der Übertragung gelöscht werden sollen.
Aktualisieren Sie die Bucket-Richtlinie über
curl:curl -X PUT --data-binary @agent_source_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 Quell-Buckets.
Projektübergreifende Cloud Storage-Übertragungen
Wenn Sie Objekte zwischen Cloud Storage-Buckets in verschiedenen Google Cloud-Projekten übertragen möchten, müssen Sie dem Dienst-Agent des Projekts, das die Übertragung erstellt, Berechtigungen sowohl für den Quell- als auch für den Ziel-Bucket gewähren.
Das Nutzerkonto oder das nutzerverwaltete Dienstkonto, mit dem die Übertragung erstellt wird, benötigt nur Berechtigungen für das Projekt, aus dem der Übertragungsjob erstellt wird.
So weisen Sie Rollen für projektübergreifende Übertragungen zu:
- Rufen Sie die E-Mail-Adresse des Dienst-Agents für das Projekt ab, in dem die Übertragung ausgeführt werden soll. Siehe E-Mail-Adresse des Dienst-Agents suchen.
- Weisen Sie diesem Dienst-Agent im Quell-Bucket die folgenden Rollen zu:
- Leser von Legacy-Storage-Buckets (
roles/storage.legacyBucketReader) - Plus eine der folgenden Objektrollen:
- Storage-Objekt-Betrachter (
roles/storage.objectViewer), wenn Quellobjekte beibehalten werden. - Storage-Objekt-Nutzer (
roles/storage.objectUser), wenn Quellobjekte nach der Übertragung gelöscht werden (deleteObjectsFromSourceAfterTransfer). - Storage-Objekt-Administrator (
roles/storage.objectAdmin), wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden. Unterstützt auch das Löschen von Quellobjekten nach der Übertragung.
- Storage-Objekt-Betrachter (
- Leser von Legacy-Storage-Buckets (
- Weisen Sie dem gleichen Dienst-Agenten für den Ziel-Bucket die folgenden Rollen zu:
- 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.
- Leser von Legacy-Storage-Buckets (
Eine detaillierte Anleitung zum Gewähren des Zugriffs auf den Ziel-Bucket finden Sie unter Zugriff auf eine Senke konfigurieren: Cloud Storage.
Organisationsbeschränkungen
Wenn Ihre Organisation Einschränkungen für Organisationsrichtlinien angewendet hat, müssen diese den Zugriff auf projektübergreifende Dienst-Agents zulassen:
- Domainbeschränkte Freigabe (
constraints/iam.allowedPolicyMemberDomains): Die Richtlinie für das Projekt, in dem der Bucket gehostet wird, muss Mitgliedsdomains zulassen, die den Dienst-Agent enthalten. Weitere Informationen finden Sie unter Domains einschränken. - Projektübergreifende Dienstkontonutzung deaktivieren (
constraints/iam.disableCrossProjectServiceAccountUsage): Achten Sie darauf, dass diese Einschränkung den Zugriff auf projektübergreifende Dienstkonten nicht blockiert. Weitere Informationen finden Sie unter Dienstkonten einschränken. - VPC Service Controls: Wenn Buckets zu verschiedenen Dienstperimetern gehören, konfigurieren Sie Regeln für ein- und ausgehenden Traffic, um die Übertragungskommunikation zuzulassen. Weitere Informationen finden Sie unter VPC Service Controls für Cloud-Objektspeicherübertragungen konfigurieren.
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 Dienstkonto, den Standort des Buckets abzurufen |
storage.objects.list |
Ermöglicht dem Dienstkonto, Objekte im Bucket aufzulisten |
storage.objects.get |
Ermöglicht dem Dienstkonto, Objekte im Bucket zu lesen |
storage.objects.delete |
Ermöglicht dem Dienstkonto, Objekte im Bucket zu löschen. Erforderlich, wenn deleteObjectsFromSourceAfterTransfer true ist. |
storage.objects.getIamPolicy |
Ermöglicht das Lesen von ACLs für Quellobjekte. Erforderlich, wenn die Beibehaltung von Objekt-ACLs (ACL_PRESERVE) aktiviert ist. |
storage.folders.liststorage.folders.get |
Ermöglicht das Auflisten und Lesen von Ordnern. Erforderlich, wenn die Übertragung aus einem Bucket mit aktiviertem hierarchischen Namespace erfolgt. |
Agentengesteuerte Übertragung
Bei agentengesteuerten Übertragungen von einer Cloud Storage-Quelle werden die Berechtigungen auf zwei Hauptkonten aufgeteilt:
Dienst-Agent: Erfordert Lesezugriff auf Bucket-Ebene, um Bucket-Metadaten und den Standort aufzulösen, sowie Zugriff zum Erstellen von Objekten, um Agent-Übertragungsprotokolle zu schreiben.
Transfer-Agent-Konto: Das Dienstkonto oder Nutzerkonto, das zum Erstellen der Transfer-Agents verwendet wird.
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 dem Dienst-Agent, Agent-Übertragungslogs in den Quell-Bucket zu schreiben, wenn von Cloud Storage in ein Dateisystem übertragen wird. |
Berechtigungen für Transfer-Agent-Konto
| Berechtigung | Beschreibung |
|---|---|
storage.objects.list |
Ermöglicht Agents, Objekte im Quell-Bucket aufzulisten. |
storage.objects.get |
Ermöglicht Agents, Objekte aus dem Quell-Bucket zu lesen. |
storage.objects.delete |
Ermöglicht es Agents, Quellobjekte zu löschen, wenn deleteObjectsFromSourceAfterTransfer aktiviert ist. |
storage.folders.liststorage.folders.get |
Ermöglicht Agents, Ordner aufzulisten und zu lesen, wenn sie aus einem Bucket mit aktiviertem hierarchischen Namespace übertragen werden. |
Nächste Schritte
Sie müssen den Zugriff auf Ihr Ziel konfigurieren: