Autorizzazioni di trasferimento basate sugli agenti

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

  • L'account di servizio dell'utente o gestito dall'utente utilizzato per creare il trasferimento. Questo è il collegato alla console Google Cloud o l'account collegato specificato durante l'autenticazione nell'interfaccia a riga di comando gcloud. L'account utente può essere un account utente normale o un account di servizio gestito dall'utente.

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

  • L'account dell'agente trasferito che fornisce Google Cloud autorizzazioni 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.

Il metodo più semplice per concedere le autorizzazioni

È possibile utilizzare l'interfaccia a riga di comando gcloud per concedere le autorizzazioni richieste al dall'account di servizio gestito dall'utente o dall'utente e all'account di servizio gestito da Google. Queste autorizzazioni consentono all'utente di creare, modificare ed eliminare job di trasferimento, e impostare o modificare i limiti di larghezza di banda.

Se queste autorizzazioni sono troppo ampie per i criteri 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.

  • Per l'account di servizio gestito dall'utente / 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 dell'account di servizio gestito dall'utente o dell'utente

Questa sezione illustra i ruoli richiesti per gestire e gestire eseguendo trasferimenti. I requisiti della tua organizzazione determineranno il ruoli per ogni utente tipo; in questa sezione si presuppone che creerai amministratore e 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 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 assegnalo.
Amministratore Storage Transfer (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, vedi Ruoli predefiniti di Storage Transfer Service.

Account utente

Gli account utente di Storage Transfer Service vengono utilizzati per creare ed eseguire i trasferimenti. Questi account in genere non hanno accesso per eliminare i 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 le autorizzazioni e i ruoli seguenti al :

Ruolo / Autorizzazione Funzione Note
resourcemanager.projects.getIamPolicy Utilizzato per confermare che l'account di servizio gestito da Google dispone della le autorizzazioni Pub/Sub 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 assegnalo.
Utente Storage Transfer (roles/storagetransfer.user) Consente all'utente di creare, ottenere, 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 protocollo Servizio gestito da Google account per spostare i dati. Questo account di servizio viene creato automaticamente la prima volta che crei un job di trasferimento, chiama googleServiceAccounts.get o visita la pagina per la creazione di offerte di lavoro nel 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 del tuo 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 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. Concedere a tutti i bucket Cloud Storage utilizzati in un trasferimento. Se appropriato per la tua situazione, puoi concedere il ruolo dal livello di progetto al progetto da cui è in esecuzione 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 (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. Applicare il ruolo a livello di progetto al progetto Storage Transfer Service è in esecuzione.

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.

Concedere la licenza a ogni bucket Cloud Storage utilizzato in un trasferimento.

È possibile concedere solo ruoli legacy in Cloud Storage a livello di bucket.

Per le istruzioni, vedi Concedere le autorizzazioni richieste.

Autorizzazioni account agente di trasferimento

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 Storage Transfer (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 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 a 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 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 in Cloud Storage di sincronizzare la directory di una VM con un bucket.
storage.objects.delete Obbligatorio se il trasferimento è configurato per sovrascrivere o eliminare gli oggetti nel lavandino; ad esempio, se overwriteObjectsAlreadyExistingInSink o deleteObjectsUniqueInSink sono impostati nel TransferOptions.

Per concedere queste autorizzazioni, concedi il seguente ruolo:

In alternativa, crea un ruolo personalizzato con l'impostazione autorizzazioni e concedere il ruolo personalizzato.

Sono necessarie autorizzazioni aggiuntive per abilita i caricamenti multiparte.

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 i log di trasferimento e i relativi metadati al 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 l'opzione e concedere il ruolo personalizzato.

Da file system a file system

Se il trasferimento è tra due file system, l'agente di trasferimento deve avere le 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 oggetti nel al 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 caricamenti multiparte dei file system in Cloud Storage, i trasferimenti o i trasferimenti tra file system, concedi inoltre le seguenti autorizzazioni all'agente.

  • Per i trasferimenti a Cloud Storage, assegna le autorizzazioni alla destinazione di sincronizzare la directory di una VM con un bucket.
  • Per i trasferimenti tra file system, assegnare le autorizzazioni al livello intermedio di sincronizzare la directory di una VM con un bucket.
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 dell'oggetto caricate in una sessione di caricamento multiparte.
storage.multipartUploads.list Elenca le sessioni di caricamento con più parti in un bucket.

Per concedere queste autorizzazioni, assegna il ruolo seguente:

In alternativa, crea un ruolo personalizzato con l'impostazione autorizzazioni e concedere il ruolo personalizzato.