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

Les dossiers gérés par Cloud Storage permettent un contrôle précis des accès aux objets dans les buckets Cloud Storage. Les autorisations peuvent être définies au niveau d'un dossier dans les buckets qui utilisent un 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é 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 les options deleteObjectsUniqueInSink et deleteObjectsFromSourceAfterTransfer.
  • Il ne doit pas y avoir de conditions IAM sur le bucket de destination ou dans son projet utilisant le type de ressource bucket (storage.googleapis.com/Bucket) ou le type de ressource objet (storage.googleapis.com/Object). Si un bucket d'un projet comporte 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 de ce 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 acceptés.
  • Les opérations des dossiers gérés ne sont pas consignées par Cloud Logging. La journalisation des objets est acceptée.

Autorisations IAM

Les autorisations Google Cloud Identity and Access Management (IAM) suivantes 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 requises sur les dossiers gérés, créez un rôle personnalisé avec uniquement les autorisations requises et attribuez-le au compte de service géré par Google, au niveau du bucket (recommandé) ou au niveau du projet. Pour en savoir plus, consultez les 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 fichier 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"
}

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

Points à noter concernant la sécurité

L'attribution d'autorisations pour les dossiers gérés à un compte de service géré par Google permet à ce compte de modifier les stratégies IAM sur les dossiers de destination ou sur tous les dossiers si le rôle est attribué au niveau du projet. Cela présente un risque de sécurité : un utilisateur disposant des autorisations de modification de tâche pourrait l'exploiter pour accorder des droits à un acteur malveillant. Pour atténuer ce risque, envisagez d'isoler les transferts de 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.