Permissões de transferência baseadas em agente

Use o administrador de projetos do Google Cloud, um usuário com privilégios resourcemanager.projects.setIamPolicy, para conceder permissões ou papéis do gerenciamento de identidade e acesso (IAM) aos usuários e serviços adequados contas.

A conta de administrador do projeto do Google Cloud só é necessária para conceder permissões a usuários e contas de serviço. Não é necessário iniciar jobs de transferência.

Para mais informações sobre como conceder papéis do IAM, consulte Como conceder, alterar e revogar acesso a recursos.

Se você tiver interesse em criar papéis personalizados para o Serviço de transferência do Cloud Storage, consulte Noções básicas sobre papéis personalizados do IAM.

Contas de administrador

As contas de administrador do Serviço de transferência do Cloud Storage gerenciam agentes de transferência, definem limites de uso da largura de banda e excluem jobs de transferência.

Para configurar uma conta de administrador, atribua as seguintes permissões e papéis do IAM:

Papel / permissão Efeitos Notas
resourcemanager.projects.getIamPolicy Essa permissão é usada para confirmar que a conta de serviço gerenciada pelo Google tem as permissões necessárias para uma transferência. Para conceder essa permissão, conceda o papel predefinido Visualizador de papéis (roles/iam.roleViewer) ou crie um papel personalizado com esta permissão única e conceda o papel personalizado.
Administrador de transferências do Storage (roles/storagetransfer.admin) Permite ações administrativas no projeto de transferência, como configuração do projeto e monitoramento do agente. Para ver uma lista detalhada das permissões concedidas, consulte Papéis predefinidos do Serviço de transferência do Cloud Storage.

Contas de usuário

As contas de usuário do Serviço de transferência do Cloud Storage são usadas para criar e executar transferências. Essas contas normalmente não têm acesso para excluir jobs de transferência.

Uma conta de usuário pode ser um usuário do console do Google Cloud ou uma conta de serviço. Se você estiver usando uma conta de serviço, o método utilizado para transmitir as credenciais para o Serviço de transferência do Cloud Storage vai variar conforme a interface usada.

Para configurar uma conta de usuário, atribua as seguintes permissões e papéis à conta:

Papel / permissão Efeitos Notas
resourcemanager.projects.getIamPolicy Usado para confirmar que a conta de serviço gerenciada pelo Google tem as permissões necessárias do Pub/Sub para uma transferência. Para conceder essa permissão, conceda o papel predefinido Visualizador de papéis (roles/iam.roleViewer) ou crie um papel personalizado com esta permissão única e conceda o papel personalizado.
Usuário de transferência do Storage (roles/storagetransfer.user) Permite que o usuário crie, receba, atualize e liste transferências. Para ver uma lista detalhada das permissões concedidas, consulte Papéis predefinidos do Serviço de transferência do Cloud Storage.

Conta de serviço

O Serviço de transferência do Cloud Storage usa uma conta de serviço gerenciada pelo Google para mover seus dados. Essa conta de serviço é criada automaticamente na primeira vez que você cria um job de transferência, cria um pool de agentes, chama googleServiceAccounts.get ou acessa a página de criação de jobs no Console do Google Cloud.

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

Para permitir que a conta de serviço do Serviço de transferência do Cloud Storage acesse recursos necessários para concluir transferências, atribua os seguintes papéis ou permissões equivalentes à conta de serviço:

Papel / permissão Efeitos Notas
Criador de objetos do Storage (roles/storage.objectCreator) Permite que o Storage Transfer Service crie registros de transferência no bucket do Cloud Storage conectado a essa transferência. Conceda a todos os buckets do Cloud Storage usados em uma transferência. Se apropriado para sua situação, conceda o papel no nível do projeto ao projeto em que o Serviço de transferência do Cloud Storage está sendo executado.

Para ver uma lista detalhada das permissões que esses papéis concedem, consulte Papéis predefinidos do Cloud Storage.
Leitor de objetos do Storage (roles/storage.objectViewer) Permite que o Serviço de transferência do Cloud Storage determine se um arquivo já foi transferido para ou do Cloud Storage.
Serviço de transferência do Cloud Storage (roles/storagetransfer.serviceAgent) Permite que o Serviço de transferência do Cloud Storage crie e modifique tópicos do Pub/Sub automaticamente para se comunicar entre o Google Cloud com agentes de transferência. Aplique o papel no nível do projeto em que o Serviço de transferência do Cloud Storage está sendo executado.

Para ver uma lista detalhada das permissões concedidas por esse papel, consulte Permissões e papéis.
Leitor de bucket legado do Storage (roles/storage.legacyBucketReader) Permite que o Storage Transfer Service leia metadados do bucket do Cloud Storage.

Concede a cada bucket do Cloud Storage usado em uma transferência.

