Permissões de transferência baseadas em agente

Antes de criar uma transferência baseada em agente, configure permissões para as entidades a seguir:

  • A conta de serviço gerenciado pelo usuário ou pelo usuário que está sendo usada para criar a transferência. Essa é a conta conectada ao console do Google Cloud ou a conta especificada ao autenticar a CLI gcloud. A conta de usuário pode ser uma conta normal ou uma conta de serviço gerenciado pelo usuário.

  • A conta serviço gerenciado pelo Google, também conhecida como o agente de serviço, usada pelo Serviço de transferência do Cloud Storage. Essa conta geralmente é identificada pelo endereço de e-mail, que usa o formato project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

  • A conta do agente de transferência, que fornece permissões do Google Cloud para eles. Para fazer a autenticação, as contas do agente de transferência usam as credenciais do usuário que as instala ou de uma conta de serviço gerenciado pelo usuário.

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

O método mais simples de conceder permissões

A CLI gcloud pode ser usada para conceder as permissões necessárias ao usuário/à conta de serviço gerenciada pelo usuário e à conta de serviço gerenciada pelo Google. Com essas permissões, o usuário pode criar, editar e excluir jobs de transferência e definir ou modificar limites de largura de banda.

Se essas permissões forem muito amplas para as políticas da sua organização, consulte as seções posteriores deste documento para ver as permissões mínimas exigidas pelo Serviço de transferência do Cloud Storage.

Para inspecionar as permissões atuais e imprimir os papéis ausentes, execute o seguinte comando:

gcloud transfer authorize

Para aplicar esses papéis automaticamente, use a sinalização --add-missing:

gcloud transfer authorize --add-missing

Para conceder permissões a uma conta de serviço gerenciada pelo usuário, transmita o arquivo de chave da conta de serviço:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

Saiba como criar uma conta de serviço em Criar e gerenciar contas de serviço.

O comando concede as permissões a seguir.

  • Para o usuário/a conta de serviço gerenciada pelo usuário:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Para a conta de serviço gerenciada pelo Google:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Saiba como instalar a CLI gcloud no Guia de início rápido do gcloud.

Permissões do usuário ou da conta de serviço gerenciada pelo usuário

Veja nesta seção os papéis necessários para as contas que gerenciam e executam transferências. Os requisitos da sua organização vão definir os papéis exatos para cada perfil. Esta seção pressupõe que você vai criar um administrador e um usuário.

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 Observações
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 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 Observações
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 Cloud Storage (roles/storagetransfer.user) Permite que o usuário crie, receba, atualize e liste transferências. Para uma lista detalhada das permissões concedidas, consulte Papéis predefinidos do Serviço de transferência do Cloud Storage.

Permissões da conta de serviço gerenciada pelo Google

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, chama googleServiceAccounts.get ou visita a página de criação de job no console do Google Cloud.

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

Atribuir papéis automaticamente

Há duas maneiras de atribuir automaticamente os papéis corretos à conta de serviço gerenciada pelo Google:

Atribuir papéis manualmente

Para permitir que a conta de serviço gerenciado pelo Google acesse os recursos necessários para concluir as transferências, atribua os seguintes papéis ou permissões equivalentes à conta de serviço.

Papel / permissão Efeitos Observações
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.
Agente do 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.

Consulte Conceder as permissões necessárias para ver as instruções.

Transferir permissões da conta de agente

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 Observações
Agente 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, armazenamento compatível com S3 ou HDFS 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.list Permite que a conta de agente liste objetos no bucket do Cloud Storage.
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.create Permite que a conta do agente grave registros de transferência e metadados relacionados à transferência no bucket de origem do Cloud Storage.
storage.objects.get Permite que a conta do agente leia dados e metadados de objetos.
storage.objects.list Permite que a conta de agente liste objetos no bucket do Cloud Storage.
storage.objects.delete Obrigatório se a transferência estiver configurada para excluir objetos da origem. Consulte deleteObjectsFromSourceAfterTransfer.

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.list Permite que a conta de agente liste objetos no bucket do Cloud Storage.
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.

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.
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.