Storage Transfer Service utilizza un
account di servizio gestito da Google,
noto come agente di servizio,
per spostare i dati da un bucket di origine Cloud Storage. Questo service agent
viene creato la prima volta che chiami
googleServiceAccounts.get
.
Il bucket di origine non deve appartenere allo stesso progetto dell'agente di servizio. I passaggi sono gli stessi indipendentemente dal progetto in cui si trova il bucket.
Autorizzazioni utente
Per concedere le autorizzazioni richieste all'agente di servizio, devi disporre delle autorizzazioni pertinenti sul bucket di origine:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Il ruolo Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner
) o
il ruolo Storage Admin (roles/storage.admin
) forniscono le autorizzazioni
necessarie.
Concessione automatica delle autorizzazioni nella console Google Cloud
Se utilizzi la console Google Cloud per creare il trasferimento e disponi delle autorizzazioni elencate in Autorizzazioni utente, all'agente di servizio verranno automaticamente concesse le autorizzazioni richieste sul bucket di origine.
Puoi saltare i passaggi di questa pagina e andare direttamente alla creazione di un trasferimento.
Autorizzazioni obbligatorie
L'agente di servizio deve disporre delle seguenti autorizzazioni per il bucket di origine:
Autorizzazione | Descrizione |
---|---|
storage.buckets.get |
Consente all'agente di servizio di ottenere la posizione 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.create |
Consente all'agente di servizio di creare oggetti nel bucket. Obbligatorio se il trasferimento avviene a un file system. Storage Transfer Service crea e
popola due cartelle nel bucket di origine: |
storage.objects.delete |
Consente all'agente di servizio di eliminare gli oggetti nel bucket. Obbligatorio
se imposti deleteObjectsFromSourceAfterTransfer su
true .
|
I seguenti ruoli predefiniti concedono insieme le autorizzazioni richieste:
- Uno dei seguenti:
- Storage Object Viewer (
roles/storage.objectViewer
) se il trasferimento avviene a un altro bucket Cloud Storage. - Creatore oggetti Storage (
roles/storage.objectCreator
) se il trasferimento avviene a un file system.
- Storage Object Viewer (
- Più uno dei seguenti:
- Writer bucket legacy Storage (
roles/storage.legacyBucketWriter
) se è richiesta l'autorizzazione di eliminazione degli oggetti. - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader
) se non è richiesta l'autorizzazione di eliminazione degli oggetti.
- Writer bucket legacy Storage (
Qualsiasi ruolo Cloud Storage contrassegnato come ruolo legacy
può essere concesso solo a livello di bucket.
Per un elenco completo dei ruoli Cloud Storage e delle autorizzazioni che contengono, consulta Ruoli IAM.
Per gli ACL degli oggetti quando è impostato ACL_PRESERVE, è necessario anche il ruolo Proprietario oggetti legacy Storage (roles/storage.legacyObjectOwner
) per l'oggetto di origine. Per ACL_PRESERVE, aggiungi manualmente l'account di servizio in modo che abbia il ruolo Proprietario oggetto legacy Storage per concedere l'autorizzazione storage.objects.getIamPolicy
all'oggetto di origine.
Concedi le autorizzazioni richieste
Per concedere le autorizzazioni richieste all'agente di servizio, segui questi passaggi.
Trovare l'email dell'agente di servizio
Vai alla pagina di riferimento di
googleServiceAccounts.get
.Si apre un riquadro interattivo intitolato Prova questo metodo.
Nel riquadro, in Parametri della richiesta, inserisci il tuo ID progetto. Il progetto che specifichi qui deve essere quello che utilizzi per gestire Storage Transfer Service, che potrebbe essere diverso dal progetto del bucket di origine.
Fai clic su Esegui.
L'email dell'agente di servizio viene restituita come valore di
accountEmail
. Copia questo valore.L'email dell'agente di servizio utilizza il formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Aggiungere l'agente di servizio a una policy a livello di bucket
Console
- Nella console Google Cloud , vai alla pagina Bucket in Cloud Storage.
Fai clic sul menu Overflow bucket (
) associato al bucket a cui vuoi concedere un ruolo a un'entità.Scegli Modifica accesso.
Fai clic sul pulsante + Aggiungi entità.
Nel campo Nuove entità, inserisci l'email dell'account del tuo service agent.
Seleziona
Storage Object Viewer
oStorage Object Creator
dal menu a discesa Seleziona un ruolo.Fai clic su Aggiungi un altro ruolo.
Seleziona
Storage Legacy Bucket Writer
oStorage Legacy Bucket Reader
.Fai clic su Salva.
gcloud
Utilizza il comando gcloud storage buckets add-iam-policy-binding
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Dove:
BUCKET_NAME
è il nome del bucket a cui stai concedendo l'accesso all'entità. Ad esempio,my-bucket
.YOUR_AGENT_EMAIL
è l'email dell'account agente che hai copiato in Trova l'email dell'agente di servizio.
Esempi di codice
C++
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
C#
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C#.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Go
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Go.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Node.js.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
PHP
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Ruby
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Ruby.
Per eseguire l'autenticazione in Cloud Storage, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
JSON
Avere gcloud CLI installata e inizializzata, il che ti consente di generare un token di accesso per l'intestazione
Authorization
.Crea un file JSON contenente le seguenti informazioni:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Dove:
Utilizza
cURL
per chiamare l'API JSON con una richiestaPUT setIamPolicy
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Dove:
JSON_FILE_NAME
è il percorso del file che hai creato nel passaggio 2.OAUTH2_TOKEN
è il token di accesso che hai generato nel passaggio 1.BUCKET_NAME
è il nome del bucket a cui vuoi concedere l'accesso all'entità. Ad esempio,my-bucket
.