Zugriff auf eine Senke konfigurieren: Cloud Storage

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:

  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 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

  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 Ziel-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 Storage Object User aus oder Storage Object Admin, wenn Objekt-ACLs beibehalten werden sollen.
  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.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 objectUser an oder objectAdmin, wenn Objekt-ACLs (ACL_PRESERVE) beibehalten 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 sink_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 objectUser an oder objectAdmin, wenn Objekt-ACLs (ACL_PRESERVE) beibehalten werden sollen.
  3. Senden Sie eine PUT-Anfrage mit curl:

    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

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

    Buckets aufrufen

  2. Klicken Sie auf das Dreipunkt-Menü () des Ziel-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 Object Creator, Storage Object Viewer und Storage Legacy Bucket Reader 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 im Drop-down-Menü Rolle auswählen die Option Storage Object User aus.
  9. Klicken Sie auf Speichern.

gcloud

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

    Ersetzen Sie:

    • BUCKET_NAME: Der Name Ihres Ziel-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.

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_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 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.
  3. 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.create
storage.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.create
storage.multipartUploads.abort
storage.multipartUploads.listParts
storage.multipartUploads.list
Ermöglicht es KI-Agenten, mehrteilige Uploads für große Dateien durchzuführen. Automatisch in roles/storage.objectUser enthalten.
storage.folders.create
storage.folders.get
Ermöglicht es Agents, Ordner zu erstellen und zu lesen, wenn sie in einen Ziel-Bucket mit aktiviertem hierarchischen Namespace übertragen werden.

Nächste Schritte