Le service de transfert de stockage utilise un compte de service géré par Google, appelé agent de service, pour déplacer des données depuis un bucket source Cloud Storage. Cet agent de service est créé la première fois que vous appelez googleServiceAccounts.get
.
Le bucket source 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 source :
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 source.
Vous pouvez ignorer les étapes décrites sur cette page et passer directement à la création d'un transfert.
Autorisations requises
L'agent de service doit disposer des autorisations suivantes applicables au bucket source :
Autorisation | Description |
---|---|
storage.buckets.get |
Permet à l'agent de service d'obtenir l'emplacement du bucket. |
storage.objects.list |
Permet à l'agent de service de répertorier les objets présents dans le bucket. |
storage.objects.get |
Permet à l'agent de service de lire les objets dans le bucket. |
storage.objects.create |
Permet à l'agent de service de créer des objets dans le bucket. Obligatoire si le transfert s'effectue vers un système de fichiers. Le service de transfert de stockage crée et remplit deux dossiers dans le bucket source : |
storage.objects.delete |
Permet à l'agent de service de supprimer des objets du bucket. Obligatoire si vous définissez deleteObjectsFromSourceAfterTransfer sur true .
|
Les rôles prédéfinis suivants accordent ensemble les autorisations requises :
- Au choix :
- Lecteur des objets Storage (
roles/storage.objectViewer
) si le transfert se fait vers un autre bucket Cloud Storage. - Créateur des objets de l'espace de stockage (
roles/storage.objectCreator
) si le transfert concerne un système de fichiers.
- Lecteur des objets Storage (
- Plus un des éléments suivants :
- Rédacteur des anciens buckets Storage (
roles/storage.legacyBucketWriter
) si une autorisation de suppression d'objet est requise. - Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader
) si l'autorisation de suppression des objets n'est pas requise.
- Rédacteur des anciens buckets Storage (
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.
Pour les LCA d'objets lorsque ACL_PRESERVE est défini, le rôle Propriétaire des anciens objets de l'espace de stockage (roles/storage.legacyObjectOwner
) est également requis pour l'objet source. Pour ACL_PRESERVE, ajoutez manuellement le compte de service au rôle Storage Legacy Object Owner afin d'accorder à l'objet source l'autorisation storage.objects.getIamPolicy
.
Accorder les autorisations requises
Pour accorder les autorisations requises à l'agent de service, procédez comme suit :
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 source.
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 Object Viewer
ouStorage Object Creator
dans le menu déroulant Rôle.Cliquez sur Ajouter un autre rôle.
Sélectionnez
Storage Legacy Bucket Writer
ouStorage Legacy Bucket Reader
.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.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Où :
BUCKET_NAME
correspond au nom du bucket pour lequel vous accordez 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 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 la documentation de référence de l'API Cloud Storage en langage Go.
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 la page Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez les API Java 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.
Node.js
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 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 Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez la documentation de référence de l'API Cloud Storage en langage PHP.
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 Bibliothèques clientes Cloud Storage. Pour en savoir plus, consultez les API Python 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.
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, ce qui vous permet de générer un jeton d'accès pour l'en-tête
Authorization
.Créez un fichier JSON contenant les informations suivantes :
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Où :
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