Le service de transfert de stockage peut utiliser un bucket source Cloud Storage dans deux types de transferts :
Transferts sans agent : transferts cloud à cloud, par exemple de Cloud Storage vers Cloud Storage, de Cloud Storage vers AWS S3 ou de Cloud Storage vers Azure Blob Storage. Les autorisations sont accordées à l'agent de service du service de transfert de stockage.
Transferts basés sur des agents : transferts impliquant des systèmes de fichiers ou un stockage sur site qui utilisent des agents de transfert et des pools d'agents. Les autorisations doivent être accordées à la fois à l'agent de service et au compte de l'agent de transfert.
Accorder automatiquement des autorisations dans la console Google Cloud
Si vous utilisez la console Google Cloud pour créer un transfert sans agent et que vous disposez des autorisations utilisateur requises, 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. Si nécessaire, configurez l'accès à votre destination, puis créez un transfert.
Prérequis
Autorisations du compte utilisateur : pour accorder les rôles IAM requis listés sur cette page, votre compte utilisateur (ou compte de service géré par l'utilisateur) doit disposer des autorisations nécessaires pour modifier les stratégies IAM sur votre bucket source et votre projet de pool d'agents. Pour en savoir plus sur les exigences liées aux comptes utilisateur, consultez Autorisations des comptes utilisateur.
Autorisations de projet pour les transferts basés sur un agent : pour les transferts basés sur un agent, assurez-vous d'avoir configuré les rôles requis au niveau du projet pour votre agent de service et votre compte d'agent de transfert. Consultez Autorisations au niveau du projet basées sur l'agent.
Rechercher l'adresse e-mail de l'agent de service
L'agent de service est créé automatiquement la première fois que vous créez un job de transfert, que vous exécutez des commandes de configuration gcloud transfer, que vous accédez à la page Transfert de stockage dans la consoleGoogle Cloud ou que vous appelez googleServiceAccounts.get.
Pour obtenir l'adresse e-mail de l'agent de service, qui permet de l'identifier dans les commandes du service de transfert de stockage :
- 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.
- Cliquez sur Exécuter.
Copiez la valeur de accountEmail. Il utilise le format suivant : project-PROJECT_NUMBER@storage-transfer-service..
Accorder les autorisations requises
Sélectionnez votre type de transfert pour afficher la procédure d'octroi d'accès.
Transfert sans agent
Les rôles prédéfinis suivants accordent les autorisations requises sur le bucket source à l'agent de service :
- Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader) - Plus l'un des éléments suivants :
- Lecteur des objets Storage (
roles/storage.objectViewer) si les objets sources sont conservés. - Utilisateur d'objets Storage (
roles/storage.objectUser) si vous supprimez les objets sources après le transfert (deleteObjectsFromSourceAfterTransfer). - Administrateur des objets Storage (
roles/storage.objectAdmin) si vous conservez les LCA des objets (ACL_PRESERVE). Permet également de supprimer les objets sources après le transfert.
- Lecteur des objets Storage (
Ajoutez l'agent de service à la stratégie IAM du bucket source :
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
- Cliquez sur le menu à développer () du bucket source.
- Sélectionnez Modifier les autorisations.
- Cliquez sur + Ajouter un compte principal.
- Dans Nouveaux comptes principaux, saisissez l'adresse e-mail de votre agent de service.
- Sélectionnez
Storage Legacy Bucket Readerdans le menu déroulant Sélectionner un rôle. - Cliquez sur Ajouter un autre rôle, puis sélectionnez l'une des options suivantes :
Storage Object ViewerStorage Object UserStorage Object Admin
- Cliquez sur Enregistrer.
gcloud
Exécutez les commandes gcloud storage suivantes :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
Remplacez :
- BUCKET_NAME : nom de votre bucket source.
- SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service.
- OBJECT_ROLE : choisissez l'une des options suivantes en fonction de vos options de transfert :
objectViewer: si vous conservez les objets sources.objectUser: si vous supprimez des objets sources après le transfert.objectAdmin: si vous conservez les LCA des objets. Permet également de supprimer les objets sources après le transfert.
API REST
Générez un jeton d'accès pour authentifier votre requête. Si vous utilisez la CLI
gcloud, exécutez la commande suivante :gcloud auth print-access-token
Récupérez la stratégie IAM du bucket existant (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), ajoutez les liaisons suivantes à son tableaubindingset enregistrez la stratégie fusionnée sous le nomsource_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Remplacez :
- SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service.
- OBJECT_ROLE : choisissez
objectViewersi vous conservez les objets sources,objectUsersi vous les supprimez ouobjectAdminsi vous conservez les LCA des objets.
Envoyez une requête
PUTà l'aide decurl:curl -X PUT --data-binary @source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
Remplacez :
- OAUTH2_TOKEN : jeton d'accès OAuth 2.0 généré à l'étape 1.
- BUCKET_NAME : nom de votre bucket source.
Transfert basé sur un agent
Les rôles prédéfinis suivants accordent à l'agent de service l'accès requis au bucket source :
- Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader) - Créateur d'objets Storage (
roles/storage.objectCreator)
Le rôle suivant accorde l'accès requis au bucket source au compte de l'agent de transfert :
- Lecteur des objets Storage (
roles/storage.objectViewer) si vous conservez les objets sources, ou Utilisateur d'objets Storage (roles/storage.objectUser) si vous supprimez les objets sources après le transfert.
Attribuez ces rôles sur le bucket source.
Console
- Dans la console Google Cloud , accédez à la page Buckets de Cloud Storage.
- Cliquez sur le menu à développer Bucket () du bucket source, puis sélectionnez Modifier l'accès.
- Cliquez sur + Ajouter un compte principal.
- Dans Nouveaux comptes principaux, saisissez l'adresse e-mail de votre agent de service.
- Sélectionnez
Storage Legacy Bucket ReaderetStorage Object Creatordans les menus déroulants Sélectionner un rôle. - Cliquez à nouveau sur + Ajouter un compte principal.
- Saisissez l'adresse e-mail de votre compte d'agent de transfert. Il s'agit de l'utilisateur ou du compte de service utilisé lors de l'installation des agents de transfert. Par exemple,
my-agent-sa@PROJECT_ID.ouuser@example.com. - Sélectionnez
Storage Object Viewersi vous conservez les objets sources ouStorage Object Usersi vous les supprimez après le transfert. - Cliquez sur Enregistrer.
gcloud
Attribuez à l'agent de service les rôles de lecture des métadonnées du bucket et d'écriture des journaux de transfert :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReadergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorAttribuez des rôles d'accès aux objets au compte de l'agent de transfert :
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.OBJECT_ROLERemplacez :
- BUCKET_NAME : nom de votre bucket source.
- SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service.
- serviceAccount_OR_user : spécifiez
serviceAccountsi votre compte d'agent de transfert est un compte de service, ouusersi vos agents ont été installés avec un compte utilisateur. - TRANSFER_AGENT_ACCOUNT : adresse e-mail du compte qui a installé vos agents de transfert. Par exemple,
my-agent-sa@PROJECT_ID.ouuser@example.com. - OBJECT_ROLE : spécifiez
objectViewersi vous conservez les objets sources ouobjectUsersi vous les supprimez après le transfert.
API REST
Générez un jeton d'accès pour authentifier votre requête. Si vous utilisez la CLI
gcloud, exécutez la commande suivante :gcloud auth print-access-token
Récupérez la stratégie IAM du bucket existant (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), ajoutez les liaisons suivantes à son tableaubindingset enregistrez la stratégie fusionnée sous le nomagent_source_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Remplacez :
- SERVICE_AGENT_EMAIL : adresse e-mail de l'agent de service.
- serviceAccount_OR_user : spécifiez
serviceAccountsi votre compte d'agent de transfert est un compte de service, ouusersi vos agents ont été installés avec un compte utilisateur. - TRANSFER_AGENT_ACCOUNT : adresse e-mail du compte qui a installé vos agents de transfert. Par exemple,
my-agent-sa@PROJECT_ID.ouuser@example.com. - OBJECT_ROLE : spécifiez
objectViewersi vous conservez les objets sources ouobjectUsersi vous les supprimez après le transfert.
Mettez à jour la stratégie du bucket via
curl:curl -X PUT --data-binary @agent_source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"Remplacez :
- OAUTH2_TOKEN : jeton d'accès OAuth 2.0 généré à l'étape 1.
- BUCKET_NAME : nom de votre bucket source.
Transferts Cloud Storage multiprojets
Pour transférer des objets entre des buckets Cloud Storage situés dans différents projets Google Cloud, vous devez accorder des autorisations à l'agent de service du projet qui crée le transfert sur le bucket source et le bucket de destination.
Le compte utilisateur ou le compte de service géré par l'utilisateur qui crée le transfert n'a besoin que d'autorisations sur le projet à partir duquel le job de transfert est créé.
Pour accorder des rôles pour les transferts multiprojets :
- Obtenez l'adresse e-mail de l'agent de service pour le projet qui exécutera le transfert. Consultez Rechercher l'adresse e-mail de l'agent de service.
- Sur le bucket source, attribuez les rôles suivants à cet agent de service :
- Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader) - Plus l'un des rôles d'objet suivants :
- Lecteur des objets Storage (
roles/storage.objectViewer) si vous conservez les objets sources. - Utilisateur d'objets Storage (
roles/storage.objectUser) si vous supprimez les objets sources après le transfert (deleteObjectsFromSourceAfterTransfer). - Administrateur des objets Storage (
roles/storage.objectAdmin) si vous conservez les LCA des objets (ACL_PRESERVE). Permet également de supprimer les objets sources après le transfert.
- Lecteur des objets Storage (
- Lecteur des anciens buckets Storage (
- Sur le bucket de destination, attribuez les rôles suivants au même agent de service :
- Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader) - Utilisateur d'objets Storage (
roles/storage.objectUser) ou Administrateur des objets Storage (roles/storage.objectAdmin) si vous conservez les LCA d'objets (ACL_PRESERVE).
- Lecteur des anciens buckets Storage (
Pour obtenir des instructions détaillées sur l'octroi de l'accès au bucket de destination, consultez Configurer l'accès à un récepteur : Cloud Storage.
Restrictions sur les organisations
Si votre organisation a appliqué des contraintes de règle d'administration, assurez-vous qu'elles autorisent l'accès de l'agent de service multiprojet :
- Partage restreint par domaine (
constraints/iam.allowedPolicyMemberDomains) : la règle du projet hébergeant le bucket doit autoriser les domaines membres contenant l'agent de service. Consultez Restreindre les domaines. - Désactiver l'utilisation des comptes de service multiprojets (
constraints/iam.disableCrossProjectServiceAccountUsage) : assurez-vous que cette contrainte ne bloque pas l'accès aux comptes de service multiprojets. Consultez Restreindre les comptes de service. - VPC Service Controls : si les buckets appartiennent à des périmètres de service différents, configurez des règles d'entrée et de sortie pour autoriser la communication de transfert. Consultez Configurer VPC Service Controls pour les transferts de stockage d'objets cloud.
Documentation de référence sur les autorisations précises
Sélectionnez votre type de transfert pour afficher les rôles et autorisations requis.
Transfert sans agent
Pour les transferts sans agent, les autorisations doivent être accordées à l'agent de service du service de transfert de stockage :
| 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.delete |
Permet à l'agent de service de supprimer des objets du bucket. Obligatoire si la valeur de deleteObjectsFromSourceAfterTransfer est true. |
storage.objects.getIamPolicy |
Permet de lire les LCA sur les objets sources. Obligatoire si la conservation des LCA d'objets (ACL_PRESERVE) est activée. |
storage.folders.liststorage.folders.get |
Permet de lister et de lire les dossiers. Obligatoire lors du transfert depuis un bucket avec l'espace de noms hiérarchique activé. |
Transfert basé sur un agent
Pour les transferts basés sur un agent à partir d'une source Cloud Storage, les autorisations sont réparties entre deux comptes principaux :
Agent de service : nécessite un accès en lecture au niveau du bucket pour résoudre les métadonnées et l'emplacement du bucket, ainsi qu'un accès en création d'objets pour écrire les journaux de transfert de l'agent.
Compte d'agent de transfert : compte de service ou compte utilisateur utilisé pour créer les agents de transfert.
Autorisations de l'agent de service
| Autorisation | Description |
|---|---|
storage.buckets.get |
Permet à l'agent de service d'inspecter les métadonnées et l'emplacement du bucket. |
storage.objects.create |
Permet à l'agent de service d'écrire les journaux de transfert de l'agent dans le bucket source lors du transfert de Cloud Storage vers un système de fichiers. |
Autorisations du compte d'agent de transfert
| Autorisation | Description |
|---|---|
storage.objects.list |
Permet aux agents de lister les objets du bucket source. |
storage.objects.get |
Permet aux agents de lire les objets du bucket source. |
storage.objects.delete |
Permet aux agents de supprimer des objets sources si deleteObjectsFromSourceAfterTransfer est activé. |
storage.folders.liststorage.folders.get |
Permet aux agents de lister et de lire les dossiers lors du transfert depuis un bucket avec l'espace de noms hiérarchique activé. |
Étapes suivantes
Vous devez configurer l'accès à votre destination :