O Cloud Storage usa uma
conta de serviço gerenciada pelo Google,
conhecida como agente de serviço,
para mover dados para um bucket do Cloud Storage. Essa conta de serviço
é criada na primeira vez que você chama
googleServiceAccounts.get
.
O bucket de destino não precisa pertencer ao mesmo projeto que o agente de serviço. As etapas são as mesmas, independentemente do projeto em que o bucket está.
Permissões do usuário
Para conceder as permissões necessárias ao agente de serviço, você precisa ter as permissões relevantes no bucket de destino:
storage.buckets.getIamPolicy
storage.buckets.setIamPolicy
Os papéis Proprietário do bucket legado do Storage (roles/storage.legacyBucketOwner
) ou
Administrador do Storage (roles/storage.admin
) fornecem as permissões
necessárias.
Como conceder permissões automaticamente no Console do Google Cloud
Se você estiver usando o Console do Google Cloud para criar sua transferência e tiver as permissões listadas em Permissões do usuário, o agente de serviço receberá automaticamente as permissões necessárias na sua bucket de destino.
É possível pular as etapas nesta página. Se necessário, configure o acesso à origem e crie uma transferência.
Permissões necessárias
A conta de serviço precisa ter as seguintes permissões para o bucket de destino:
Permissão | Descrição |
---|---|
storage.buckets.get |
Permite a localização do bucket pela conta de serviço. |
storage.objects.create |
Permite a adição de objetos no bucket pela conta de serviço. |
storage.objects.delete |
Permite a exclusão de objetos no bucket pela conta de serviço.
Obrigatório se você definir Observe que, se o controle de versões de objetos estiver ativado no bucket de destino, |
storage.objects.list |
Permite a listagem dos objetos no bucket pela conta de serviço. Obrigatório se você definir overwriteObjectsAlreadyExistingInSink como false ou deleteObjectsUniqueInSink como true . |
O papel predefinido a seguir concede as permissões necessárias:
- Gravador de bucket legado do Storage (
roles/storage.legacyBucketWriter
)
Qualquer papel do Cloud Storage marcado como um papel legacy
só pode ser concedido no nível do bucket.
Para uma lista completa dos papéis do Cloud Storage e das respectivas permissões, consulte papéis do IAM.
Conceder as permissões necessárias
Para conceder o papel Gravador de bucket legado do Storage ao agente de serviço, siga as etapas abaixo.
Encontre o e-mail do agente de serviço
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. O projeto especificado aqui precisa ser o projeto que você está usando para gerenciar o Serviço de transferência do Cloud Storage, que pode ser diferente do projeto do bucket de destino.
Clique em Executar.
O e-mail do agente de serviço é retornado como o valor de
accountEmail
. Copie esse valor.O e-mail do agente de serviço tem o formato
project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com
.
Adicionar o agente de serviço a uma política no nível do bucket
Console
- No Console do Google Cloud, acesse a página Buckets do Cloud Storage.
Clique no menu flutuante bucket (
) associado ao bucket onde você quer conceder a um membro um papel.Escolha Editar acesso.
Clique no botão + Adicionar principal.
No campo Novos participantes, insira o e-mail da conta do agente de serviço.
Selecione
Storage Legacy Bucket Writer
no menu suspenso Selecionar um papel.Clique em Salvar.
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
Em que:
BUCKET_NAME
é o nome do bucket que você concede à principal o acesso. Por exemplo,my-bucket
.YOUR_AGENT_EMAIL
é o e-mail da conta de agente que você copiou em Encontrar o e-mail do agente de serviço.
Amostras de código
C++
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage C++ para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
C#
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage C# para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Go
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage Go para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Java
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage Java para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Node.js
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage Node.js para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
PHP
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage PHP para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Python
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage Python para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
Ruby
Para saber como instalar e usar a biblioteca de cliente do Cloud Storage, consulte Bibliotecas de cliente do Cloud Storage. Para mais informações, consulte a documentação de referência da API Cloud Storage Ruby para Python.
Para autenticar no Cloud Storage, configure o Application Default Credentials. Para mais informações, consulte Configurar a autenticação para um ambiente de desenvolvimento local.
JSON
Ter a CLI gcloud instalada e inicializada, o que permite gerar um token de acesso para o cabeçalho
Authorization
.Crie um arquivo JSON com as informações a seguir:
{ "bindings":[ { "role": "roles/storage.legacyBucketWriter", "members":[ "YOUR_AGENT_EMAIL" ] } ] }
Em que:
Use
cURL
para chamar a API JSON com uma solicitaçãoPUT 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"
Em que:
JSON_FILE_NAME
é o caminho para o arquivo criado na Etapa 2.OAUTH2_TOKEN
é o token de acesso gerado na Etapa 1.BUCKET_NAME
é o nome do bucket ao qual você quer conceder o acesso principal. Por exemplo,my-bucket
.
Para mais informações sobre como atribuir papéis do IAM aos recursos do Cloud Storage, consulte a documentação do IAM do Cloud Storage.