Zugriff auf eine Quelle konfigurieren: Cloud Storage

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:

  1. Rufen Sie die Referenzseite googleServiceAccounts.get auf. Es wird ein interaktives Steuerfeld mit dem Titel Diese Methode testen geöffnet.
  2. Geben Sie im Steuerfeld unter Anfrageparameter Ihre Projekt-ID ein.
  3. 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.

Fügen Sie den Dienst-Agent der IAM-Richtlinie des Quell-Buckets hinzu:

Console

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Buckets aufrufen

  2. Klicken Sie auf das Dreipunkt-Menü () für den Quell-Bucket.
  3. Wählen Sie Zugriff bearbeiten aus.
  4. Klicken Sie auf + Hauptkonto hinzufügen.
  5. Geben Sie unter Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
  6. Wählen Sie im Drop-down-Menü Rolle auswählen die Option Storage Legacy Bucket Reader aus.
  7. Klicken Sie auf Weitere Rolle hinzufügen und wählen Sie eine der folgenden Optionen aus:
    • Storage Object Viewer
    • Storage Object User
    • Storage Object Admin
  8. 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

  1. 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
  2. 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 Array bindings an und speichern Sie die zusammengeführte Richtlinie als source_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 objectViewer aus, wenn Sie Quellobjekte beibehalten möchten, objectUser, wenn Sie Quellobjekte löschen möchten, oder objectAdmin, wenn Sie Objekt-ACLs beibehalten möchten.
  3. Senden Sie eine PUT-Anfrage mit curl:

    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

  1. Wechseln Sie in der Google Cloud Console unter „Cloud Storage“ zur Seite Buckets.

    Buckets aufrufen

  2. Klicken Sie auf das Dreipunkt-Menü () des Quell-Buckets und wählen Sie Zugriff bearbeiten aus.
  3. Klicken Sie auf + Hauptkonto hinzufügen.
  4. Geben Sie unter Neue Hauptkonten die E-Mail-Adresse des Dienst-Agents ein.
  5. Wählen Sie im Drop-down-Menü Rolle auswählen die Optionen Storage Legacy Bucket Reader und Storage Object Creator aus.
  6. Klicken Sie noch einmal auf + Hauptkonto hinzufügen.
  7. 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.oder user@example.com.
  8. Wählen Sie Storage Object Viewer aus, wenn Sie Quellobjekte beibehalten möchten, oder Storage Object User, wenn Sie Quellobjekte nach der Übertragung löschen möchten.
  9. Klicken Sie auf Speichern.

gcloud

  1. 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.legacyBucketReader
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreator
  2. Weisen 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_ROLE

    Ersetzen Sie:

    • BUCKET_NAME: Der Name Ihres Quell-Buckets.
    • SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
    • serviceAccount_OR_user: Geben Sie entweder serviceAccount an, wenn Ihr Übertragungs-Agent-Konto ein Dienstkonto ist, oder user, 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. oder user@example.com.
    • OBJECT_ROLE: Geben Sie objectViewer an, wenn Quellobjekte beibehalten werden sollen, oder objectUser, wenn Quellobjekte nach der Übertragung gelöscht werden sollen.

REST API

  1. 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
  2. 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 Array bindings an und speichern Sie die zusammengeführte Richtlinie als agent_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 serviceAccount an, wenn Ihr Übertragungs-Agent-Konto ein Dienstkonto ist, oder user, 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. oder user@example.com.
    • OBJECT_ROLE: Geben Sie objectViewer an, wenn Quellobjekte beibehalten werden sollen, oder objectUser, wenn Quellobjekte nach der Übertragung gelöscht werden sollen.
  3. 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:

  1. 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.
  2. 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.
  3. 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.

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.list
storage.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.list
storage.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: