Autorizzazioni di trasferimento basate su agenti

Prima di creare un trasferimento basato su agenti, devi configurare le autorizzazioni per le seguenti entità:

  • L'utente o il service account gestito dall'utente utilizzato per creare il trasferimento. Questo è l'account con cui è stato eseguito l'accesso alla console Google Cloud o l'account specificato durante l'autenticazione alla CLI gcloud. L'account utente può essere un account utente normale o un account di servizio gestito dall'utente.

  • Il service account gestito da Google, noto anche come agente di servizio, utilizzato da Storage Transfer Service. Questo account è generalmente identificato dal suo indirizzo email, che utilizza il formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

  • L'account agente di trasferimento che fornisce le autorizzazioni Google Cloud per gli agenti di trasferimento. Gli account agente di trasferimento utilizzano le credenziali dell'utente che li installa o le credenziali di un account di serviziont gestito dall'utente per l'autenticazione.

Per saperne di più sulla concessione dei ruoli IAM, consulta Concessione, modifica e revoca dell'accesso alle risorse.

Metodo più semplice per concedere le autorizzazioni

La CLI gcloud può essere utilizzata per concedere le autorizzazioni richieste all'utente / al account di servizio gestito dall'utente e al account di servizio gestito da Google. Queste autorizzazioni consentono all'utente di creare, modificare ed eliminare i job di trasferimento e impostare o modificare i limiti di larghezza di banda.

Se queste autorizzazioni sono troppo ampie per le policy della tua organizzazione, consulta le sezioni successive di questo documento per le autorizzazioni minime richieste da Storage Transfer Service.

Per esaminare le autorizzazioni esistenti e stampare i ruoli mancanti, esegui il seguente comando:

gcloud transfer authorize

Per applicare automaticamente questi ruoli, utilizza il flag --add-missing:

gcloud transfer authorize --add-missing

Per concedere le autorizzazioni a un account di servizio gestito dall'utente, trasmetti il file delle chiavi del account di servizio:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

Per istruzioni sulla creazione di un account di servizio, vedi Creazione e gestione dei service account.

Il comando concede le seguenti autorizzazioni.

  • All'utente / al account di servizio gestito dall'utente:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Al account di servizio gestito da Google:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Per istruzioni sull'installazione della CLI gcloud, consulta la guida rapida di gcloud.

Autorizzazioni per l'utente o il account di servizio gestito dall'utente

Questa sezione descrive i ruoli richiesti per la gestione degli account e l'esecuzione dei trasferimenti. I requisiti della tua organizzazione determineranno i ruoli esatti per ogni persona. Questa sezione presuppone che tu crei un amministratore e un utente.

Account amministratore

Gli account amministratore Storage Transfer Service gestiscono gli agenti di trasferimento, impostano i limiti di utilizzo della larghezza di banda ed eliminano i job di trasferimento.

Per configurare un account amministratore, assegna i seguenti ruoli e autorizzazioni IAM:

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Questa autorizzazione viene utilizzata per confermare che l'account di servizio gestito da Google dispone delle autorizzazioni necessarie per un trasferimento. Per concedere questa autorizzazione, concedi il ruolo predefinito Visualizzatore ruoli (roles/iam.roleViewer) oppure crea un ruolo personalizzato con questa singola autorizzazione e concedi il ruolo personalizzato.
Storage Transfer Admin (roles/storagetransfer.admin) Consente azioni amministrative nel progetto di trasferimento, ad esempio la configurazione del progetto e il monitoraggio degli agenti. Per un elenco dettagliato delle autorizzazioni concesse, consulta Ruoli predefiniti di Storage Transfer Service.

Account utente

Gli account utente Storage Transfer Service vengono utilizzati per creare ed eseguire i trasferimenti. In genere, questi account non hanno accesso per eliminare i job di trasferimento.

Un account utente può essere un utente della console o un account di servizio account. Google Cloud Se utilizzi un account di servizio, il metodo utilizzato per trasmettere le credenziali a Storage Transfer Service varia a seconda dell'interfaccia utilizzata.

