Zugriff auf eine Senke konfigurieren: Dateisystem

Wenn Sie Daten in ein lokales oder privates Cloud-Dateisystem (z. B. POSIX, NFS oder SMB) übertragen, müssen Sie Folgendes konfigurieren:

  • Berechtigungen für das lokale Dateisystem: Gewähren Sie den Ziel-Übertragungs-Agents Schreibzugriff auf Betriebssystemebene für Ihre Zielverzeichnisse.
  • Berechtigungen für Zwischen-Bucket (nur Datei-zu-Datei): Gewähren Sie IAM-Rollen für den Zwischen-Cloud Storage-Bucket, der zum Bereitstellen von Dateien zwischen Dateisystemen verwendet wird.

Vorbereitung

  • Nutzerberechtigungen: Ihr Nutzerkonto oder vom Nutzer verwaltetes Dienstkonto muss die Berechtigung zum Konfigurieren von Übertragungsjobs und Agent-Pools haben. Weitere Informationen finden Sie unter Erforderliche Nutzerberechtigungen.
  • Agent-basierte Berechtigungen auf Projektebene: Prüfen Sie, ob Sie die erforderlichen Rollen auf Projektebene für Ihr Dienst-Agent- und Übertragungs-Agent-Konto konfiguriert haben. Siehe Agent-basierte Berechtigungen auf Projektebene.

Berechtigungen für das lokale Zieldateisystem

Übertragungs-Agents schreiben Dateien direkt in das Host-Dateisystem. So ermöglichen Sie erfolgreiche Schreibvorgänge:

  1. Betriebssystem-Nutzerberechtigungen: Der Betriebssystemnutzer, der den Containerprozess ausführt, muss Lese-, Schreib- und Ausführungsberechtigungen für den Zielverzeichnisbaum haben.

  2. Verzeichnisse bereitstellen: Stellen Sie bei der Installation der Ziel-Agents den Zielverzeichnispfad mit dem Flag --mount-directories im Container bereit:

    gcloud transfer agents install --pool=DESTINATION_POOL_NAME \
     --mount-directories=/path/to/destination/dir

Berechtigungen für Zwischen-Buckets (Datei-zu-Datei-Übertragungen)

Bei Übertragungen zwischen zwei Dateisystemen wird ein Cloud Storage-Zwischen-Bucket verwendet, um Dateien während der Übertragung bereitzustellen.

Die folgenden vordefinierten Rollen gewähren dem Dienst-Agent den erforderlichen Zugriff auf den Zwischen-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 den erforderlichen Zugriff auf den Zwischen-Bucket für die Konten der Übertragungs-Agents:

  • Storage-Objekt-Nutzer (roles/storage.objectUser)

Weisen Sie dem Zwischen-Bucket diese Rollen 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ü () für den Zwischen-Bucket 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 der Übertragungs-Agent-Konten ein, die für Ihre Quell- und Ziel-Agent-Pools verwendet werden.
  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-Agent Logging- und Metadatenrollen zu:

    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreator
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewer
    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
  2. Weisen Sie den Konten der Übertragungs-Agents für die Quell- und Ziel-Agent-Pools Rollen für die Objektverwaltung zu:

    gcloud storage buckets add-iam-policy-binding gs://INTERMEDIATE_BUCKET_NAME \
        --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUser

    Ersetzen Sie:

    • INTERMEDIATE_BUCKET_NAME: Der Name Ihres Zwischen-Staging-Buckets.
    • SERVICE_AGENT_EMAIL: Die E-Mail-Adresse des Dienst-Agents.
    • serviceAccount_OR_user: Geben Sie entweder serviceAccount an, wenn Ihr Transfer-Agent-Konto ein Dienstkonto ist, oder user, wenn Ihre Agents mit einem Nutzerkonto installiert wurden.
    • TRANSFER_AGENT_ACCOUNT: Die E-Mail-Adresse des Kontos, auf dem die Übertragungs-Agents ausgeführt werden. Wiederholen Sie diesen Befehl, wenn Ihre Quell- und Ziel-Agent-Pools unterschiedliche Konten verwenden.

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>INTERMEDIATE_BUCKET_NAME</var>/iam) ab, hängen Sie die folgenden Bindungen an das Array bindings an und speichern Sie die zusammengeführte Richtlinie als intermediate_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 Transfer-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. Wenn Ihre Quell- und Ziel-Agent-Pools unterschiedliche Konten verwenden, fügen Sie beide Konten in das members-Array für roles/storage.objectUser ein.
  3. Aktualisieren Sie die Richtlinie für den Zwischen-Bucket über curl:

    curl -X PUT --data-binary @intermediate_policy.json \
        -H "Authorization: Bearer OAUTH2_TOKEN" \
        -H "Content-Type: application/json" \
        "https://storage./storage/v1/b/INTERMEDIATE_BUCKET_NAME/iam"

    Ersetzen Sie:

    • OAUTH2_TOKEN: Das in Schritt 1 generierte OAuth 2.0-Zugriffstoken.
    • INTERMEDIATE_BUCKET_NAME: Der Name Ihres Zwischen-Buckets.

Weitere Informationen zu Datei-zu-Datei-Architekturen finden Sie unter Übertragungen von Dateisystem zu Dateisystem.

Leistung und Optimierung

  • Wenn Sie den Durchsatz bei der Übertragung in große Dateisysteme maximieren möchten, installieren Sie mehrere Agents in Ihrem Ziel-Agent-Pool (empfohlen werden mindestens 3). Weitere Informationen finden Sie unter Best Practices für Übertragungs-Agents.
  • Bei großen Dateien in Datei-zu-Datei-Übertragungen sollten Sie mehrteilige Uploads in den Zwischen-Bucket aktivieren. Wenn Sie Storage-Objekt-Nutzer (roles/storage.objectUser) verwenden, sind die erforderlichen Berechtigungen für mehrteilige Uploads (storage.multipartUploads.*) automatisch enthalten.

Nächste Schritte