Cloud Storage utilise un compte de service géré par Google, appelé agent de service, pour déplacer des données vers un bucket Cloud Storage. Cet agent de service est créé la première fois que vous appelez googleServiceAccounts.get
.
Le bucket de destination n'a pas besoin d'appartenir au même projet que l'agent de service. Les étapes sont les mêmes quel que soit le projet dans lequel se trouve le bucket.
Autorisations utilisateur
Pour accorder les autorisations requises à l'agent de service, vous devez disposer des autorisations appropriées sur le bucket de destination :
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Les rôles Propriétaire des anciens buckets Storage (roles/storage.legacyBucketOwner
) et Administrateur de l'espace de stockage (roles/storage.admin
) fournissent les autorisations requises.
Accorder automatiquement des autorisations dans la console Google Cloud
Si vous utilisez la console Google Cloud pour créer votre transfert et que vous disposez des autorisations répertoriées dans la section Autorisations des utilisateurs, l'agent de service se voit automatiquement attribuer les autorisations requises sur votre bucket de destination.
Vous pouvez ignorer les étapes décrites sur cette page. Si nécessaire, configurez l'accès à votre source, puis créez un transfert.
Autorisations requises
L'agent de service doit disposer des autorisations suivantes pour le bucket de destination :
Autorisation | Description |
---|---|
storage.buckets.get |
Permet au compte de service d'obtenir l'emplacement du bucket. |
storage.objects.create |
Permet au compte de service d'ajouter des objets au bucket. |
storage.objects.delete |
Permet au compte de service de supprimer des objets du bucket.
Obligatoire si vous définissez Notez que si la gestion des versions d'objets est activée sur le bucket de destination, ni |
storage.objects.list |
Permet au compte de service de répertorier les objets présents dans le bucket. Obligatoire si vous définissez overwriteObjectsAlreadyExistingInSink sur false ou deleteObjectsUniqueInSink sur true . |
Le rôle prédéfini suivant accorde les autorisations requises :
- Rédacteur des anciens buckets de l'espace de stockage (
roles/storage.legacyBucketWriter
)
Tout rôle Cloud Storage marqué comme étant un rôle legacy
ne peut être accordé qu'au niveau du bucket.
Pour obtenir une liste complète des rôles Cloud Storage et des autorisations qu'ils comprennent, consultez la page sur les rôles IAM.
Accorder les autorisations requises
Pour accorder le rôle Rédacteur des anciens buckets de l'espace de stockage à l'agent de service, suivez les étapes ci-dessous.
Rechercher l'adresse e-mail de l'agent de service
Accédez à la page de référence
googleServiceAccounts.get
.Un panneau interactif s'affiche, intitulé Essayer cette méthode.
Dans le panneau, sous Paramètres des requêtes, saisissez votre ID de projet. Le projet que vous spécifiez ici doit être le projet que vous utilisez pour gérer le service de transfert de stockage, qui peut être différent du projet du bucket de destination.
Cliquez sur Exécuter.
L'adresse e-mail de votre agent de service est renvoyée en tant que valeur de
accountEmail
. Copiez cette valeur.L'adresse e-mail de l'agent de service utilise le format
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Ajouter l'agent de service à une stratégie au niveau du bucket
Console
- Dans la console Google Cloud, accédez à la page Buckets Cloud Storage.
Cliquez sur le menu déroulant (
) associé au bucket pour lequel vous souhaitez accorder un rôle à un compte principal.Sélectionnez Modifier les autorisations.
Cliquez sur le bouton + Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez l'adresse e-mail du compte de votre agent de service.
Sélectionnez
Storage Legacy Bucket Writer
dans le menu déroulant Sélectionner un rôle.Cliquez sur Enregistrer.
gcloud
Exécutez la commande 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
Où :
BUCKET_NAME
est le nom du bucket que vous qui accorde l'accès au compte principal. Exemple :my-bucket
YOUR_AGENT_EMAIL
correspond à l'adresse e-mail de l'agent que vous avez copiée dans Rechercher l'adresse e-mail de l'agent de service.
Exemples de code
C++
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C++.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
C#
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage C#.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez les API Go Cloud Storage documentation de référence.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Java.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Node.js.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez les API PHP Cloud Storage documentation de référence.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage Python.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour savoir comment installer et utiliser la bibliothèque cliente pour Cloud Storage, consultez la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez les API Ruby Cloud Storage documentation de référence.
Pour vous authentifier auprès de Cloud Storage, configurez le service Identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
JSON
Vous devez installer et initialiser gcloud CLI afin de générer un jeton d'accès pour l'en-tête
Authorization
.Vous pouvez également créer un jeton d'accès à l'aide d'OAuth 2.0 Playground et l'inclure dans l'en-tête
Authorization
.Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Où :
YOUR_AGENT_EMAIL
correspond à l'adresse e-mail de l'agent que vous avez copiée dans Rechercher l'adresse e-mail de l'agent de service.
Exécutez
cURL
pour appeler l'API JSON avec une requêtePUT 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"
Où :
JSON_FILE_NAME
correspond au chemin d'accès au fichier que vous avez créé à l'étape 2.OAUTH2_TOKEN
correspond au jeton d'accès que vous avez généré à l'étape 1.BUCKET_NAME
correspond au nom du bucket pour lequel vous voulez accorder l'accès au compte principal. Exemple :my-bucket
Pour en savoir plus sur l'attribution de rôles IAM aux ressources Cloud Storage, consultez la documentation IAM de Cloud Storage.