Configura l'accesso a un sink: file system

Quando trasferisci dati a un file system on-premise o cloud privato (ad esempio POSIX, NFS o SMB), devi configurare quanto segue:

  • Autorizzazioni del file system locale: concedi agli agenti di trasferimento di destinazione l'accesso in scrittura a livello di sistema operativo alle directory di destinazione.
  • Autorizzazioni del bucket intermedio (solo da file a file): concedi i ruoli IAM sul bucket Cloud Storage intermedio utilizzato per la gestione temporanea dei file tra i file system.

Prerequisiti

  • Autorizzazioni utente: assicurati che il tuo account utente o account di servizio gestito dall'utente disponga dell'autorizzazione per configurare i job di trasferimento e i pool di agenti. Consulta Autorizzazioni utente richieste.
  • Autorizzazioni a livello di progetto basate su agenti: assicurati di aver configurato i ruoli a livello di progetto richiesti per l'account dell'agente di servizio e dell'agente di trasferimento. Vedi Autorizzazioni a livello di progetto basate su agenti.

Autorizzazioni del file system di destinazione locale

Gli agenti di trasferimento scrivono i file direttamente nel file system host. Per consentire scritture riuscite:

  1. Autorizzazioni utente del sistema operativo: assicurati che l'utente del sistema operativo che esegue il processo del container disponga delle autorizzazioni di lettura, scrittura ed esecuzione nell'albero delle directory di destinazione.

  2. Monta le directory: quando installi gli agenti di destinazione, monta il percorso della directory di destinazione nel container utilizzando il flag --mount-directories:

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

Autorizzazioni per i bucket intermedi (trasferimenti da file a file)

I trasferimenti tra due file system utilizzano un bucket Cloud Storage intermedio per la gestione temporanea dei file durante il trasferimento.

I seguenti ruoli predefiniti concedono al service agent l'accesso richiesto al bucket intermedio:

  • Storage Object Creator (roles/storage.objectCreator)
  • Storage Object Viewer (roles/storage.objectViewer)
  • Storage Legacy Bucket Reader (roles/storage.legacyBucketReader)

Il seguente ruolo concede l'accesso richiesto al bucket intermedio agli account degli agenti di trasferimento:

  • Storage Object User (roles/storage.objectUser)

Concedi questi ruoli nel bucket intermedio:

Console

  1. Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.

    Vai a Bucket

  2. Fai clic sul menu Extra bucket () per il bucket intermedio e seleziona accesso in modifica.
  3. Fai clic su + Aggiungi entità.
  4. In Nuove entità, inserisci l'indirizzo email del service agent.
  5. Seleziona Storage Object Creator, Storage Object Viewer e Storage Legacy Bucket Reader dai menu a discesa Seleziona un ruolo.
  6. Fai di nuovo clic su + Aggiungi entità.
  7. Inserisci l'indirizzo email degli account degli agenti di trasferimento utilizzati per i pool di agenti di origine e di destinazione.
  8. Seleziona Storage Object User dal menu a discesa Seleziona un ruolo.
  9. Fai clic su Salva.

gcloud

  1. Concedi i ruoli di logging e metadati all'agente di servizio:

    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. Concedi i ruoli di gestione degli oggetti agli account degli agenti di trasferimento per i pool di agenti di origine e di destinazione:

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

    Sostituisci:

    • INTERMEDIATE_BUCKET_NAME: il nome del bucket di gestione temporanea intermedio.
    • SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
    • serviceAccount_OR_user: specifica serviceAccount se l'account dell'agente di trasferimento è un account di servizio o user se gli agenti sono stati installati con un account utente.
    • TRANSFER_AGENT_ACCOUNT: l'indirizzo email dell'account che esegue gli agenti di trasferimento. Ripeti questo comando se i pool di agenti di origine e di destinazione utilizzano account diversi.

API REST

  1. Genera un token di accesso per autenticare la tua richiesta. Se utilizzi l'interfaccia a riga di comando gcloud, esegui:

    gcloud auth print-access-token
  2. Recupera la policy IAM del bucket esistente (GET https://storage./storage/v1/b/<var>INTERMEDIATE_BUCKET_NAME</var>/iam), aggiungi le seguenti associazioni al relativo array bindings e salva la policy unita come 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"]
        }
      ]
    }

    Sostituisci:

    • SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
    • serviceAccount_OR_user: specifica serviceAccount se l'account dell'agente di trasferimento è un account di servizio o user se gli agenti sono stati installati con un account utente.
    • TRANSFER_AGENT_ACCOUNT: l'indirizzo email dell'account che ha installato gli agenti di trasferimento. Se i pool di agenti di origine e di destinazione utilizzano account diversi, includi entrambi gli account nell'array members per roles/storage.objectUser.
  3. Aggiorna la policy del bucket intermedio tramite 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"

    Sostituisci:

    • OAUTH2_TOKEN: il token di accesso OAuth 2.0 generato nel passaggio 1.
    • INTERMEDIATE_BUCKET_NAME: il nome del bucket intermedio.

Per ulteriori informazioni sulle architetture file-to-file, consulta Trasferimenti da file system a file system.

Prestazioni e ottimizzazione

  • Per massimizzare la velocità effettiva durante il trasferimento a file system di grandi dimensioni, installa più agenti nel pool di agenti di destinazione (minimo consigliato: 3). Consulta le best practice per gli agenti di trasferimento.
  • Per i file di grandi dimensioni nei trasferimenti da file a file, valuta la possibilità di attivare i caricamenti multiparte nel bucket intermedio. Quando utilizzi Storage Object User (roles/storage.objectUser), le autorizzazioni di caricamento multiparte richieste (storage.multipartUploads.*) vengono incluse automaticamente.

Passaggi successivi