Storage Transfer Service può utilizzare un bucket di destinazione (sink) Cloud Storage in due tipi di trasferimento:
Trasferimenti senza agenti: trasferimenti da cloud a cloud, ad esempio da AWS S3, Azure Blob Storage o Cloud Storage a Cloud Storage. Le autorizzazioni vengono concesse all'agente di servizio Storage Transfer Service.
Trasferimenti basati su agenti: trasferimenti da file system, HDFS o spazio di archiviazione compatibile con S3 a Cloud Storage 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 richieste, all'agente di servizio verranno concesse automaticamente le autorizzazioni richieste per il bucket di destinazione.
Puoi saltare i passaggi di questa pagina. Se necessario, configura l'accesso all'origine, quindi 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 destinazione 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 insieme le autorizzazioni necessarie per il bucket di destinazione all'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).
Aggiungi l'agente di servizio alla policy IAM del bucket di destinazione:
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic sul menu Altro () del bucket di destinazione.
- 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
Storage Object UseroStorage Object Adminse conservi gli ACL degli oggetti. - 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.OBJECT_ROLE
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Sostituisci:
- BUCKET_NAME: il nome del bucket di destinazione.
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- OBJECT_ROLE: specifica
objectUserper impostazione predefinita oobjectAdminse conservi gli ACL degli oggetti (ACL_PRESERVE).
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 comesink_policy.json:{ "bindings": [ { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Sostituisci:
- SERVICE_AGENT_EMAIL: l'indirizzo email dell'agente di servizio.
- OBJECT_ROLE: specifica
objectUserper impostazione predefinita oobjectAdminse conservi gli ACL degli oggetti (ACL_PRESERVE).
Invia una richiesta
PUTutilizzandocurl:curl -X PUT --data-binary @sink_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 destinazione.
Trasferimento basato su agenti
I seguenti ruoli predefiniti concedono all'agente di servizio l'accesso richiesto al bucket di destinazione:
- Storage Object Creator (
roles/storage.objectCreator) - Storage Object Viewer (
roles/storage.objectViewer) - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader)
Il seguente ruolo concede l'accesso richiesto al bucket di destinazione all'account dell'agente di trasferimento:
- Storage Object User (
roles/storage.objectUser)
Concedi questi ruoli nel bucket di destinazione.
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
- Fai clic sul menu Extra bucket () per il bucket di destinazione e seleziona accesso in modifica.
- Fai clic su + Aggiungi entità.
- In Nuove entità, inserisci l'indirizzo email del service agent.
- Seleziona
Storage Object Creator,Storage Object ViewereStorage Legacy Bucket Readerdal 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 Userdal menu a discesa Seleziona un ruolo. - Fai clic su Salva.
gcloud
Concedi i ruoli di logging e visualizzatore all'agente di servizio:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderConcedi i ruoli di scrittura e gestione 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.objectUserSostituisci:
- BUCKET_NAME: il nome del bucket di destinazione.
- 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.
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_sink_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Sostituisci:
- 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.
Aggiorna la policy del bucket tramite
curl:curl -X PUT --data-binary @agent_sink_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 destinazione.
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 ispezionare i metadati e la località del bucket. |
storage.objects.create |
Consente all'agente di servizio di scrivere gli oggetti trasferiti nel bucket di destinazione. |
storage.objects.get |
Consente di visualizzare gli oggetti e i metadati esistenti. Obbligatorio se il trasferimento è configurato per sovrascrivere gli oggetti nel sink quando sono diversi o mai. |
storage.objects.list |
Consente di elencare gli oggetti nel bucket di destinazione. Obbligatorio se si verifica se gli oggetti esistono già nel sink. |
storage.objects.delete |
Consente di eliminare gli oggetti nel bucket di destinazione. Obbligatorio se sono abilitate le opzioni di sovrascrittura o eliminazione di oggetti univoci. |
storage.objects.setIamPolicy |
Consente di impostare gli ACL degli oggetti nel bucket di destinazione. Obbligatorio se è abilitata la conservazione degli ACL degli oggetti (ACL_PRESERVE). |
storage.folders.createstorage.folders.get |
Consente di creare e leggere cartelle. Obbligatorio per il trasferimento a un bucket di destinazione con spazio dei nomi gerarchico abilitato. |
Trasferimento basato su agenti
Per i trasferimenti basati su agenti a una destinazione Cloud Storage, le autorizzazioni sono suddivise tra due entità:
Agente di servizio: richiede le autorizzazioni per scrivere i log di trasferimento e verificare l'esistenza degli oggetti nel bucket di destinazione.
Account agente di trasferimento: il account di servizio o l'account utente che esegue gli agenti di trasferimento che scrivono file in Cloud Storage.
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 di creare log di trasferimento nel bucket. |
storage.objects.get |
Consente di verificare se gli oggetti sono già stati trasferiti. |
Trasferisci le autorizzazioni dell'account agente
| Autorizzazione | Descrizione |
|---|---|
storage.objects.create |
Consente agli agenti di scrivere oggetti nel bucket di destinazione durante il trasferimento. |
storage.objects.get |
Consente agli agenti di leggere i dati e i metadati degli oggetti nel bucket di destinazione. |
storage.objects.list |
Consente agli agenti di elencare gli oggetti esistenti nel bucket di destinazione. |
storage.objects.delete |
Obbligatorio se il trasferimento è configurato per sovrascrivere o eliminare oggetti nel sink. |
storage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listPartsstorage.multipartUploads.list |
Consente agli agenti di eseguire caricamenti multiparte per file di grandi dimensioni. Incluso automaticamente in roles/storage.objectUser. |
storage.folders.createstorage.folders.get |
Consente agli agenti di creare e leggere cartelle durante il trasferimento a un bucket di destinazione con lo spazio dei nomi gerarchico abilitato. |
Passaggi successivi
- Scopri come configurare l'accesso a un'origine.
- Scopri come creare trasferimenti.
- Consulta il riferimento a ruoli e autorizzazioni.