O Serviço de transferência do Cloud Storage pode usar um bucket de destino (coletor) do Cloud Storage em dois tipos de transferência:
Transferências sem agente: transferências entre nuvens, como AWS S3, Armazenamento de Blobs do Azure ou Cloud Storage para Cloud Storage. As permissões são concedidas ao agente de serviço do Serviço de transferência do Cloud Storage.
Transferências orientadas por agentes: transferências de sistemas de arquivos, HDFS ou armazenamento compatível com S3 para o Cloud Storage que usam agentes de transferência e pools de agentes. As permissões precisam ser concedidas ao agente de serviço e à conta do agente de transferência.
Como conceder permissões automaticamente no console do Google Cloud
Se você estiver usando o console do Google Cloud para criar uma transferência sem agente e tiver as permissões de usuário necessárias, o agente de serviço receberá automaticamente as permissões necessárias no bucket de destino.
É possível pular as etapas nesta página. Se necessário, configure o acesso à origem e crie uma transferência.
Pré-requisitos
Permissões da conta de usuário: para conceder os papéis do IAM necessários listados nesta página, sua conta de usuário (ou conta serviço gerenciado pelo usuário) precisa ter permissões para modificar as políticas do IAM no bucket de destino e no projeto do pool de agentes. Para detalhes sobre os requisitos da conta de usuário, consulte Permissões da conta de usuário.
Permissões do projeto de transferência baseada em agente: para transferências baseadas em agente, verifique se você configurou os papéis necessários para envolvidos no projeto para o agente de serviço e a conta do agente de transferência. Consulte Permissões para envolvidos no projeto baseadas em agente.
Encontre o e-mail do agente de serviço
O agente de serviço é criado
automaticamente quando você cria um job de transferência pela primeira vez, executa comandos de configuração do gcloud transfer,
acessa a página Transferência do Cloud Storage no
console doGoogle Cloud ou chama
googleServiceAccounts.get.
Para receber o e-mail do agente de serviço, que é usado para identificá-lo nos comandos do Serviço de transferência do Cloud Storage:
- Acesse a página de referência de
googleServiceAccounts.get. Você verá um painel interativo com o título Testar este método. - No painel, em Parâmetros de solicitação, insira o ID do projeto.
- Clique em Executar.
Copie o valor de accountEmail. Ele usa o formato:
project-PROJECT_NUMBER@storage-transfer-service..
Conceder as permissões necessárias
Selecione o tipo de transferência para ver as etapas de concessão de acesso.
Transferência sem agente
Os papéis predefinidos a seguir concedem as permissões necessárias no bucket de destino ao agente de serviço:
- Leitor de bucket legado do Storage (
roles/storage.legacyBucketReader) - Usuário de objetos do Storage (
roles/storage.objectUser) ou Administrador de objetos do Storage (roles/storage.objectAdmin) se as ACLs de objeto (ACL_PRESERVE) forem preservadas.
Adicione o agente de serviço à política do IAM do bucket de destino:
Console
- No console do Google Cloud , acesse a página Buckets do Cloud Storage.
- Clique no menu flutuante do bucket () para o bucket de destino.
- Escolha Editar acesso.
- Clique em + Adicionar principal.
- Em Novos participantes, insira o e-mail do agente de serviço.
- Selecione
Storage Legacy Bucket Readerno menu suspenso Selecionar um papel. - Clique em Adicionar outro papel e selecione
Storage Object UserouStorage Object Adminse as ACLs de objeto forem preservadas. - Clique em Salvar.
gcloud
Execute os comandos gcloud storage a seguir:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Substitua:
- BUCKET_NAME: o nome do bucket de destino.
- SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
- OBJECT_ROLE: especifique
objectUserpor padrão ouobjectAdminse estiver preservando as ACLs de objeto (ACL_PRESERVE).
API REST
Gere um token de acesso para autenticar sua solicitação. Se você estiver usando a CLI
gcloud, execute:gcloud auth print-access-token
Recupere a política de IAM do bucket atual (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), anexe as seguintes vinculações à matrizbindingse salve a política mesclada comosink_policy.json:{ "bindings": [ { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Substitua:
- SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
- OBJECT_ROLE: especifique
objectUserpor padrão ouobjectAdminse estiver preservando as ACLs de objeto (ACL_PRESERVE).
Envie uma solicitação
PUTusandocurl:curl -X PUT --data-binary @sink_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
Substitua:
- OAUTH2_TOKEN: o token de acesso do OAuth 2.0 gerado na etapa 1.
- BUCKET_NAME: o nome do bucket de destino.
Transferência baseada em agente
Os papéis predefinidos a seguir concedem ao agente de serviço o acesso necessário ao bucket de destino:
- Criador de objetos do Storage (
roles/storage.objectCreator) - Visualizador do objeto do Storage (
roles/storage.objectViewer) - Leitor de bucket legado do Storage (
roles/storage.legacyBucketReader)
O papel a seguir concede o acesso necessário no bucket de destino à conta do agente de transferência:
- Usuário de objetos do Storage (
roles/storage.objectUser)
Conceda esses papéis no bucket de destino.
Console
- No console do Google Cloud , acesse a página Buckets do Cloud Storage.
- Clique no menu Estouro do bucket () do bucket de destino e selecione Acesso de edição.
- Clique em + Adicionar principal.
- Em Novos participantes, insira o e-mail do agente de serviço.
- Selecione
Storage Object Creator,Storage Object ViewereStorage Legacy Bucket Readerno menu suspenso Selecionar um papel. - Clique em + Adicionar principal novamente.
- Insira o e-mail da sua conta de agente de transferência. Essa é a conta de usuário ou de serviço usada ao instalar agentes de transferência. Por exemplo,
my-agent-sa@PROJECT_ID.ouuser@example.com. - Selecione
Storage Object Userno menu suspenso Selecionar um papel. - Clique em Salvar.
gcloud
Conceda papéis de geração de registros e de visualizador ao agente de serviço:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderConceda papéis de gravação e gerenciamento à conta do agente de transferência:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserSubstitua:
- BUCKET_NAME: o nome do bucket de destino.
- SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
- serviceAccount_OR_user: especifique
serviceAccountse a conta do agente de transferência for uma conta de serviço ouuserse os agentes tiverem sido instalados com uma conta de usuário. - TRANSFER_AGENT_ACCOUNT: o e-mail da conta que
instalou os agentes de transferência. Por exemplo,
my-agent-sa@PROJECT_ID.ouuser@example.com.
API REST
Gere um token de acesso para autenticar sua solicitação. Se você estiver usando a CLI
gcloud, execute:gcloud auth print-access-token
Recupere a política de IAM do bucket atual (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), anexe as seguintes vinculações à matrizbindingse salve a política mesclada comoagent_sink_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Substitua:
- SERVICE_AGENT_EMAIL: o e-mail do agente de serviço.
- serviceAccount_OR_user: especifique
serviceAccountse a conta do agente de transferência for uma conta de serviço ouuserse os agentes tiverem sido instalados com uma conta de usuário. - TRANSFER_AGENT_ACCOUNT: o e-mail da conta que
instalou os agentes de transferência. Por exemplo,
my-agent-sa@PROJECT_ID.ouuser@example.com.
Atualize a política do bucket usando
curl:curl -X PUT --data-binary @agent_sink_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"Substitua:
- OAUTH2_TOKEN: o token de acesso do OAuth 2.0 gerado na etapa 1.
- BUCKET_NAME: o nome do bucket de destino.
Referência de permissões granulares
Selecione o tipo de transferência para ver os papéis e as permissões necessários.
Transferência sem agente
Para transferências sem agente, as permissões precisam ser concedidas ao agente de serviço do Serviço de transferência do Cloud Storage:
| Permissão | Descrição |
|---|---|
storage.buckets.get |
Permite que o agente de serviço inspecione os metadados e o local do bucket. |
storage.objects.create |
Permite que o agente de serviço grave objetos transferidos no bucket de destino. |
storage.objects.get |
Permite visualizar objetos e metadados atuais. Obrigatório se a transferência estiver configurada para substituir objetos no coletor quando forem diferentes ou nunca. |
storage.objects.list |
Permite listar objetos no bucket de destino. Obrigatório se você estiver verificando se os objetos já existem no coletor. |
storage.objects.delete |
Permite excluir objetos no bucket de destino. Obrigatório se as opções de substituição ou exclusão de objetos exclusivos estiverem ativadas. |
storage.objects.setIamPolicy |
Permite definir ACLs de objeto no bucket de destino. Obrigatório se a preservação de ACL de objeto (ACL_PRESERVE) estiver ativada. |
storage.folders.createstorage.folders.get |
Permite criar e ler pastas. Obrigatório ao transferir para um bucket de destino com o namespace hierárquico ativado. |
Transferência baseada em agente
Para transferências orientadas por agente para um destino do Cloud Storage, as permissões são divididas entre dois principais:
Agente de serviço: requer permissões para gravar registros de transferência e verificar a existência de objetos no bucket de destino.
Conta de agente de transferência: a conta de serviço ou de usuário que executa os agentes de transferência que gravam arquivos no Cloud Storage.
Permissões do agente de serviço
| Permissão | Descrição |
|---|---|
storage.buckets.get |
Permite que o agente de serviço inspecione os metadados e o local do bucket. |
storage.objects.create |
Permite criar registros de transferência no bucket. |
storage.objects.get |
Permite verificar se os objetos já foram transferidos. |
Permissões da conta de agente de transferência
| Permissão | Descrição |
|---|---|
storage.objects.create |
Permite que os agentes gravem objetos no bucket de destino durante a transferência. |
storage.objects.get |
Permite que os agentes leiam dados e metadados de objetos no bucket de destino. |
storage.objects.list |
Permite que os agentes listem objetos no bucket de destino. |
storage.objects.delete |
Obrigatório se a transferência estiver configurada para substituir ou excluir objetos no coletor. |
storage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listPartsstorage.multipartUploads.list |
Permite que os agentes realizem uploads de várias partes para arquivos grandes. Incluído automaticamente no roles/storage.objectUser. |
storage.folders.createstorage.folders.get |
Permite que os agentes criem e leiam pastas ao transferir para um bucket de destino com o namespace hierárquico ativado. |
A seguir
- Saiba como configurar o acesso a uma origem.
- Saiba como criar transferências.
- Consulte a Referência de papéis e permissões.