Le service de transfert de stockage utilise un
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.getIamPolicystorage.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 Google Cloud console
Si vous utilisez la Google Cloud console 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.
|
storage.objects.getIamPolicy |
Permet à l'agent de service de lire les LCA sur les objets sources. Obligatoire si
la conservation des LCA d'objet (ACL_PRESERVE) est activée.
|
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 (
- De plus, si vous conservez les LCA
d'objet avec
ACL_PRESERVE:- Propriétaire des anciens objets de l'espace de stockage (
roles/storage.legacyObjectOwner)
- Propriétaire des anciens objets de l'espace de stockage (
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 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 Google Cloud console, accédez à la page Buckets de 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 ViewerouStorage Object Creatordans le menu déroulant Rôle.Cliquez sur Ajouter un autre rôle.
Sélectionnez
Storage Legacy Bucket WriterouStorage 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
Remplacez les éléments suivants :
BUCKET_NAMEcorrespond au nom du bucket pour lequel vous accordez l'accès au compte principal. Exemple :my-bucket.YOUR_AGENT_EMAILcorrespond à l'adresse e-mail du compte 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'APIC++ Cloud Storage.
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 les bibliothèques clientes.
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'APIC# Cloud Storage.
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 les bibliothèques clientes.
Go
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'APIGo Cloud Storage.
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 les bibliothèques clientes.
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 la documentation de référence de l' API Cloud Storage 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 les bibliothèques clientes.
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 Node.js Cloud Storage.
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 les bibliothèques clientes.
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 la documentation de référence de l' API Cloud Storage 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 les bibliothèques clientes.
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 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 les bibliothèques clientes.
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 la documentation de référence de l' API RubyCloud Storage.
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 les bibliothèques clientes.
Rust
JSON
Vous devez installer et initialiser la gcloud CLI installée et initialisée, 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" ] } ] }
Remplacez les éléments suivants :
YOUR_AGENT_EMAILcorrespond à l'adresse e-mail du compte de l'agent que vous avez copiée dans Rechercher l'adresse e-mail de l'agent de service.
Exécutez
cURLpour appeler l'API JSON avec unePUT setIamPolicyrequête :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"
Remplacez les éléments suivants :
JSON_FILE_NAMEcorrespond au chemin d'accès au fichier que vous avez créé à l'étape 2.OAUTH2_TOKENcorrespond au jeton d'accès que vous avez généré à l'étape 1.BUCKET_NAMEcorrespond au nom du bucket pour lequel vous voulez accorder l'accès au compte principal. Exemple :my-bucket