Autorizzazioni di trasferimento basate su agenti

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

  • L'account di servizio gestito dall'utente o dall'utente utilizzato per creare il trasferimento. Si tratta dell'account a cui è stato eseguito l'accesso alla console Google Cloud o dell'account specificato durante l'autenticazione all'interfaccia a riga di comando gcloud. L'account utente può essere un normale account utente o un account di servizio gestito dall'utente.

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

  • L'account agente trasferito 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 quelle di un account di servizio gestito dall'utente per l'autenticazione.

Per maggiori informazioni sulla concessione dei ruoli IAM, consulta Concessione, modifica e revoca dell'accesso alle risorse.

Il metodo più semplice per concedere le autorizzazioni

L'interfaccia a riga di comando gcloud può essere utilizzata per concedere le autorizzazioni richieste all'account di servizio gestito dall'utente / dall'utente e all'account di servizio gestito da Google. Queste autorizzazioni consentono all'utente di creare, modificare ed eliminare job di trasferimento, nonché di impostare o modificare i limiti della larghezza di banda.

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

Per ispezionare le autorizzazioni esistenti e stampare gli eventuali ruoli mancanti, esegui questo 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, passa il file delle chiavi dell'account di servizio:

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

Per istruzioni sulla creazione di un account di servizio, consulta Creazione e gestione degli account di servizio.

Il comando concede le seguenti autorizzazioni.

  • All'account di servizio gestito dall'utente o gestito dall'utente:

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

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

Per istruzioni sull'installazione dell'interfaccia a riga di comando gcloud, consulta la guida rapida di gcloud.

Autorizzazioni dell'account di servizio gestite dall'utente o dall'utente

Questa sezione illustra i ruoli richiesti per gli account che gestiscono ed eseguono i trasferimenti. I requisiti della tua organizzazione determineranno i ruoli esatti per ogni utente tipo; questa sezione presuppone la creazione di un amministratore e un utente.

Account amministratore

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

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

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Questa autorizzazione viene utilizzata per confermare che l'account di servizio gestito da Google disponga 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.
Amministratore Storage Transfer (roles/storagetransfer.admin) Abilita le azioni amministrative nel progetto di trasferimento, come 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 di Storage Transfer Service vengono utilizzati per creare ed eseguire trasferimenti. Questi account in genere non hanno accesso per eliminare i job di trasferimento.

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

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

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Utilizzato per confermare che l'account di servizio gestito da Google disponga delle autorizzazioni Pub/Sub 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.
Utente Storage Transfer (roles/storagetransfer.user) Consente all'utente di creare, scaricare, aggiornare ed elencare i trasferimenti. Per un elenco dettagliato delle autorizzazioni concesse, consulta Ruoli predefiniti di Storage Transfer Service.

Autorizzazioni per gli account di servizio gestiti da Google

Storage Transfer Service utilizza un account di servizio 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 console Google Cloud.

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

Assegnazione automatica dei ruoli

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

Assegnazione manuale dei ruoli

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

Ruolo / Autorizzazione Funzione Note
Creatore oggetti Storage (roles/storage.objectCreator) Consente a Storage Transfer Service di creare i 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 è in esecuzione Storage Transfer Service.

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

Per un elenco dettagliato delle autorizzazioni concesse da questo ruolo, vedi Autorizzazioni e ruoli.
Lettore bucket legacy Storage (roles/storage.legacyBucketReader) Abilita Storage Transfer Service a leggere i metadati del bucket Cloud Storage.

Concedi a ogni bucket Cloud Storage utilizzato in un trasferimento.

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

Per istruzioni, vedi Concedere le autorizzazioni richieste.

Trasferisci le autorizzazioni dell'account agente

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

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

Ruolo / Autorizzazione Funzione Note
Agente Storage Transfer (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 all'account di servizio utilizzato dagli agenti.

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

Autorizzazioni di origine e destinazione

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

File system, archiviazione compatibile con S3 o HDFS in Cloud Storage

Se la destinazione di trasferimento è un bucket Cloud Storage, l'agente di trasferimento deve disporre delle seguenti autorizzazioni per il bucket di destinazione. Per le istruzioni, consulta Aggiungere un'entità a un criterio 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 gli oggetti nel sink, ad esempio se overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink sono impostati nella configurazione transferOptions del trasferimento.

Per concedere queste autorizzazioni, assegna il ruolo seguente:

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

Per abilitare i caricamenti multiparte, sono necessarie autorizzazioni aggiuntive.

Da Cloud Storage a file system

Se l'origine del trasferimento è un bucket Cloud Storage, l'agente di trasferimento richiede la seguente autorizzazione per il bucket di origine.

Autorizzazione Descrizione
storage.objects.create Consente all'account agente di scrivere i log di trasferimento e i metadati relativi 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 in modo da eliminare gli oggetti dall'origine. Consulta deleteObjectsFromSourceAfterTransfer.

Per concedere questa autorizzazione, assegna il ruolo seguente:

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 deve disporre 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 in modo da eliminare gli oggetti nel bucket intermedio al termine del trasferimento.

Per concedere queste autorizzazioni, assegna il ruolo seguente:

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

Per abilitare i caricamenti multiparte, sono necessarie autorizzazioni aggiuntive.

Caricamenti multiparte

Per abilitare i caricamenti multipart per i trasferimenti o i trasferimenti del file system in Cloud Storage tra file system, concedi anche 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 autorizzazione caricamento multiparte Descrizione
storage.multipartUploads.create Caricare oggetti in più parti.
storage.multipartUploads.abort Interrompi le sessioni di caricamento multiparte.
storage.multipartUploads.listParts Elenca le parti degli oggetti caricate in una sessione di caricamento con più parti.
storage.multipartUploads.list Elenca le sessioni di caricamento multiparte in un bucket.

Per concedere queste autorizzazioni, assegna il ruolo seguente:

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