Autorisations de transfert basées sur l'agent

Avant de créer un transfert basé sur un agent, vous devez configurer les autorisations entités suivantes:

  • Compte de service géré par l'utilisateur ou l'utilisateur utilisé pour créer le transfert de données. Il s'agit de la connecté à la console Google Cloud ou au compte spécifié lors de l'authentification auprès de la CLI gcloud. Le compte utilisateur peut être un compte utilisateur standard ou un compte de service géré par l'utilisateur.

  • Le compte de service géré par Google, également appelé "service utilisé par le service de transfert de stockage. Ce compte est généralement identifié par son adresse e-mail, qui utilise le format project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com

  • Le compte d'agent de transfert qui fournit les services Google Cloud pour les agents de transfert. Les comptes d'agent de transfert utilisent le identifiants de l'utilisateur qui les installe, ou les identifiants d'un de service géré par l'utilisateur pour s'authentifier.

Pour en savoir plus sur l'attribution de rôles IAM, consultez la section Accorder, modifier et révoquer les accès à des ressources.

La méthode la plus simple pour accorder des autorisations

La CLI gcloud permet d'accorder les autorisations requises au compte de service utilisateur/géré par l'utilisateur et au compte de service géré par Google. Ces autorisations permettent à l'utilisateur de créer, de modifier et de supprimer des tâches de transfert, et 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'option --add-missing:

gcloud transfer authorize --add-missing

Pour accorder des autorisations à un compte de service géré par l'utilisateur, transmettez le compte de service fichier de clé:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

Pour savoir comment créer un compte de service, consultez la page Créer et gérer des comptes de service.

La commande accorde les autorisations suivantes.

  • Au compte de service utilisateur/géré par l'utilisateur :

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Au compte de service géré par Google :

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Pour obtenir des instructions sur l'installation de la CLI gcloud, consultez le Guide de démarrage rapide pour gcloud.

Autorisations des utilisateurs ou des comptes de service gérés par l'utilisateur

Cette section décrit les rôles requis pour les comptes qui gèrent et exécutent les transferts. Ce sont les exigences de votre entreprise qui déterminent des rôles pour chaque personnage ; Dans cette section, nous partons du principe que vous allez créer un administrateur et un utilisateur.

Comptes administrateur

Les comptes administrateur du service de transfert de stockage gèrent les agents de transfert, définissent les limites d'utilisation de la bande passante et suppriment les tâches de transfert.

Pour configurer un compte administrateur, attribuez les autorisations et les rôles IAM suivants :

Rôle/Autorisation Utilisation Remarques
resourcemanager.projects.getIamPolicy Cette autorisation permet de vérifier que le compte de service géré par Google 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é.
Administrateur de transfert de stockage (roles/storagetransfer.admin) Permet d'effectuer des actions d'administration dans le projet de transfert, telles que la configuration du projet et la surveillance de l'agent. 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.

Comptes utilisateur

Les comptes utilisateur du service de transfert de stockage permettent de créer et d'exécuter des transferts. Ces comptes ne sont généralement pas autorisés à supprimer des tâches de transfert.

Un compte utilisateur peut être un utilisateur de la console Google Cloud ou un compte de service. Si vous utilisez à l'aide d'un compte de service, la méthode utilisée pour transmettre les identifiants Le service de transfert de stockage varie en fonction de l'interface que vous utilisez.

Pour configurer un compte utilisateur, attribuez-lui les autorisations et les rôles suivants:

Rôle/Autorisation Utilisation Remarques
resourcemanager.projects.getIamPolicy Permet de vérifier que le compte de service géré par Google dispose des autorisations Pub/Sub 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é.
Utilisateur du transfert de stockage (roles/storagetransfer.user) Permet à l'utilisateur de créer, d'obtenir, de mettre à jour et de répertorier des transferts. 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 du compte de service géré par Google

Le service de transfert de stockage utilise un compte de service géré par Google 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 Google Cloud Console.

Le format du compte de service est le suivant : 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.

Attribuer automatiquement des rôles

Il existe deux façons d'attribuer automatiquement les rôles appropriés au compte de service géré par Google :

Attribuer des rôles manuellement

Pour autoriser le compte de service géré par Google à accéder aux ressources nécessaires pour effectuer des transferts, attribuez les rôles suivants, ou des rôles équivalents les autorisations au compte de service.

Rôle/Autorisation Utilisation Remarques
Créateur des objets de l'espace de stockage (roles/storage.objectCreator) Permet au service de transfert de stockage de créer des journaux de transfert dans le bucket Cloud Storage connecté à ce transfert. Ce rôle doit être accordé à tous les buckets Cloud Storage utilisés lors d'un transfert. Le cas échéant, vous pouvez l'accorder au projet à partir duquel le service de transfert de stockage est exécuté.

Pour obtenir la liste détaillée des autorisations attribuées par ces rôles, consultez la section Rôles prédéfinis pour Cloud Storage.
Lecteur des objets de l'espace de stockage (roles/storage.objectViewer) Permet au service de transfert de stockage de déterminer si un fichier a déjà été transféré vers ou depuis Cloud Storage.
Agent du service de transfert de stockage (roles/storagetransfer.serviceAgent) Permet au service de transfert de stockage de créer et de modifier automatiquement des sujets Pub/Sub pour communiquer de Google Cloud vers les agents de transfert. Doit être appliqué au niveau du projet au projet à partir duquel le service de transfert de stockage est exécuté.

