Les transferts sans agent incluent les transferts au sein de Cloud Storage, ou depuis Amazon S3, Azure Blob Storage ou Data Lake Storage Gen2, ou des listes d'URL d'objets publics. Ils ne nécessitent pas d'agents de transfert ni de pools d'agents.
Lorsque vous transférez des données entre des fournisseurs cloud dans le cadre d'un transfert sans agent, vous devez accorder des autorisations à deux comptes principaux :
- Le compte utilisateur qui crée ou gère le transfert.
- Un agent de service créé automatiquement la première fois que vous interagissez avec le service de transfert de stockage. Vous pouvez déléguer les autorisations de l'agent de service à un compte de service géré par l'utilisateur. Pour en savoir plus, consultez Déléguer les autorisations de l'agent de service à un compte de service géré par l'utilisateur.
Pour en savoir plus sur l'attribution des rôles IAM, consultez la page Accorder, modifier et révoquer les accès à des ressources.
Méthode la plus simple pour accorder des autorisations
Vous pouvez utiliser la CLI gcloud pour accorder les autorisations requises au compte utilisateur et à l'agent de service.
Ces autorisations permettent à l'utilisateur de créer, de modifier et de supprimer des tâches de transfert, ainsi que de définir ou de modifier des limites de bande passante.
Si ces autorisations sont trop larges pour les règles de votre organisation, consultez les sections suivantes de ce document pour connaître les autorisations minimales requises par le service de transfert de stockage.
Pour inspecter les autorisations existantes et imprimer les rôles manquants, exécutez la commande suivante :
gcloud transfer authorize
Pour appliquer automatiquement ces rôles, utilisez l'indicateur --add-missing :
gcloud transfer authorize --add-missing
Pour accorder des autorisations à un compte de service géré par l'utilisateur à la place de l'utilisateur, transmettez le fichier de clé du compte de service :
gcloud transfer authorize --add-missing --creds-file=path/to/key.json
La commande accorde les autorisations suivantes.
À l'utilisateur / au compte de service géré par l'utilisateur :
roles/ownerroles/storagetransfer.adminroles/storagetransfer.transferAgentroles/storage.objectAdminroles/pubsub.editor
À l'agent de service :
roles/storage.adminroles/storagetransfer.serviceAgent
Pour obtenir des instructions sur l'installation de la CLI gcloud, consultez le
gcloud guide de démarrage rapide.
Autorisations du compte utilisateur
Le compte utilisateur doit disposer de l'autorisation nécessaire pour exécuter les opérations du service de transfert de stockage. Ces autorisations sont accordées via l'un des deux rôles suivants : Utilisateur du transfert de stockage ou Administrateur du transfert de stockage.
De plus, le compte doit disposer de l'autorisation nécessaire pour récupérer l'agent de service afin de vérifier ses autorisations.
Pour configurer le compte utilisateur ou le compte de service géré par l'utilisateur, accordez les autorisations et les rôles IAM suivants.
| Rôle / Autorisation | Utilisation | Remarques |
|---|---|---|
resourcemanager.projects.getIamPolicy |
Cette autorisation permet de vérifier que l'agent de service dispose des autorisations requises pour effectuer un transfert. | Pour accorder cette autorisation, attribuez le
rôle prédéfini Lecteur de rôle
(roles/iam.roleViewer) ou
créez un rôle personnalisé avec
cette autorisation unique et accordez le rôle personnalisé. |
| L'un des rôles suivants : | ||
Administrateur du transfert de stockage
(roles/storagetransfer.admin)
|
Permet toutes les opérations du service de transfert de stockage, y compris la suppression des tâches de transfert. | Pour obtenir une liste détaillée des autorisations accordées, consultez la section Rôles prédéfinis pour le service de transfert de stockage. |
Utilisateur du transfert de stockage
(roles/storagetransfer.user)
|
Permet à l'utilisateur de créer, d'obtenir, de mettre à jour et de lister les transferts. Ne permet pas l'utilisateur de supprimer des tâches de transfert. | Pour obtenir une liste détaillée des autorisations accordées, consultez la section Rôles prédéfinis pour le service de transfert de stockage. |
Autorisations de l'agent de service
Le service de transfert de stockage utilise un
agent de service pour
déplacer vos données. Ce compte de service est créé automatiquement la première fois que
vous créez une tâche de transfert, appelez googleServiceAccounts.get ou consultez la page de création de tâche dans la Google Cloud console.
Le format du compte de service est généralement
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.
Pour récupérer l'identifiant de votre compte de service, utilisez l'appel d'API [googleServiceAccounts.get][googleServiceAccounts.get].
Attribuer automatiquement des rôles
Il existe deux façons d'attribuer automatiquement les rôles appropriés à l'agent de service :
Créez votre transfert à l'aide de la Google Cloud console. La console applique automatiquement les autorisations requises.
Utilisez
gcloud transfer authorize --add-missing. Consultez la section Méthode la plus simple pour accorder des autorisations.
Attribuer des rôles manuellement
Pour autoriser l'agent de service à accéder aux ressources nécessaires pour effectuer des transferts, attribuez les rôles suivants ou des autorisations équivalentes à l'agent de service.
| Rôle / Autorisation | Utilisation | Remarques |
|---|---|---|
Rédacteur des anciens buckets Storage
(roles/storage.legacyBucketWriter)
|
Permet au service de transfert de stockage de lire les métadonnées du bucket, de lister les objets dans le bucket et d'écrire des objets dans le bucket de destination. |
Accordez-le sur le bucket Cloud Storage de destination. Les rôles Cloud Storage |
Lecteur des objets Storage
(roles/storage.objectViewer)
|
Permet au service de transfert de stockage de copier des objets à partir d'une source Cloud Storage source. Permet également au service de transfert de stockage de déterminer si un fichier existe déjà dans la destination Cloud Storage et s'il a été modifié. |
Accordez-le sur le bucket Cloud Storage source si vous effectuez un transfert depuis Cloud Storage. Accordez-le également sur le bucket Cloud Storage de destination si votre transfert est configuré pour [écraser les objets](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) dans le récepteur lorsqu'ils sont différents, ou jamais. Non requis si votre paramètre de transfert est toujours écrasé. Le cas échéant, vous pouvez l'accorder au projet à partir duquel le service de transfert de stockage est exécuté au niveau du projet. |
Lecteur des anciens buckets Storage
(roles/storage.legacyBucketReader)
|
Permet au service de transfert de stockage de lire les métadonnées d'un bucket Cloud Storage. |
Accordez-le sur le bucket Cloud Storage source si vous effectuez un transfert depuis Cloud Storage. Les rôles Cloud Storage |
Pour obtenir des instructions, consultez la section Accorder les autorisations requises.
Déléguer à un compte de service géré par l'utilisateur
Vous pouvez déléguer les autorisations de l'agent de service à un compte de service géré par l'utilisateur. Cela vous permet de séparer les autorisations de bucket pour différentes tâches de transfert sur plusieurs comptes de service, au lieu de les centraliser dans un seul agent de service.
Pour en savoir plus, consultez la section Déléguer les autorisations de l'agent de service à un compte de service géré par l'utilisateur.
Transferts Cloud Storage inter-projets
Pour transférer des objets entre des buckets Cloud Storage dans différents projets, vous devez accorder une autorisation à un seul agent de service sur le bucket source et le bucket de destination. L'agent de service appartient au projet à partir duquel vous créez le transfert.
L'utilisateur ou le compte de service géré par l'utilisateur n'a besoin d'autorisations que sur le projet qui crée le transfert.
Pour obtenir l'adresse e-mail de l'agent de service, consultez la section Rechercher l'adresse e-mail de l'agent de service.
Sur le bucket source, accordez les rôles suivants au niveau du bucket à l'agent de service :
- Lecteur des anciens buckets Storage (
roles/storage.legacyBucketReader) - Lecteur des objets Storage (
roles/storage.objectViewer)
Sur le bucket de destination, accordez le rôle suivant au niveau du bucket au même agent de service :
- Rédacteur des anciens buckets Storage (
roles/storage.legacyBucketWriter) - De plus, pour les transferts configurés pour
écraser les objets dans le récepteur
lorsqu'ils sont différents, ou jamais : Lecteur des objets Storage
(
roles/storage.objectViewer)
Pour obtenir des instructions sur l'attribution de rôles au niveau du bucket, consultez les pages suivantes :
Les rôles Legacy Cloud Storage ne peuvent pas être accordés au niveau du projet.
Restrictions organisationnelles
Si votre organisation a appliqué
des contraintes de règle d'administration
telles que
des restrictions de domaine
(constraints/iam.allowedPolicyMemberDomains) ou
la désactivation de l'association de comptes de service à des ressources dans d'autres projets
(constraints/iam.disableCrossProjectServiceAccountUsage), ces contraintes
doivent être mises à jour pour que les transferts inter-projets puissent aboutir.
Vous devrez peut-être également mettre à jour les paramètres de VPC Service Controls pour prendre en charge les transferts inter-projets. Consultez la section Configurer VPC Service Controls pour les transferts de stockage d'objet cloud.
Autorisations AWS et Microsoft
Vous devez également configurer l'accès à vos fichiers sources s'ils se trouvent dans AWS S3 ou Microsoft Azure Storage. Les documents suivants décrivent les étapes requises :