Transférer des dossiers gérés Cloud Storage

Les dossiers gérés Cloud Storage permettent de contrôler précisément les accès des objets dans des buckets Cloud Storage. Les autorisations peuvent être définies au niveau d'un dossier au sein de buckets qui utilisent l'accès universel au niveau du bucket. Lorsque vous transférez des objets entre des buckets Cloud Storage avec le service de transfert de stockage, ces autorisations de dossier gérées peuvent être conservées.

Limites

Les limites suivantes s'appliquent aux transferts de dossiers gérés :

  • Vous devez utiliser l'API REST pour créer le transfert.
  • Le bucket de destination doit utiliser l'accès uniforme au niveau du bucket.
  • Les transferts de dossiers gérés ne sont pas compatibles avec le deleteObjectsUniqueInSink ou deleteObjectsFromSourceAfterTransfer.
  • Aucune conditions IAM ne doit être définie sur le bucket de destination ou son projet utilisez le type de ressource bucket (storage.googleapis.com/Bucket) ou object (objet) (storage.googleapis.com/Object). Si un bucket dans un projet dispose d'une condition IAM qui utilise l'un de ces types de ressources, les dossiers gérés ne peuvent être transférés vers aucun des buckets qu'il contient projet, même si la condition est supprimée par la suite.
  • Les transferts basés sur des événements ne sont pas acceptés.
  • Les transferts de fichiers manifestes ne sont pas possibles.
  • Les opérations sur les dossiers gérés ne sont pas consignées par Cloud Logging. La journalisation des objets est prise en charge.

Autorisations IAM

Les API Google Cloud Identity and Access Management (IAM) sont requises par le compte de service géré par Google.

Sur le bucket source:

  • storage.managedFolders.getIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.get

Sur le bucket de destination :

  • storage.managedFolders.setIamPolicy
  • storage.managedFolders.list
  • storage.managedFolders.create

Ces autorisations s'ajoutent aux autorisations standards requises par le service de transfert de stockage :

Pour accorder les autorisations de dossier géré requises, créez un rôle personnalisé avec uniquement les autorisations requises, puis attribuez-le au compte de service géré par Google au niveau du bucket (recommandé) ou du projet. Pour en savoir plus, consultez la section Considérations de sécurité.

Créer un transfert de dossier géré

Pour créer un transfert contenant un dossier géré, spécifiez managedFolderTransferEnabled: true dans votre transferSpec :

POST https://storagetransfer.googleapis.com/v1/transferJobs
{
  "name": "transferjobs/NAME",
  "projectId": "PROJECT_ID",
  "transferSpec": {
    "gcsDataSource": {
      "bucketName": "SOURCE_BUCKET",
      "managedFolderTransferEnabled": true
    },
    "gcsDataSink": {
      "bucketName": "DESTINATION_BUCKET"
    }
  },
  "status": "ENABLED"
}

Pour savoir comment créer un transfert à l'aide de l'API REST, consultez la section Créer des transferts ou la documentation de référence sur transferJobs.create.

Points à noter concernant la sécurité

L'attribution d'autorisations sur des dossiers gérés à un compte de service géré par Google le compte pour modifier les stratégies IAM sur les dossiers de destination ou sur tous les dossiers si le rôle est accordé au niveau du projet. Cela présente un risque pour la sécurité: un utilisateur disposant de droits de modification de tâche peut l'exploiter pour accorder des droits un acteur malveillant. Pour limiter ce risque, envisagez d'isoler les dossiers gérés dans un projet Google Cloud dédié.

Dépannage

Pour obtenir de l'aide sur la création et la gestion des dossiers gérés, consultez la page Dépannage.