Per configurare un account utente, assegna all'account i seguenti ruoli e autorizzazioni:

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Utilizzato per confermare che il account di servizio gestito da Google disponga delle autorizzazioni Pub/Sub richieste per un trasferimento. Per concedere questa autorizzazione, concedi il ruolo predefinito Visualizzatore ruoli (roles/iam.roleViewer) oppure crea un ruolo personalizzato con questa singola autorizzazione e concedi il ruolo personalizzato.
Utente Storage Transfer (roles/storagetransfer.user) Consente all'utente di creare, recuperare, aggiornare ed elencare i trasferimenti. Per un elenco dettagliato delle autorizzazioni concesse, consulta Ruoli predefiniti di Storage Transfer Service.

Autorizzazioni account di servizio gestiti da Google

Storage Transfer Service utilizza un service account gestito da Google per spostare i tuoi dati. Questo account di servizio viene creato automaticamente la prima volta che crei un job di trasferimento, chiami googleServiceAccounts.get o visiti la pagina di creazione del job nella consoleGoogle Cloud .

Il formato del account di servizio è in genere project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Per recuperare l'identificatore del account di servizio, utilizza la chiamata API googleServiceAccounts.get.

Assegnazione automatica dei ruoli

Esistono due modi per assegnare automaticamente i ruoli corretti al account di servizio gestito da Google:

Assegnazione manuale dei ruoli

Per consentire al account di servizio gestito da Google di accedere alle risorse necessarie per completare i trasferimenti, assegna i seguenti ruoli o autorizzazioni equivalenti aaccount di serviziont.

Ruolo / Autorizzazione Funzione Note
Storage Object Creator (roles/storage.objectCreator) Consente a Storage Transfer Service di creare log di trasferimento nel bucket Cloud Storage collegato a questo trasferimento. Concedi a tutti i bucket Cloud Storage utilizzati in un trasferimento. Se appropriato per la tua situazione, puoi concedere il ruolo a livello di progetto al progetto da cui viene eseguito Storage Transfer Service.

Per un elenco dettagliato delle autorizzazioni concesse da questi ruoli, consulta Ruoli predefiniti di Cloud Storage.
Visualizzatore oggetti Storage (roles/storage.objectViewer) Consente a Storage Transfer Service di determinare se un file è già stato trasferito a o da Cloud Storage.
Agente Storage Transfer Service (roles/storagetransfer.serviceAgent) Consente a Storage Transfer Service di creare e modificare automaticamente gli argomenti Pub/Sub per comunicare da Google Cloud agli agenti di trasferimento. Applica il ruolo a livello di progetto al progetto da cui viene eseguito Storage Transfer Service.

Per un elenco dettagliato delle autorizzazioni concesse da questo ruolo, consulta Autorizzazioni e ruoli.
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) Consente a Storage Transfer Service di leggere i metadati del bucket Cloud Storage.

Concedi a ogni bucket Cloud Storage utilizzato in un trasferimento.

I ruoli Cloud Storage legacy possono essere concessi solo a livello di bucket.

Per istruzioni, vedi Concedere le autorizzazioni richieste.

Trasferire le autorizzazioni dell'account agente

Gli agenti di trasferimento di Storage Transfer Service possono essere eseguiti con l'account dell'utente o con un service account.

Per configurare un account di servizio o un account utente dell'agente di trasferimento che esegue gli agenti di trasferimento, assegna il seguente ruolo:

Ruolo / Autorizzazione Funzione Note
Storage Transfer Agent (roles/storagetransfer.transferAgent) Concede agli agenti di trasferimento le autorizzazioni Storage Transfer Service e Pub/Sub necessarie per completare un trasferimento. Concedi questo ruolo all'utente o al account di servizio utilizzato dagli agenti.

Per un elenco dettagliato delle autorizzazioni concesse da questo ruolo, consulta Controllo dell'accesso con IAM.

Autorizzazioni di origine e destinazione

Devi anche assicurarti che l'account agente disponga delle autorizzazioni corrette per accedere ai dati di origine e scrivere nella destinazione.

