Cloud Storage utilizza un
account di servizio gestito da Google,
noto come 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 avere le autorizzazioni pertinenti per il bucket di destinazione:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Il ruolo Proprietario bucket legacy Storage (roles/storage.legacyBucketOwner
) oppure
il ruolo Storage Admin (roles/storage.admin
) fornisce i requisiti
autorizzazioni aggiuntive.
Concessione automatica delle autorizzazioni nella console Google Cloud
Se utilizzi la console Google Cloud per creare il trasferimento e le autorizzazioni elencate in Autorizzazioni utente, all'agente di servizio verranno concesse automaticamente del bucket di destinazione.
Puoi saltare i passaggi 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 il bucket di destinazione
controllo delle versioni degli oggetti
attivato, nessuno dei due |
storage.objects.list |
Consente all'account di servizio di elencare gli oggetti nel bucket. Obbligatorio se impostate overwriteObjectsAlreadyExistingInSink su false o deleteObjectsUniqueInSink su true . |
Il seguente ruolo predefinito concede le autorizzazioni richieste:
- Autore bucket legacy Storage (
roles/storage.legacyBucketWriter
)
Qualsiasi ruolo di Cloud Storage contrassegnato come legacy
può essere concesso solo al
a livello di bucket.
Per un elenco completo dei ruoli di Cloud Storage e delle relative autorizzazioni (consulta i ruoli IAM).
Concedi le autorizzazioni richieste
Per concedere all'agente di servizio il ruolo Write Legacy Bucket Writer, segui procedi nel seguente modo.
Trova l'email dell'agente di servizio
Vai alla pagina di riferimento
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 il progetto che che stai utilizzando per gestire Storage Transfer Service, che potrebbe essere diverso da progetto del bucket di destinazione.
Fai clic su Execute (Esegui).
L'indirizzo email dell'agente di servizio viene restituito come 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 Extra del bucket (
) associato al bucket a cui vuoi concedere un ruolo a un'entità.Scegli Accesso in modifica.
Fai clic sul pulsante + Aggiungi entità.
Nel campo Nuove entità, inserisci l'account dell'agente di servizio email.
Seleziona
Storage Legacy Bucket Writer
dal menu a discesa Seleziona un ruolo.Fai clic su Salva.
gcloud
Usa 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.legacyBucketWriter
Dove:
BUCKET_NAME
è il nome del bucket che stai concedendo l'accesso all'entità. Ad esempio,my-bucket
.YOUR_AGENT_EMAIL
è l'indirizzo email dell'account dell'agente che copiato in Trovare l'email dell'agente di servizio.
Esempi di codice
C++
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, consulta Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage C++ documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
C#
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage C# documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Go
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.
Per autenticarti a Cloud Storage, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Java
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage Java documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Node.js
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage Node.js documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.
PHP
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage PHP documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Python
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage Python documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
Ruby
Per scoprire come installare e utilizzare la libreria client per Cloud Storage, vedi Librerie client di Cloud Storage. Per ulteriori informazioni, consulta API Cloud Storage Ruby documentazione di riferimento.
Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.
JSON
Avere gcloud CLI installato e inizializzato, per generare un token di accesso per l'intestazione
Authorization
.In alternativa, puoi creare un token di accesso utilizzando il metodo OAuth 2.0 Playground e includilo 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 dell'agente che hai copiato in Trovare l'email dell'agente di servizio.
Utilizza
cURL
per chiamare l'API JSON con un 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 che generate 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 a Cloud Storage consulta la documentazione su IAM di Cloud Storage.