Storage Transfer Service può utilizzare un bucket di origine Cloud Storage in due tipi di trasferimento:
Trasferimenti senza agenti: trasferimenti da cloud a cloud, ad esempio da Cloud Storage a Cloud Storage, da Cloud Storage ad AWS S3 o da Cloud Storage ad Azure Blob Storage. Le autorizzazioni vengono concesse all'agente di servizio Storage Transfer Service.
Trasferimenti basati su agenti: trasferimenti che coinvolgono file system o spazio di archiviazione on-premise che utilizzano agenti di trasferimento e pool di agenti. Le autorizzazioni devono essere concesse sia all'agente di servizio sia all'account dell'agente di trasferimento.
Concessione automatica delle autorizzazioni nella console Google Cloud
Se utilizzi la console Google Cloud per creare un trasferimento senza agente e disponi delle autorizzazioni utente necessarie, all'agente di servizio verranno concesse automaticamente le autorizzazioni necessarie per il bucket di origine.
Puoi saltare i passaggi di questa pagina. Se necessario, configura l'accesso alla destinazione, poi crea un trasferimento.
Prerequisiti
Autorizzazioni dell'account utente: per concedere i ruoli IAM richiesti elencati in questa pagina, il tuo account utente (o account di servizio gestito dall'utente) deve disporre delle autorizzazioni per modificare le policy IAM nel bucket di origine e nel progetto del pool di agenti. Per maggiori dettagli sui requisiti degli account utente, vedi Autorizzazioni degli account utente.
Autorizzazioni del progetto di trasferimento basato su agenti: per i trasferimenti basati su agenti, assicurati di aver configurato i ruoli a livello di progetto richiesti per il tuo agente di servizio e l'account dell'agente di trasferimento. Vedi Autorizzazioni a livello di progetto basate su agenti.
Trova l'indirizzo email dell'agente di servizio
L'agente di servizio viene creato automaticamente la prima volta che crei un job di trasferimento, esegui i comandi di configurazione di gcloud transfer, visiti la pagina Storage Transfer nella consoleGoogle Cloud o chiami googleServiceAccounts.get.
Per ottenere l'indirizzo email dell'agente di servizio, che viene utilizzato per identificarlo nei comandi di Storage Transfer Service:
- Vai alla pagina di riferimento di
googleServiceAccounts.get. Si apre un riquadro interattivo intitolato Prova questo metodo. - Nel riquadro, in Parametri della richiesta, inserisci l'ID progetto.
- Fai clic su Esegui.
Copia il valore di accountEmail. Utilizza il formato:
project-PROJECT_NUMBER@storage-transfer-service..
Concedi le autorizzazioni richieste
Seleziona il tipo di trasferimento per visualizzare i passaggi per concedere l'accesso.
Trasferimento senza agente
I seguenti ruoli predefiniti concedono all'agente di servizio le autorizzazioni richieste sul bucket di origine:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Inoltre, uno dei seguenti documenti:
- Storage Object Viewer (
roles/storage.objectViewer) se gli oggetti di origine vengono conservati. - Storage Object User (
roles/storage.objectUser) se elimini gli oggetti di origine dopo il trasferimento (deleteObjectsFromSourceAfterTransfer). - Storage Object Admin (
roles/storage.objectAdmin) se conservi gli ACL degli oggetti (ACL_PRESERVE). Supporta anche l'eliminazione degli oggetti di origine dopo il trasferimento.
- Storage Object Viewer (
Aggiungi l'agente di servizio alla policy IAM del bucket di origine:
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic sul menu Altro () del bucket di origine.
- Scegli Accesso in modifica.
- Fai clic su + Aggiungi entità.
- In Nuove entità, inserisci l'indirizzo email del service agent.
- Seleziona
Storage Legacy Bucket Readerdal menu a discesa Seleziona un ruolo. - Fai clic su Aggiungi un altro ruolo e seleziona una delle seguenti opzioni:
Storage Object ViewerStorage Object UserStorage Object Admin
- Fai clic su Salva.
gcloud
Esegui questi comandi gcloud storage:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
Sostituisci:
- BUCKET_NAME: il nome del bucket di origine.
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- OBJECT_ROLE: scegli una delle seguenti opzioni in base alle opzioni di trasferimento:
objectViewer: se conservi gli oggetti di origine.objectUser: se gli oggetti di origine vengono eliminati dopo il trasferimento.objectAdmin: se conservi gli ACL degli oggetti. Supporta anche l'eliminazione degli oggetti di origine dopo il trasferimento.
API REST
Genera un token di accesso per autenticare la tua richiesta. Se utilizzi l'interfaccia a riga di comando
gcloud, esegui:gcloud auth print-access-token
Recupera la policy IAM del bucket esistente (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), aggiungi le seguenti associazioni al relativo arraybindingse salva la policy unita comesource_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Sostituisci:
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- OBJECT_ROLE: scegli
objectViewerse conservi gli oggetti di origine,objectUserse elimini gli oggetti di origine oobjectAdminse conservi gli ACL degli oggetti.
Invia una richiesta
PUTutilizzandocurl:curl -X PUT --data-binary @source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
Sostituisci:
- OAUTH2_TOKEN: il token di accesso OAuth 2.0 generato nel passaggio 1.
- BUCKET_NAME: il nome del bucket di origine.
Trasferimento basato su agenti
I seguenti ruoli predefiniti concedono l'accesso richiesto al bucket di origine all'agente di servizio:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Storage Object Creator (
roles/storage.objectCreator)
Il seguente ruolo concede l'accesso richiesto al bucket di origine all'account dell'agente di trasferimento:
- Storage Object Viewer (
roles/storage.objectViewer) se conservi gli oggetti di origine o Storage Object User (roles/storage.objectUser) se elimini gli oggetti di origine dopo il trasferimento.
Concedi questi ruoli nel bucket di origine.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic sul menu Overflow bucket () per il bucket di origine e seleziona accesso in modifica.
- Fai clic su + Aggiungi entità.
- In Nuove entità, inserisci l'indirizzo email del service agent.
- Seleziona
Storage Legacy Bucket ReadereStorage Object Creatordai menu a discesa Seleziona un ruolo. - Fai di nuovo clic su + Aggiungi entità.
- Inserisci l'indirizzo email del tuo account agente di trasferimento. Si tratta dell'utente o del account di servizio utilizzato durante l'installazione degli agenti di trasferimento. Ad esempio,
my-agent-sa@PROJECT_ID.ouser@example.com. - Seleziona
Storage Object Viewerse conservi gli oggetti di origine oStorage Object Userse elimini gli oggetti di origine dopo il trasferimento. - Fai clic su Salva.
gcloud
Concedi i ruoli di lettura dei metadati del bucket e di scrittura dei log di trasferimento all'agente di servizio:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReadergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorConcedi i ruoli di accesso agli oggetti all'account dell'agente di trasferimento:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.OBJECT_ROLESostituisci:
- BUCKET_NAME: il nome del bucket di origine.
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- serviceAccount_OR_user: specifica
serviceAccountse l'account dell'agente di trasferimento è un account di servizio ouserse gli agenti sono stati installati con un account utente. - TRANSFER_AGENT_ACCOUNT: l'indirizzo email dell'account che ha installato gli agenti di trasferimento. Ad esempio,
my-agent-sa@PROJECT_ID.ouser@example.com. - OBJECT_ROLE: specifica
objectViewerse conservi gli oggetti di origine oobjectUserse elimini gli oggetti di origine dopo il trasferimento.
API REST
Genera un token di accesso per autenticare la tua richiesta. Se utilizzi l'interfaccia a riga di comando
gcloud, esegui:gcloud auth print-access-token
Recupera la policy IAM del bucket esistente (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), aggiungi le seguenti associazioni al relativo arraybindingse salva la policy unita comeagent_source_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Sostituisci:
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- serviceAccount_OR_user: Specificare
serviceAccountse il tuo conto agente di trasferimento è un account di servizio, ouserse i tuoi agenti sono stati installati con un account utente. - TRANSFER_AGENT_ACCOUNT: l'indirizzo email dell'account che ha installato gli agenti di trasferimento. Ad esempio,
my-agent-sa@PROJECT_ID.ouser@example.com. - OBJECT_ROLE: specifica
objectViewerse conservi gli oggetti di origine oobjectUserse elimini gli oggetti di origine dopo il trasferimento.
Aggiorna la policy del bucket tramite
curl:curl -X PUT --data-binary @agent_source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"Sostituisci:
- OAUTH2_TOKEN: il token di accesso OAuth 2.0 generato nel passaggio 1.
- BUCKET_NAME: il nome del bucket di origine.
Trasferimenti Cloud Storage tra progetti
Per trasferire oggetti tra bucket Cloud Storage in progetti Google Cloud diversi, devi concedere le autorizzazioni all'agente di servizio del progetto che crea il trasferimento sia sul bucket di origine sia su quello di destinazione.
L'account utente o il service account gestito dall'utente che crea il trasferimento deve disporre delle autorizzazioni solo per il progetto da cui viene creato il job di trasferimento.
Per concedere i ruoli per i trasferimenti tra progetti:
- Ottieni l'email dell'agente di servizio per il progetto che eseguirà il trasferimento. Consulta Trova l'indirizzo email dell'agente di servizio.
- Nel bucket di origine, concedi i seguenti ruoli all'agente di servizio:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Inoltre, uno dei seguenti ruoli oggetto:
- Storage Object Viewer (
roles/storage.objectViewer) se conservi gli oggetti di origine. - Storage Object User (
roles/storage.objectUser) se elimini gli oggetti di origine dopo il trasferimento (deleteObjectsFromSourceAfterTransfer). - Storage Object Admin (
roles/storage.objectAdmin) se conservi gli ACL degli oggetti (ACL_PRESERVE). Supporta anche l'eliminazione degli oggetti di origine dopo il trasferimento.
- Storage Object Viewer (
- Storage Legacy Bucket Reader (
- Nel bucket di destinazione, concedi i seguenti ruoli allo stesso agente di servizio:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Storage Object User (
roles/storage.objectUser) o Storage Object Admin (roles/storage.objectAdmin) se conservi gli ACL degli oggetti (ACL_PRESERVE).
- Storage Legacy Bucket Reader (
Per istruzioni passo passo su come concedere l'accesso al bucket di destinazione, consulta Configura l'accesso a un sink: Cloud Storage.
Restrizioni dell'organizzazione
Se la tua organizzazione ha applicato vincoli della policy dell'organizzazione, assicurati che consentano l'accesso degli agenti di servizio tra progetti:
- Condivisione limitata del dominio (
constraints/iam.allowedPolicyMemberDomains): la policy del progetto che ospita il bucket deve consentire i domini dei membri contenenti l'agente di servizio. Consulta Limitazione dei domini. - Disabilitazione dell'utilizzo dei account di servizio tra progetti (
constraints/iam.disableCrossProjectServiceAccountUsage): assicurati che questo vincolo non blocchi l'accesso ai account di servizio tra progetti. Consulta Limitazione dei service account. - Controlli di servizio VPC: se i bucket appartengono a perimetri di servizio diversi, configura le regole in entrata e in uscita per consentire la comunicazione del trasferimento. Consulta Configura i Controlli di servizio VPC per i trasferimenti di archiviazione di oggetti cloud.
Riferimento alle autorizzazioni granulari
Seleziona il tipo di trasferimento per visualizzare i ruoli e le autorizzazioni richiesti.
Trasferimento senza agente
Per i trasferimenti senza agenti, le autorizzazioni devono essere concesse all'agente di servizio Storage Transfer Service:
| Autorizzazione | Descrizione |
|---|---|
storage.buckets.get |
Consente all'agente di servizio di ottenere la località del bucket. |
storage.objects.list |
Consente all'agente di servizio di elencare gli oggetti nel bucket. |
storage.objects.get |
Consente all'agente di servizio di leggere gli oggetti nel bucket. |
storage.objects.delete |
Consente all'agente di servizio di eliminare gli oggetti nel bucket. Obbligatorio se deleteObjectsFromSourceAfterTransfer è true. |
storage.objects.getIamPolicy |
Consente di leggere gli ACL sugli oggetti di origine. Obbligatorio se è abilitata la conservazione degli ACL degli oggetti (ACL_PRESERVE). |
storage.folders.liststorage.folders.get |
Consente di elencare e leggere le cartelle. Obbligatorio per il trasferimento da un bucket con spazio dei nomi gerarchico abilitato. |
Trasferimento basato su agenti
Per i trasferimenti basati su agenti da un'origine Cloud Storage, le autorizzazioni sono suddivise tra due entità:
Agente di servizio: richiede l'accesso in lettura a livello di bucket per risolvere i metadati e la posizione del bucket, nonché l'accesso alla creazione di oggetti per scrivere i log di trasferimento dell'agente.
Account dell'agente di trasferimento: il account di servizio o l'account utente utilizzato per creare gli agenti di trasferimento.
Autorizzazioni agente di servizio
| Autorizzazione | Descrizione |
|---|---|
storage.buckets.get |
Consente all'agente di servizio di ispezionare i metadati e la località del bucket. |
storage.objects.create |
Consente all'agente di servizio di scrivere i log di trasferimento dell'agente nel bucket di origine durante il trasferimento da Cloud Storage a un file system. |
Trasferisci le autorizzazioni dell'account agente
| Autorizzazione | Descrizione |
|---|---|
storage.objects.list |
Consente agli agenti di elencare gli oggetti nel bucket di origine. |
storage.objects.get |
Consente agli agenti di leggere gli oggetti dal bucket di origine. |
storage.objects.delete |
Consente agli agenti di eliminare gli oggetti di origine se deleteObjectsFromSourceAfterTransfer è abilitato. |
storage.folders.liststorage.folders.get |
Consente agli agenti di elencare e leggere le cartelle durante il trasferimento da un bucket con spazio dei nomi gerarchico abilitato. |
Passaggi successivi
Devi configurare l'accesso alla destinazione: