O Storage Transfer Service usa uma conta de serviço gerida pela Google, conhecida como agente de serviço, para mover dados de um contentor de origem do Cloud Storage. Este agente de serviço é criado na primeira vez que chama o número googleServiceAccounts.get
.
O contentor de origem não tem de pertencer ao mesmo projeto que o agente do serviço. Os passos são os mesmos, independentemente do projeto em que o contentor se encontra.
Autorizações do utilizador
Para conceder as autorizações necessárias ao agente de serviço, tem de ter as autorizações relevantes no contentor de origem:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
A função Proprietário de contentores antigos do Storage (roles/storage.legacyBucketOwner
) ou a função Administrador do Storage (roles/storage.admin
) concedem as autorizações necessárias.
Concessão automática de autorizações na Google Cloud consola
Se estiver a usar a consola para criar a transferência e tiver as autorizações indicadas em Autorizações do utilizador, o agente de serviço recebe automaticamente as autorizações necessárias no seu contentor de origem. Google Cloud
Pode ignorar os passos desta página e aceder diretamente à criação de uma transferência.
Autorizações necessárias
O agente de serviço tem de ter as seguintes autorizações para o contentor de origem:
Autorização | Descrição |
---|---|
storage.buckets.get |
Permite que o agente de serviço obtenha a localização do contentor. |
storage.objects.list |
Permite que o agente de serviço liste objetos no contentor. |
storage.objects.get |
Permite que o agente de serviço leia objetos no contentor. |
storage.objects.create |
Permite que o agente de serviço crie objetos no contentor. Obrigatório se a transferência for para um sistema de ficheiros. O serviço de transferência de armazenamento cria e
preenche duas pastas no contentor de origem: |
storage.objects.delete |
Permite que o agente de serviço elimine objetos no contentor. Obrigatório
se definir deleteObjectsFromSourceAfterTransfer como
true .
|
As seguintes funções predefinidas concedem em conjunto as autorizações necessárias:
- Uma das seguintes opções:
- Storage Object Viewer (
roles/storage.objectViewer
) se a transferência for para outro contentor do Cloud Storage. - Storage Object Creator (
roles/storage.objectCreator
) se a transferência for para um sistema de ficheiros.
- Storage Object Viewer (
- Além de uma das seguintes opções:
- Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter
) se for necessária a autorização para eliminar objetos. - Leitor de buckets antigos do Storage (
roles/storage.legacyBucketReader
) se não for necessária a autorização de eliminação de objetos.
- Storage Legacy Bucket Writer (
Qualquer função do Cloud Storage marcada como função legacy
só pode ser concedida ao nível do contentor.
Para ver uma lista completa das funções do Cloud Storage e das autorizações que contêm, consulte Funções de IAM.
Para LCAs de objetos quando ACL_PRESERVE está definido, a função Proprietário de objetos antigos do Storage (roles/storage.legacyObjectOwner
) também é necessária para o objeto de origem. Para ACL_PRESERVE, adicione manualmente a conta de serviço para ter a função Proprietário de objetos antigos do Storage para conceder autorização storage.objects.getIamPolicy
ao objeto de origem.
Conceda as autorizações necessárias
Para conceder as autorizações necessárias ao agente de serviço, siga os passos abaixo.
Encontre o email do agente de serviço
Aceda à página de referência
googleServiceAccounts.get
.É aberto um painel interativo com o título Experimente este método.
No painel, em Parâmetros do pedido, introduza o seu ID do projeto. O projeto que especificar aqui tem de ser o projeto que está a usar para gerir o serviço de transferência de armazenamento, que pode ser diferente do projeto do contentor de origem.
Clique em Executar.
O email do agente de serviço é devolvido como o valor de
accountEmail
. Copiar este valor.O email do agente de serviço usa o formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Adicione o agente do serviço a uma política ao nível do contentor
Consola
- Na Google Cloud consola, aceda à página Recipientes do Cloud Storage.
Clique no menu Mais opções do contentor (
) associado ao contentor ao qual quer conceder uma função a um principal.Escolha Editar acesso.
Clique no botão + Adicionar principal.
No campo Novos membros, introduza o email da conta do seu agente de serviço.
Selecione
Storage Object Viewer
ouStorage Object Creator
no menu pendente Selecionar uma função.Clique em Adicionar outra função.
Selecione
Storage Legacy Bucket Writer
ouStorage Legacy Bucket Reader
.Clique em Guardar.
gcloud
Use o comando gcloud storage buckets add-iam-policy-binding
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Onde:
BUCKET_NAME
é o nome do contentor ao qual está a conceder acesso ao principal. Por exemplo,my-bucket
.YOUR_AGENT_EMAIL
é o email da conta de agente que copiou em Encontre o email do agente de serviço.
Exemplos de código
C++
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API C++ do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
C#
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API C# do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Go
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Go do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Java
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Java do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Node.js
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Node.js do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
PHP
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API PHP do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Python
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Python do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Ruby
Para saber como instalar e usar a biblioteca cliente do Cloud Storage, consulte as bibliotecas cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Ruby do Cloud Storage.
Para se autenticar no Cloud Storage, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
JSON
Ter a CLI gcloud instalada e inicializada, o que lhe permite gerar um token de acesso para o cabeçalho
Authorization
.Crie um ficheiro JSON que contenha as seguintes informações:
{ "bindings":[ { "role": "roles/storage.objectViewer", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.legacyBucketReader", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Onde:
Use
cURL
para chamar a API JSON com um pedidoPUT setIamPolicy
:curl -X PUT --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/iam"
Onde:
JSON_FILE_NAME
é o caminho do ficheiro que criou no passo 2.OAUTH2_TOKEN
é o token de acesso que gerou no Passo 1.BUCKET_NAME
é o nome do contentor ao qual quer conceder acesso ao principal. Por exemplo,my-bucket
.