Pour obtenir la liste détaillée des autorisations accordées par ce rôle, consultez la section Autorisations et rôles.
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.

Doit être accordé à chaque bucket Cloud Storage utilisé lors d'un transfert.

Les rôles Cloud Storage legacy ne peuvent être accordés qu'au niveau du bucket.

Pour obtenir des instructions, consultez la section Accorder les autorisations requises.

Autorisations du compte de l'agent de transfert

Les agents de transfert du service de transfert de stockage peuvent être exécutés avec le compte de l'utilisateur ou avec un compte de service.

Pour configurer un compte de service d'agent de transfert ou un compte utilisateur exécutant les agents de transfert, attribuez le rôle suivant :

Rôle/Autorisation Utilisation Remarques
Agent Storage Transfer (roles/storagetransfer.transferAgent) Attribue aux agents de transfert les autorisations requises pour effectuer un transfert à l'aide du service de transfert de stockage et de Pub/Sub. Attribuez ce rôle à l'utilisateur ou au compte de service utilisé par les agents.

Pour obtenir la liste détaillée des autorisations accordées par ce rôle, consultez la section Contrôle d'accès avec IAM.

Autorisations de la source et de la destination

Vous devez également vous assurer que le compte de l'agent dispose des autorisations appropriées pour accéder aux données sources et écrire sur la destination.

Système de fichiers, stockage compatible avec S3 ou HDFS vers Cloud Storage

Si votre destination de transfert est un bucket Cloud Storage, l'agent de transfert a besoin des autorisations suivantes sur le bucket de destination. Pour obtenir des instructions, consultez la section Ajouter un compte principal à une stratégie au niveau du bucket.

Autorisation Description
storage.objects.create Permet au compte de l'agent d'écrire des objets Cloud Storage pendant le transfert.
storage.objects.get Permet au compte de l'agent de lire les données et les métadonnées d'objets.
storage.objects.list Permet au compte d'agent de répertorier les objets dans Cloud Storage bucket.
storage.objects.delete Obligatoire si le transfert est configuré pour écraser ou supprimer des objets dans le récepteur. Par exemple, si overwriteObjectsAlreadyExistingInSink ou deleteObjectsUniqueInSink sont définis dans la configuration transferOptions de votre transfert.

Pour accorder ces autorisations, attribuez le rôle suivant:

Vous pouvez également créer un rôle personnalisé avec les autorisations spécifiques et attribuer le rôle personnalisé.

Des autorisations supplémentaires sont requises pour activer les importations en plusieurs parties.

Cloud Storage vers système de fichiers

Si la source de votre transfert est un bucket Cloud Storage, l'agent de transfert doit disposer des autorisations suivantes sur le bucket source.

Autorisation Description
storage.objects.create Autorise le compte de l'agent à écrire des journaux de transfert et des données dans le bucket source Cloud Storage.
storage.objects.get Permet au compte de l'agent de lire les données et les métadonnées d'objets.
storage.objects.list Permet au compte d'agent de répertorier les objets dans Cloud Storage bucket.
storage.objects.delete Obligatoire si le transfert est configuré pour supprimer des objets de la source. Voir deleteObjectsFromSourceAfterTransfer.

Pour accorder cette autorisation, attribuez le rôle suivant:

Vous pouvez également créer un rôle personnalisé avec l'autorisation unique et accorder le rôle personnalisé.

Système de fichiers vers système de fichiers

Si votre transfert s'effectue entre deux systèmes de fichiers, l'agent de transfert doit disposer des autorisations suivantes sur le bucket intermédiaire.

Autorisation Description
storage.objects.create Permet au compte de l'agent d'écrire des objets Cloud Storage pendant le transfert.
storage.objects.get Permet au compte de l'agent de lire les données et les métadonnées d'objets.
storage.objects.list Permet au compte d'agent de répertorier les objets dans Cloud Storage bucket.
storage.objects.delete Obligatoire si le transfert est configuré pour supprimer des objets dans le bucket intermédiaire une fois le transfert terminé.

Pour accorder ces autorisations, attribuez le rôle suivant:

Vous pouvez également créer un rôle personnalisé avec les autorisations spécifiques et attribuer le rôle personnalisé.

Des autorisations supplémentaires sont requises pour activer les importations en plusieurs parties.

Importations en plusieurs parties

Pour activer les importations multiparties pour les transferts d'un système de fichiers vers Cloud Storage ou entre des systèmes de fichiers, accordez également les autorisations suivantes à l'agent.

  • Pour les transferts vers Cloud Storage, attribuez les autorisations à la destination bucket.
  • Pour les transferts entre systèmes de fichiers, attribuez les autorisations au bucket intermédiaire.
Nom de l'autorisation d'importation en plusieurs parties Description
storage.multipartUploads.create Importer des objets en plusieurs parties.
storage.multipartUploads.abort Annuler les sessions d'importation en plusieurs parties.
storage.multipartUploads.listParts Répertorier les parties d'objet importées dans une session d'importation en plusieurs parties.
storage.multipartUploads.list Répertorier les sessions d'importation en plusieurs parties dans un bucket.

Pour accorder ces autorisations, attribuez le rôle suivant:

Vous pouvez également créer un rôle personnalisé avec les autorisations spécifiques et attribuer le rôle personnalisé.