Os papéis legacy do Cloud Storage só podem ser concedidos no nível do bucket.

Transferir agentes

Os agentes de transferência do Cloud Storage podem ser executados com a conta do usuário ou com uma conta de serviço.

Para configurar uma conta de serviço ou de usuário de agente de transferência que executa os agentes de transferência, atribua o seguinte papel:

Papel / permissão Efeitos Notas
Serviço de transferência do Cloud Storage (roles/storagetransfer.transferAgent) Concede aos agentes de transferência as permissões do Storage Transfer Service e do Pub/Sub necessárias para concluir uma transferência. Conceda esse papel à conta de usuário ou de serviço que está sendo usada pelos agentes.

Para uma lista detalhada das permissões que este papel concede, consulte Controle de acesso com o IAM.

Permissões de origem e destino

Verifique também se a conta do agente tem as permissões corretas para acessar os dados de origem e gravar no destino.

Sistema de arquivos para o Cloud Storage

Se o destino da transferência for um bucket do Cloud Storage, o agente de transferência precisará das seguintes permissões no bucket de destino. Consulte Adicionar um principal a uma política no nível do bucket para ver instruções.

Permissão Descrição
storage.objects.create Permite que a conta de agente grave objetos do Cloud Storage durante a transferência.
storage.objects.get Permite que a conta do agente leia dados e metadados de objetos.
storage.objects.delete Obrigatório se a transferência estiver configurada para substituir ou excluir objetos no coletor. por exemplo, se overwriteObjectsAlreadyExistingInSink ou deleteObjectsUniqueInSink estiverem definidos na configuração transferOptions da sua transferência.

Para conceder essas permissões, conceda o papel a seguir:

Ou crie um papel personalizado com as permissões específicas e conceda o papel personalizado.

É necessário ter outras permissões para ativar uploads de várias partes.

Cloud Storage para o sistema de arquivos

Se a origem da transferência for um bucket do Cloud Storage, o agente de transferência precisará das seguintes permissões no bucket de origem.

Permissão Descrição
storage.objects.get Permite que a conta do agente leia dados e metadados de objetos.

Para conceder essa permissão, conceda o seguinte papel:

Ou crie um papel personalizado com a única permissão e conceda o papel personalizado.

Sistema de arquivos para sistema de arquivos

Se a transferência estiver entre dois sistemas de arquivos, o agente de transferência precisará das seguintes permissões no bucket intermediário.

Permissão Descrição
storage.objects.create Permite que a conta de agente grave objetos do Cloud Storage durante a transferência.
storage.objects.get Permite que a conta do agente leia dados e metadados de objetos.
storage.objects.delete Obrigatório se a transferência estiver configurada para excluir objetos no bucket intermediário após a conclusão da transferência.

Para conceder essas permissões, conceda o papel a seguir:

Ou crie um papel personalizado com as permissões específicas e conceda o papel personalizado.

É necessário ter outras permissões para ativar uploads de várias partes.

Armazenamento compatível com S3 para o Cloud Storage

A conta do agente de transferência precisa das permissões a seguir no bucket de destino. Consulte Adicionar um principal a uma política no nível do bucket para ver instruções.

Permissão Descrição
storage.objects.create Permite que a conta de agente grave objetos do Cloud Storage durante a transferência.
storage.objects.get Permite que a conta do agente leia dados e metadados de objetos.
storage.objects.delete Obrigatório se a transferência estiver configurada para substituir ou excluir objetos no coletor. por exemplo, se overwriteObjectsAlreadyExistingInSink ou deleteObjectsUniqueInSink estiverem definidos na configuração transferOptions da sua transferência.

Para conceder essas permissões, conceda o papel a seguir:

Ou crie um papel personalizado com as permissões específicas e conceda o papel personalizado.

Uploads de várias partes

Para ativar uploads em várias partes do sistema de arquivos para transferências do Cloud Storage ou transferências entre sistemas de arquivos, também conceda as seguintes permissões ao agente.

  • Para transferências no Cloud Storage, atribua as permissões ao bucket de destino.
  • Para transferências entre sistemas de arquivos, atribua as permissões ao bucket intermediário.

Os uploads de várias partes podem acelerar transferências que incluem arquivos grandes e são suportados apenas em buckets que usam a classe de armazenamento padrão.

Nome da permissão de upload de várias partes Descrição
storage.multipartUploads.create Faça upload de objetos de várias partes.
storage.multipartUploads.abort Cancele sessões de upload de várias partes.
storage.multipartUploads.listParts Liste as partes do objeto enviado em uma sessão de upload de várias partes.
storage.multipartUploads.list Listar as sessões de upload de várias partes em um bucket.

Para conceder essas permissões, conceda o papel a seguir:

Ou crie um papel personalizado com as permissões específicas e conceda o papel personalizado.