Permissões de IAM para métodos do Storage Transfer Service

A tabela a seguir lista as permissões mínimas necessárias para executar cada método do serviço de transferência do Cloud Storage.

Recurso Método Permissões necessárias
googleServiceAccount get storagetransfer.projects.getServiceAccount
transferJobs create Ambas as permissões são necessárias:

  • storagetransfer.jobs.create
  • storagetransfer.projects.getServiceAccount

transferjobs get storagetransfer.jobs.get
transferjobs list storagetransfer.jobs.list
transferjobs patch Para atualizações de exclusão: storagetransfer.jobs.delete
Para atualizações de não exclusão: storagetransfer.jobs.update
transferoperations cancel storagetransfer.operations.cancel
transferOperations get storagetransfer.operations.get
transferOperations list storagetransfer.operations.list
transferOperations pause storagetransfer.operations.pause
transferOperations resume storagetransfer.operations.resume

Permissões de origem

Cloud Storage

O serviço de transferência do Storage usa uma conta de serviço gerenciada pelo Google para mover dados de um bucket de origem do Cloud Storage, que é criado na primeira vez que você chama googleServiceAccounts.get.

O formato da conta de serviço geralmente é project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Para encontrar o formato da sua conta de serviço, use a chamada de API googleServiceAccounts.get.

A conta de serviço precisa ter as seguintes permissões para o bucket de origem:

Permissão Descrição Uso
storage.buckets.get Permite a localização do bucket pela conta de serviço. Sempre obrigatório.
storage.objects.list Permite a listagem dos objetos no bucket pela conta de serviço. Sempre obrigatório.
storage.objects.get Permite a leitura dos objetos no bucket pela conta de serviço. Sempre obrigatório.
storage.objects.delete Permite a exclusão de objetos no bucket pela conta de serviço. Obrigatório se você definir deleteObjectsFromSourceAfterTransfer como true.

Os papéis roles/storage.objectViewer e roles/storage.legacyBucketReader juntos contêm as permissões que são sempre necessárias. O papel roles/storage.legacyBucketWriter contém as permissões storage.objects.delete. É necessário atribuir os papéis que você quer à conta de serviço usada para executar a transferência.

Para uma lista completa dos papéis do Cloud Storage e das respectivas permissões, consulte papéis do IAM.

Amazon S3

Para mover dados de um bucket do Amazon S3, é preciso que você tenha uma conta de usuário de Identity and Access Management da AWS com determinadas permissões para o bucket:

Permissão Descrição Uso
s3:ListBucket Permite a listagem de objetos no bucket pelo Storage Transfer Service. Sempre obrigatório.
s3:GetObject Permite a leitura de objetos no bucket pelo Storage Transfer Service. Sempre obrigatório.
s3:GetBucketLocation Permite a localização do bucket pelo Storage Transfer Service. Sempre obrigatório.
s3:DeleteObject Permite a exclusão de objetos no bucket pelo Storage Transfer Service. Obrigatório se você definir deleteObjectsFromSourceAfterTransfer como true.

Armazenamento de blobs do Microsoft Azure

Para mover dados de uma conta ou contêiner do Microsoft Azure Storage para o Cloud Storage, é preciso ter uma conta de usuário do Microsoft Azure Storage com as seguintes permissões aplicadas à conta:

Permissão Descrição Uso
List Blobs Permite que o Serviço de transferência do Cloud Storage liste blobs em um contêiner. Sempre obrigatório.
Get Blob Permite que o Storage Transfer Service receba o conteúdo, os metadados definidos pelo sistema e os metadados definidos pelo usuário de um blob. Sempre obrigatório.
Get Blob Properties Permite que o Storage Transfer Service receba metadados definidos pelo sistema e pelo usuário de um blob. Sempre obrigatório.
Get Account Information Permite que o serviço de transferência do Cloud Storage determine o tipo de conta de armazenamento em uso.

Obrigatório se você estiver transferindo do Azure Data Lake Storage (ADLS) da Geração 2.

Delete Blob Permite que o Storage Transfer Service marque um blob para exclusão. Obrigatório se você definir deleteObjectsFromSourceAfterTransfer como true. .

Lista de URLs

Se a origem de dados for uma lista de URLs, verifique se os objetos listados estão acessíveis ao público.

Permissões de coletor

O serviço de transferência do Cloud Storage usa uma conta de serviço gerenciada pelo Google para mover dados de um bucket de origem do Cloud Storage, que é criado na primeira vez que você chama googleServiceAccounts.get.

O formato da conta de serviço geralmente é project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Para encontrar o formato da sua conta de serviço, use a chamada de API googleServiceAccounts.get.

A conta de serviço precisa ter as seguintes permissões para o bucket de destino:

Permissão Descrição Uso
storage.buckets.get Permite a localização do bucket pela conta de serviço. Sempre obrigatório.
storage.objects.create Permite a adição de objetos no bucket pela conta de serviço. Sempre obrigatório.
storage.objects.delete Permite a exclusão de objetos no bucket pela conta de serviço. Obrigatório se você definir overwriteObjectsAlreadyExistingInSink ou deleteObjectsUniqueInSink como true.
storage.objects.list Permite a listagem dos objetos no bucket pela conta de serviço. Obrigatório se você definir overwriteObjectsAlreadyExistingInSink como false ou deleteObjectsUniqueInSink como true.

Todas essas permissões estão contidas no papel roles/storage.legacyBucketWriter, que pode ser atribuído à conta de serviço. Para uma lista completa dos papéis do Cloud Storage e das respectivas permissões, consulte Papéis do IAM.

Permissões do Pub/Sub

Se você planeja usar o Pub/Sub para transferências, conceda à conta de serviço o papel do IAM roles/pubsub.publisher para o respectivo tópico do Pub/Sub.