Transferir pastas gerenciadas do Cloud Storage

As pastas gerenciadas do Cloud Storage oferecem controle de acesso detalhado a objetos em buckets do Cloud Storage. As permissões podem ser definidas no nível da pasta em buckets que usam o 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 pastas gerenciadas podem ser mantidas.

Limitações

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

  • O bucket de destino precisa usar o 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 do IAM no bucket de destino ou no projeto que usem o tipo de recurso bucket (storage.googleapis.com/Bucket) ou 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 nesse projeto, mesmo que a condição seja removida mais tarde.
  • Não há suporte para transferências orientadas por eventos.
  • Não há suporte para transferências de manifesto.

Permissões do IAM

As seguintes permissões do Identity and Access Management (IAM) do Google Cloud são necessárias para a conta serviço gerenciado pelo Google.

Para a origem e o destino, as permissões podem ser definidas no nível do bucket ou na pasta gerenciada. Para definir permissões em uma pasta gerenciada de destino, ela precisa já existir.

Não recomendamos definir permissões de pastas gerenciadas no nível do projeto. Consulte as considerações de segurança para mais informações.

No bucket de origem ou na pasta gerenciada:

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

No bucket de destino ou na pasta gerenciada:

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

Além das permissões padrão exigidas pelo serviço de transferência do Cloud Storage:

Para conceder as permissões necessárias para a pasta gerenciada, crie um papel personalizado com apenas as permissões necessárias.

Criar uma transferência de pasta gerenciada

Para criar uma transferência com uma pasta gerenciada, especifique managedFolderTransferEnabled: true no transferSpec. Você pode especificar um valor path para transferir apenas uma pasta gerenciada específica.

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

Se as permissões de transferência gerenciada corretas não forem definidas na origem e no destino, a transferência vai falhar.

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

Considerações sobre segurança

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

Cloud Logging

As ações de pastas gerenciadas são registradas pelo Cloud Logging. Consulte Cloud Logging para o Serviço de transferência do Cloud Storage para mais detalhes.

Solução de problemas

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