Cloud Storage utilizza un account di servizio gestito da Google, chiamato agente di servizio, per spostare i dati in un bucket Cloud Storage. Questo agente di servizio viene creato la prima volta che chiami googleServiceAccounts.get
.
Il bucket di destinazione non deve necessariamente 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 per il bucket di destinazione:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Il ruolo Proprietario bucket legacy per l'archiviazione (roles/storage.legacyBucketOwner
) o il ruolo Amministratore Storage (roles/storage.admin
) forniscono le autorizzazioni richieste.
Concessione automatica delle autorizzazioni nella console Google Cloud
Se utilizzi la console Google Cloud per creare il trasferimento e hai le autorizzazioni elencate in Autorizzazioni dell'utente, all'agente di servizio verranno concesse automaticamente le autorizzazioni richieste per il bucket di destinazione.
Puoi saltare i passaggi descritti in questa pagina. Se necessario, configura l'accesso all'origine, quindi crea un trasferimento.
Autorizzazioni obbligatorie
L'agente di servizio deve disporre delle seguenti autorizzazioni per il bucket di destinazione:
Autorizzazione | Descrizione |
---|---|
storage.buckets.get |
Consente all'account di servizio di ottenere la località del bucket. |
storage.objects.create |
Consente all'account di servizio di aggiungere oggetti al bucket. |
storage.objects.delete |
Consente all'account di servizio di eliminare oggetti nel bucket.
Obbligatorio se imposti Tieni presente che se nel bucket di destinazione è abilitato il controllo delle versioni degli oggetti, né |
storage.objects.list |
Consente all'account di servizio di elencare gli oggetti nel bucket. Obbligatorio se
imposti overwriteObjectsAlreadyExistingInSink su
false o deleteObjectsUniqueInSink su
true . |
Il seguente ruolo predefinito concede le autorizzazioni richieste:
- Writer bucket legacy Storage (
roles/storage.legacyBucketWriter
)
Qualsiasi ruolo di Cloud Storage contrassegnato come legacy
può essere concesso solo a livello di bucket.
Per un elenco completo dei ruoli di Cloud Storage e delle autorizzazioni che contengono, consulta i ruoli IAM.
Concedi le autorizzazioni richieste
Per concedere il ruolo Writer bucket legacy di Storage 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 dal titolo Prova questo metodo.
Nel riquadro, in Parametri di richiesta, inserisci il tuo ID progetto. Il progetto specificato qui deve essere quello che utilizzi per gestire Storage Transfer Service, che potrebbe essere diverso dal progetto del bucket di destinazione.
Fai clic su Execute (Esegui).
L'indirizzo email dell'agente di servizio viene restituito con il valore
accountEmail
. Copia questo valore.L'email dell'agente di servizio utilizza il formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Aggiungi l'agente di servizio a un criterio a livello di bucket
Console
- Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.
Fai clic sul menu overflow del 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'indirizzo email dell'account dell'agente di servizio.
Seleziona
Storage Legacy Bucket Writer
dal menu a discesa Seleziona un ruolo.Fai clic su Salva.
gsutil
Usa il comando gsutil iam ch
:
gsutil iam ch \ serviceAccount:YOUR_AGENT_EMAIL:legacyBucketWriter \ gs://BUCKET_NAME
Dove:
YOUR_AGENT_EMAIL
è l'indirizzo email dell'account agente che hai copiato in Trovare l'email dell'agente di servizio.BUCKET_NAME
è il nome del bucket a cui concedi l'accesso dell'entità. Ad esempio,my-bucket
.
Esempi di codice
C++
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API C++ di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
C#
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API C# di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Go
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Go di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Java di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Node.js di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API PHP di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Python di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta librerie client di Cloud Storage. Per maggiori informazioni, consulta la documentazione di riferimento dell'API Ruby di Cloud Storage.
Per eseguire l'autenticazione in Cloud Storage, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
JSON
Assicurati che gcloud CLI sia installato e inizializzatoper generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando OAuth 2.0 Playground e includerlo nell'intestazione
Authorization
.Crea un file JSON contenente le seguenti informazioni:
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Dove:
YOUR_AGENT_EMAIL
è l'indirizzo email dell'account agente che hai copiato in Trovare l'email dell'agente di servizio.
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 creato nel passaggio 2.OAUTH2_TOKEN
è il token di accesso generato nel passaggio 1.BUCKET_NAME
è il nome del bucket a cui vuoi concedere l'accesso all'entità. Ad esempio,my-bucket
.
Per ulteriori informazioni sull'assegnazione dei ruoli IAM alle risorse di Cloud Storage, consulta la documentazione IAM di Cloud Storage.