File system, spazio di archiviazione compatibile con S3 o HDFS a Cloud Storage

Se la destinazione del trasferimento è un bucket Cloud Storage, l'agente di trasferimento necessita delle seguenti autorizzazioni per il bucket di destinazione. Per istruzioni, vedi Aggiungere un principal a una policy a livello di bucket.

Autorizzazione Descrizione
storage.objects.create Consente all'account agente di scrivere oggetti Cloud Storage durante il trasferimento.
storage.objects.get Consente all'account agente di leggere i dati e i metadati degli oggetti.
storage.objects.list Consente all'account agente di elencare gli oggetti nel bucket Cloud Storage.
storage.objects.delete Obbligatorio se il trasferimento è configurato per sovrascrivere o eliminare oggetti nel sink, ad esempio se overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink sono impostati nella configurazione transferOptions del trasferimento.

Per concedere queste autorizzazioni, assegna il seguente ruolo:

In alternativa, crea un ruolo personalizzato con le autorizzazioni specifiche e concedi il ruolo personalizzato.

Sono richieste autorizzazioni aggiuntive per abilitare i caricamenti in più parti.

Da Cloud Storage al file system

Se l'origine del trasferimento è un bucket Cloud Storage, l'agente di trasferimento ha bisogno della seguente autorizzazione sul bucket di origine.

Autorizzazione Descrizione
storage.objects.create Consente all'account agente di scrivere log di trasferimento e metadati correlati al trasferimento nel bucket di origine Cloud Storage.
storage.objects.get Consente all'account agente di leggere i dati e i metadati degli oggetti.
storage.objects.list Consente all'account agente di elencare gli oggetti nel bucket Cloud Storage.
storage.objects.delete Obbligatorio se il trasferimento è configurato per eliminare gli oggetti dall'origine. Vedi deleteObjectsFromSourceAfterTransfer.

Per concedere questa autorizzazione, assegna il seguente ruolo:

In alternativa, crea un ruolo personalizzato con la singola autorizzazione e concedi il ruolo personalizzato.

Da file system a file system

Se il trasferimento avviene tra due file system, l'agente di trasferimento ha bisogno delle seguenti autorizzazioni per il bucket intermedio.

Autorizzazione Descrizione
storage.objects.create Consente all'account agente di scrivere oggetti Cloud Storage durante il trasferimento.
storage.objects.get Consente all'account agente di leggere i dati e i metadati degli oggetti.
storage.objects.list Consente all'account agente di elencare gli oggetti nel bucket Cloud Storage.
storage.objects.delete Obbligatorio se il trasferimento è configurato per eliminare gli oggetti nel bucket intermedio al termine del trasferimento.

Per concedere queste autorizzazioni, assegna il seguente ruolo:

In alternativa, crea un ruolo personalizzato con le autorizzazioni specifiche e concedi il ruolo personalizzato.

Sono richieste autorizzazioni aggiuntive per abilitare i caricamenti in più parti.

Caricamenti multiparte

Per attivare i caricamenti in più parti per i trasferimenti dal file system a Cloud Storage o tra file system, concedi inoltre le seguenti autorizzazioni all'agente.

  • Per i trasferimenti a Cloud Storage, assegna le autorizzazioni al bucket di destinazione.
  • Per i trasferimenti tra file system, assegna le autorizzazioni al bucket intermedio.
Nome dell'autorizzazione di caricamento multiparte Descrizione
storage.multipartUploads.create Carica gli oggetti in più parti.
storage.multipartUploads.abort Interrompi le sessioni di caricamento multiparte.
storage.multipartUploads.listParts Elenca le parti dell'oggetto caricate in una sessione di caricamento multiparte.
storage.multipartUploads.list Elenca le sessioni di caricamento in più parti in un bucket.

Per concedere queste autorizzazioni, assegna il seguente ruolo:

In alternativa, crea un ruolo personalizzato con le autorizzazioni specifiche e concedi il ruolo personalizzato.