Autorizzazioni di trasferimento basate sugli agenti

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

  • L'account di servizio dell'utente o gestito dall'utente utilizzato per creare il trasferimento. Si tratta dell'account con cui hai 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 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 viene generalmente identificato dall'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. Per l'autenticazione, gli account agente di trasferimento utilizzano le credenziali dell'utente che li installa o le credenziali di un account di servizio gestito dall'utente.

Per ulteriori informazioni sulla concessione dei ruoli IAM, consulta Concedere, modificare e revocare l'accesso alle risorse.

Metodo più semplice per concedere le autorizzazioni

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

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

Per controllare 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, passa il file della chiave dell'account di servizio:

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

Per istruzioni su come creare un account di servizio, consulta Creare e gestire gli account di servizio.

Il comando concede le seguenti autorizzazioni.

  • All'utente / all'account di servizio 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 su come installare gcloud CLI, consulta la guida rapida di gcloud.

Autorizzazioni utente o dell'account di servizio gestito 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 persona. Questa sezione presuppone che tu crei 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 seguenti autorizzazioni e i seguenti ruoli IAM:

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Questa autorizzazione viene utilizzata per verificare che l'account di servizio gestito da Google abbia le autorizzazioni necessarie per un trasferimento. Per concedere questa autorizzazione, assegna il ruolo predefinito Visualizzatore dei ruoli (roles/iam.roleViewer) o crea un ruolo personalizzato con questa singola autorizzazione e assegna il ruolo personalizzato.
Amministratore trasferimento dati archiviazione (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 di Storage Transfer Service vengono utilizzati per creare ed eseguire i trasferimenti. In genere, questi account non hanno accesso all'eliminazione dei job di trasferimento.

Un account utente può essere un utente 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 a seconda dell'interfaccia utilizzata.

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

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Viene utilizzato per verificare che l'account di servizio gestito da Google disponga delle autorizzazioni Pub/Sub richieste per un trasferimento. Per concedere questa autorizzazione, assegna il ruolo predefinito Visualizzatore dei ruoli (roles/iam.roleViewer) o crea un ruolo personalizzato con questa singola autorizzazione e assegnalo.
Utente di trasferimento dati archiviati (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 degli account di servizio gestiti da Google

Storage Transfer Service utilizza un account di servizio gestito da Google per spostare i 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.

In genere, il formato dell'account di servizio è project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Per recuperare l'identificatore del tuo 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 all'account di servizio i seguenti ruoli o autorizzazioni equivalenti.

Ruolo / Autorizzazione Funzione Note
Creator di oggetti archiviazione (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 opportuno per la tua situazione, puoi concedere il ruolo a livello di progetto al progetto su cui è in esecuzione Storage Transfer Service.

Per un elenco dettagliato delle autorizzazioni concesse da questi ruoli, consulta Ruoli predefiniti di Cloud Storage.
Storage Object Viewer (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 su cui è in esecuzione 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 dei 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 le istruzioni, consulta la sezione 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 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 seguente ruolo:

Ruolo / Autorizzazione Funzione Note
Agente di trasferimento dello spazio di archiviazione (roles/storagetransfer.transferAgent) Concede agli agenti di trasferimento le autorizzazioni di Storage Transfer Service e Pub/Sub necessarie per completare un trasferimento. Concedi questo ruolo all'account utente o 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, archiviazione compatibile con S3 o HDFS a Cloud Storage

Se la destinazione del trasferimento è un bucket Cloud Storage, l'agente di trasferimento deve disporre delle seguenti autorizzazioni sul bucket di destinazione. Per 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 destino. Ad esempio, se overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink sono impostati nella configurazione transferOptions del trasferimento.

Per concedere queste autorizzazioni, concedi il seguente ruolo:

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

Per abilitare i caricamenti suddivisi in più parti sono necessarie autorizzazioni aggiuntive.

Da Cloud Storage a file system

Se l'origine del trasferimento è un bucket Cloud Storage, l'agente di trasferimento deve disporre 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. Consulta deleteObjectsFromSourceAfterTransfer.

Per concedere questa autorizzazione, concedi il seguente ruolo:

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

File system a file system

Se il trasferimento avviene tra due file system, l'agente di trasferimento deve disporre delle seguenti autorizzazioni sul 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, concedi il seguente ruolo:

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

Per abilitare i caricamenti suddivisi in più parti sono necessarie autorizzazioni aggiuntive.

Caricamenti multiparte

Per attivare i caricamenti suddivisi per i trasferimenti da un file system a Cloud Storage o tra file system, concedi all'agente anche le seguenti autorizzazioni.

  • Per i trasferimenti in Cloud Storage, assegna le autorizzazioni al bucket di destinazione.
  • Per i trasferimenti tra file system, assegna le autorizzazioni al bucket intermedio.
Nome dell'autorizzazione per i caricamenti multiparte Descrizione
storage.multipartUploads.create Carica gli oggetti in più parti.
storage.multipartUploads.abort Interrompere 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 suddiviso in più parti in un bucket.

Per concedere queste autorizzazioni, concedi il seguente ruolo:

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