As pastas gerenciadas do Cloud Storage oferecem controle de acesso refinado 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 pasta gerenciada podem ser mantidas.
Limitações
As seguintes limitações 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
deleteObjectsUniqueInSinkoudeleteObjectsFromSourceAfterTransfer. - Não pode haver condições do IAM no bucket de destino ou no projeto dele que usem o tipo de recurso bucket (
storage.googleapis.com/Bucket) ou objeto (storage.googleapis.com/Object). Se um bucket em um projeto tiver uma condição do IAM que use um desses tipos de recursos, as pastas gerenciadas não poderão ser transferidas para nenhum dos buckets desse projeto, mesmo que a condição seja removida depois. - As transferências orientadas por eventos não são compatíveis.
- As transferências de manifesto não são compatíveis.
Permissões do IAM
A conta serviço gerenciado pelo Google precisa das seguintes permissões do Google Cloud Identity and Access Management (IAM):
Tanto na origem quanto no 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 existir.
Não recomendamos definir permissões de pastas gerenciadas no nível do projeto. Consulte Considerações de segurança para mais informações.
No bucket de origem ou na pasta gerenciada:
storage.managedFolders.getIamPolicystorage.managedFolders.liststorage.managedFolders.get
No bucket ou pasta gerenciada de destino:
storage.managedFolders.setIamPolicystorage.managedFolders.liststorage.managedFolders.create
Além das permissões padrão exigidas pelo serviço de transferência do Cloud Storage, você precisa ter:
Para conceder as permissões necessárias de pastas gerenciadas, crie um papel personalizado com apenas as permissões necessárias.
Criar uma transferência de pasta gerenciada
Para criar uma transferência que contenha uma pasta gerenciada, especifique
managedFolderTransferEnabled: true no seu transferSpec. Você também 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 estiverem definidas na origem e no destino, a transferência vai falhar.
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
Ao conceder permissões de pasta gerenciada a uma conta de serviço gerenciado pelo Google, a conta pode modificar políticas do IAM em pastas de destino ou em todas as pastas se a função for concedida no nível do projeto. Isso representa um risco de segurança: um usuário com permissões de edição de jobs pode explorar essa situação para conceder privilégios a um agente malicioso. Para mitigar esse risco, isole 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.