Antes de criar uma transferência baseada em agentes, configure as permissões para as seguintes entidades:
A conta de serviço gerenciado pelo usuário ou do usuário que está sendo usada para criar a transferência. Essa é a conta com login no console do Google Cloud ou a conta especificada ao fazer a autenticação na CLI
gcloud
. A conta de usuário pode ser uma conta de usuário normal ou uma conta de serviço gerenciado pelo usuário.A conta serviço gerenciado pelo Google, também conhecida como 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 de agente de transferência que fornece permissões do Google Cloud para agentes de transferência. As contas de agente de transferência usam as credenciais do usuário que as instala ou as credenciais de uma conta de serviço gerenciado pelo usuário para fazer a autenticação.
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 | 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. |
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:
Crie sua transferência usando o console do Google Cloud. O console aplica automaticamente as permissões necessárias.
Use
gcloud transfer authorize --add-missing
. Consulte O método mais simples de conceder permissões.
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 | 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 |
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 | 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, 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:
- Administrador do objeto do Storage (
roles/storage.objectAdmin
)
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:
- Visualizador do objeto do Storage (
roles/storage.objectViewer
)
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:
- Administrador do objeto do Storage (
roles/storage.objectAdmin
)
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:
- Administrador do objeto do Storage (
roles/storage.objectAdmin
)
Ou crie um papel personalizado com as permissões específicas e conceda o papel personalizado.