O Cloud Storage usa uma
conta de serviço gerida pela Google,
conhecida como um agente de serviço,
para mover dados para um contentor do Cloud Storage. Este agente de serviço é criado na primeira vez que liga para googleServiceAccounts.get
.
O contentor de destino 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 destino:
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 Google Cloud 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 destino.
Pode ignorar os passos nesta página. Se necessário, configure o acesso à sua origem, e, em seguida, crie uma transferência.
Autorizações necessárias
O agente do serviço tem de ter as seguintes autorizações para o contentor de destino:
Autorização | Descrição |
---|---|
storage.buckets.get |
Permite que a conta de serviço obtenha a localização do contentor. |
storage.objects.get |
Permite que a conta de serviço veja objetos e os respetivos metadados, excluindo as ACLs. Obrigatório se a sua transferência estiver configurada para [substituir objetos](/storage-transfer/docs/reference/rest/v1/TransferOptions#OverwriteWhen) no destino quando forem diferentes ou nunca. Não é necessário se a sua definição de transferência for para substituir sempre. |
storage.objects.create |
Permite que a conta de serviço adicione objetos ao contentor. |
storage.objects.delete |
Permite que a conta de serviço elimine objetos no contentor.
O elemento é obrigatório se definir Tenha em atenção que, se o contentor de destino tiver a
criação de versões de objetos
ativada, nem |
storage.objects.list |
Permite que a conta de serviço liste objetos no contentor. Obrigatório se
definir overwriteObjectsAlreadyExistingInSink como
false ou deleteObjectsUniqueInSink como
true . |
A seguinte função predefinida concede as autorizações necessárias:
- Storage Legacy Bucket Writer (
roles/storage.legacyBucketWriter
)
Além disso, para transferências configuradas para substituir objetos no destino quando forem diferentes ou nunca, atribua a seguinte função predefinida ao agente do serviço:
- Visualizador de objetos de armazenamento (
roles/storage.objectViewer
)
Para ver uma lista completa das funções do Cloud Storage e das autorizações que contêm, consulte Funções de IAM.
Conceda as autorizações necessárias
Para conceder as funções Gravador de contentores antigos do Storage e Visualizador de objetos do Storage ao agente de serviço, siga estes passos.
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 destino.
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 Legacy Bucket Writer
no menu pendente Selecionar uma função.Clique em Guardar.
Repita o processo para adicionar a função
Storage Object Viewer
se a transferência estiver configurada para substituir objetos no destino quando forem diferentes ou nunca.
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.legacyBucketWriter
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.
Para conceder a função Storage Object Viewer
, use o mesmo comando, mas
substitua roles/storage.legacyBucketWriter
por
roles/storage.objectViewer
:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:YOUR_AGENT_EMAIL --role=roles/storage.objectViewer
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.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] }, { "role": "roles/storage.objectViewer", "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
.
Para mais informações sobre a atribuição de funções de IAM a recursos do Cloud Storage, consulte a documentação da IAM do Cloud Storage.