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:
Crea il trasferimento utilizzando la console Google Cloud. La console applica automaticamente le autorizzazioni richieste.
Utilizza
gcloud transfer authorize --add-missing
. Consulta Il metodo più semplice per concedere le autorizzazioni.
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 |
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
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:
- Storage Object Viewer (
roles/storage.objectViewer
)
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
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:
- Storage Object Admin (
roles/storage.objectAdmin
)
In alternativa, crea un ruolo personalizzato con le autorizzazioni specifiche e concedilo.