Transfiere carpetas administradas de Cloud Storage

Las carpetas administradas de Cloud Storage proporcionan un control de acceso detallado a los objetos en los buckets de Cloud Storage. Los permisos pueden establecerse a nivel de carpeta en los buckets que usan el acceso universal. Cuando se transfieren objetos entre buckets de Cloud Storage con el Servicio de transferencia de almacenamiento, se pueden conservar estos permisos de carpeta administrada.

Limitaciones

Las siguientes limitaciones se aplican a las transferencias de carpetas administradas:

  • Debes usar la API de REST para crear la transferencia.
  • El bucket de destino debe usar el acceso uniforme a nivel de bucket.
  • Las transferencias de carpetas administradas no admiten las opciones deleteObjectsUniqueInSink ni deleteObjectsFromSourceAfterTransfer.
  • No debe haber Condiciones de IAM en el bucket de destino o en su proyecto que use el tipo de recurso de bucket (storage.googleapis.com/Bucket) o el tipo de recurso de objeto (storage.googleapis.com/Object). Si algún bucket dentro de un proyecto tiene una condición de IAM que usa cualquiera de estos tipos de recursos, las carpetas administradas no se pueden transferir a ninguno de los buckets dentro de ese proyecto, incluso si se quita la condición más adelante.
  • No se admiten las transferencias controladas por eventos.
  • No se admiten las transferencias de manifiestos.
  • Cloud Logging no registra las operaciones de las carpetas administradas. Se admite el registro de objetos.

Permisos de IAM

La cuenta de servicio administrada por Google requiere los siguientes permisos de Google Cloud Identity and Access Management (IAM).

En el bucket de origen, haz lo siguiente:

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

En el bucket de destino, haz lo siguiente:

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

Además de los permisos estándar que requiere el Servicio de transferencia de almacenamiento:

Para otorgar los permisos necesarios de las carpetas administradas, crea una función personalizada que solo incluya los permisos necesarios y asígnala a la cuenta de servicio administrada por Google, ya sea a nivel de bucket (recomendado) o a nivel de proyecto. Consulta Consideraciones de seguridad para obtener información adicional.

Crea una transferencia de carpetas administrada

Para crear una transferencia que contenga una carpeta administrada, especifica managedFolderTransferEnabled: true en tu 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"
}

Consulta Cómo crear transferencias para obtener detalles sobre cómo crear una transferencia con la API de REST, o consulta la referencia de transferJobs.create.

Consideraciones de seguridad

Otorgar permisos de carpetas administradas a una cuenta de servicio administrada por Google permite que la cuenta modifique las políticas de IAM en las carpetas de destino o en todas las carpetas si la función se otorga a nivel de proyecto. Esto implica un riesgo de seguridad: un usuario con permisos de edición de trabajos podría aprovecharlo para otorgar privilegios a un actor malicioso. Para mitigar este riesgo, considera aislar las transferencias de carpetas administradas dentro de un proyecto dedicado de Google Cloud.

Soluciona problemas

Para obtener ayuda sobre cómo crear y administrar carpetas administradas, consulta la página Solución de problemas.