Transferir pastas gerenciadas do Cloud Storage

As pastas gerenciadas do Cloud Storage fornecem controle de acesso refinado para objetos nos buckets do Cloud Storage. As permissões podem ser definidas no nível da pasta dentro dos buckets que usam acesso universal no nível do bucket. Ao transferir objetos entre buckets do Cloud Storage com o Serviço de transferência do Cloud Storage, essas permissões de pasta gerenciada podem ser mantidas.

Limitações

As seguintes limitações se aplicam às transferências de pastas gerenciadas:

  • É necessário usar a API REST para criar a transferência.
  • O bucket de destino precisa usar acesso uniforme no nível do bucket.
  • As transferências de pastas gerenciadas não são compatíveis com as opções deleteObjectsUniqueInSink ou deleteObjectsFromSourceAfterTransfer.
  • Não pode haver Condições de IAM no bucket de destino ou no seu projeto que use o tipo de recurso bucket (storage.googleapis.com/Bucket) ou o tipo de recurso objeto (storage.googleapis.com/Object). Se algum bucket em um projeto tiver uma condição do IAM que use um desses tipos de recurso, as pastas gerenciadas não poderão ser transferidas para nenhum dos buckets do projeto, mesmo que a condição seja removida posteriormente.
  • As transferências orientadas a eventos não são compatíveis.
  • Não há suporte para transferências de manifestos.
  • As operações de pasta gerenciada não são registradas pelo Cloud Logging. A geração de registros de objetos é compatível.

Permissões do IAM

As permissões do Google Cloud Identity and Access Management (IAM) a seguir são exigidas pela conta de serviço gerenciado pelo Google.

No bucket de origem:

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

No bucket de destino:

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

Essas são as permissões padrão exigidas pelo Serviço de transferência do Cloud Storage:

Para conceder as permissões de pasta gerenciada necessárias, crie um papel personalizado apenas com as permissões necessárias e atribua-o à conta de serviço gerenciado pelo Google, no nível do bucket (recomendado) ou do projeto. Consulte as considerações sobre segurança para mais informações.

Criar uma transferência de pasta gerenciada

Para criar uma transferência contendo uma pasta gerenciada, especifique managedFolderTransferEnabled: true em 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"
}

Consulte Criar transferências para detalhes sobre como criar uma transferência usando a API REST ou consulte a referência transferJobs.create.

Considerações sobre segurança

A concessão de permissões de pasta gerenciada a uma conta serviço gerenciado pelo Google permite que a conta modifique políticas do IAM em pastas de destino ou em todas as pastas, se o papel for concedido no nível do projeto. Isso representa um risco à segurança: um usuário com permissões de edição de vaga pode explorar isso para conceder privilégios a um agente mal-intencionado. Para reduzir esse risco, considere isolar as transferências de pastas gerenciadas em um projeto dedicado do Google Cloud.

Solução de problemas

Para receber ajuda na criação e gerenciamento de pastas gerenciadas, consulte a página Solução de problemas.