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 liga para 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.getIamPolicystorage.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 Adicional 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 ViewerouStorage Object Creatorno menu pendente Selecionar uma função.Clique em Adicionar outra função.
Selecione
Storage Legacy Bucket WriterouStorage 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 o artigo 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.