A assinatura V4 é um processo que pode usar para gerar assinaturas para autenticação em pedidos da API XML do Cloud Storage. Esta página descreve como usar a CLI Google Cloud e as bibliotecas cliente do Cloud Storage para criar URLs assinados, usando credenciais de contas de serviço. Os URLs assinados dão acesso de leitura ou escrita por tempo limitado a um recurso específico do Cloud Storage. Se quiser criar o seu próprio programa para criar URLs assinados, leia o artigo Assinatura V4 com o seu próprio programa.
Antes de começar
Antes de realizar as tarefas nesta página, conclua os seguintes passos:
- Enable the Service Account Credentials API. - Roles required to enable APIs - To enable APIs, you need the Service Usage Admin IAM role ( - roles/serviceusage.serviceUsageAdmin), which contains the- serviceusage.services.enablepermission. Learn how to grant roles.
- Crie uma conta de serviço. Se já tiver uma conta de serviço que quer usar para assinar URLs, pode ignorar este passo. 
- Conceda à conta de serviço autorização suficiente para que possa executar o pedido que o URL assinado vai fazer. Por exemplo, se o URL assinado permitir que um utilizador leia os dados de objetos, a conta de serviço tem de ter autorização para ler os dados de objetos. - Para as tarefas descritas neste guia, peça ao seu administrador para conceder uma das seguintes funções de IAM à conta de serviço: - Utilizador de objetos de armazenamento ( - roles/storage.objectUser): use esta função para criar URLs assinados para carregar e transferir objetos. Esta função também é necessária se o URL assinado puder substituir um objeto existente.
- Visualizador de objetos de armazenamento ( - roles/storage.objectViewer): use esta função se quiser apenas criar URLs assinados para transferir objetos.
- Criador de objetos de armazenamento ( - roles/storage.objectCreator): use esta função se quiser apenas criar URLs assinados para carregar objetos e o objeto carregado não substituir um objeto existente no contentor.
 - Estas funções predefinidas contêm as autorizações necessárias para criar URLs assinados que transferem e carregam objetos. Para ver as autorizações exatas necessárias, expanda a secção Autorizações necessárias: - Autorizações necessárias- storage.objects.get(não é necessário se só quiser carregar objetos)
- storage.objects.create(não é necessário se quiser apenas transferir objetos)
- storage.objects.delete(não é necessário se não precisar de substituir objetos durante o carregamento)
 - Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas. Para ver que funções estão associadas a que autorizações, consulte as funções de IAM para o Cloud Storage. 
- Ter autorização suficiente para assinar blobs com a conta de serviço. Peça ao seu administrador para conceder a função de criador de tokens de conta de serviço ( - roles/iam.serviceAccountTokenCreator).- Se usar credenciais de utilizador para autenticação, deve ser o principal ao qual esta função foi atribuída, e esta função deve ser concedida na conta de serviço que vai ser usada para criar os URLs assinados. 
- Se usar uma conta de serviço associada a uma instância de computação para autenticação, a conta de serviço tem de ser o principal para esta função para se fazer passar por si própria, e esta função deve ser concedida no projeto que contém a conta de serviço. 
 - Esta função predefinida contém a autorização necessária para assinar blobs com uma conta de serviço. Para ver a autorização exata necessária, expanda a secção Autorizações necessárias: - Autorizações necessárias- iam.serviceAccounts.signBlob
 - Também pode conseguir esta autorização com funções personalizadas ou outras funções predefinidas. Para ver que funções estão associadas a que autorizações, consulte as funções de IAM para o Cloud Storage. - Para obter instruções sobre como conceder funções em projetos, consulte o artigo Gerir o acesso a projetos. 
Crie um URL assinado para transferir um objeto
Para criar um URL assinado que possa obter um objeto de um contentor, conclua os seguintes passos:
Linha de comandos
- Use o comando - gcloud storage sign-url. Por exemplo, o comando seguinte cria um URL assinado que permite aos utilizadores transferir um objeto durante 10 minutos:- gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --duration=10m - Onde: - BUCKET_NAMEé o nome do contentor onde o objeto está localizado. Por exemplo,- example-bucket.
- OBJECT_NAMEé o nome do objeto a transferir. Por exemplo,- cat.jpeg.
- SERVICE_ACCOUNT_EMAILé o endereço de email de uma conta de serviço cuja chave fará a assinatura. Por exemplo,- signed-url-account@my-project.iam.gserviceaccount.com.
 - Se for bem-sucedido, a resposta deve ter o seguinte aspeto: - --- expiration: '2023-07-14 23:19:35' http_verb: GET resource: gs://example-bucket/cat.jpeg signed_url: https://storage.googleapis.com/example-bucket/cat.jpeg? x-goog-signature=11ae9c61ca84dd0bec319f7d52a38029e5873caa2eeced0568 ef96076258cfc1a925a9683cc907d210036b61af9e06a13bf4a15b15fab3916669b e2f4c9f66ea6be822bec5858af519a6da705415b5768721197be213103fa09b8a18 8a143be77a24351517ff208a2c62cfebb78040daf1f953907080bd98f9462739d11 1355b1d9bcf54705b862f37392c031fde0d52add1a4d3bbb98a22e8b7023f6a1623 2e0a2dd56e524d410624d28663e557fafaf4ba0a04290a1066f894713857b429258 d14f056066c7622baf114c124e645688e19b4df3c4a7925f580693c93fa9c1dae7f dff0edff7259c72f3f0eadc5a9f9f556c83c9c8dc02ee3af8d20ab634bad&x-goog -algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-account%40 my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog 4_request&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-si gnedheaders=host - Este URL pode ser usado por qualquer pessoa para aceder ao recurso associado (neste caso, - cat.jpeg) durante o período designado (neste caso, 10 minutos).
Bibliotecas cliente
C++
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 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 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 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 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 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 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 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.
Crie um URL assinado para carregar um objeto
Para criar um URL assinado que possa carregar um objeto para um contentor, conclua os passos seguintes:
Linha de comandos
- Use o comando - gcloud storage sign-url. Por exemplo, o comando seguinte cria um URL assinado que permite aos utilizadores carregar um ficheiro durante uma hora:- gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --http-verb=PUT --duration=1h --headers=content-type=CONTENT_TYPE - BUCKET_NAMEé o nome do contentor onde o objeto está a ser carregado. Por exemplo,- example-bucket.
- OBJECT_NAMEé o nome a atribuir ao objeto carregado. Por exemplo,- cat.png.
- SERVICE_ACCOUNT_EMAILé o endereço de email de uma conta de serviço cuja chave fará a assinatura. Por exemplo,- signed-url-account@my-project.iam.gserviceaccount.com.
- CONTENT_TYPEé o tipo de conteúdo do objeto carregado. Por exemplo,- image/png.
 - Se for bem-sucedido, a resposta deve ter o seguinte aspeto: - --- expiration: '2023-07-14 23:35:47' http_verb: PUT resource: gs://example-bucket/cat.png signed_url: https://storage.googleapis.com/example-bucket/cat.png? x-goog-signature=2f670a686102963e0574f3c1a3b4d29ee4aa406c1528d42d2 30195d17fef73834b254314de7d7990afd48538a84b66f20010e7ecd90a900490e 6119b7e56a912f71c8d64285c40e86f31b8fec51cf8c7a61ded81de3cedac9c1ca b92474b7371740fdac20b2d8d092b15396f79443bbde954a4174ed11aef6c2cf5f a4d72a84ff60fd6003ed0a505b0e40b6207ddbaec2a15778f715c3ec7537a1b14f b6661b2abaa5736f1670a412ca7e2555c830591f0595c01ff95af7f2206abe2e27 41948c16d4bd4c7cbb25f41277ece59236c06e00ca6c63ae2eb3efc22c216bb24c e1b8b3801d07fd3a7ed3f2df3db6e59c6fc3cc76a002335dd936efd0237cf584e3 6&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-a ccount%40my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstor age%2Fgoog4_request&x-goog-date=20230714T223547Z&x-goog-expires=36 00&x-goog-signedheaders=content-type%3Bhost - Este URL pode ser usado por qualquer pessoa para carregar um recurso (neste caso, - cat.png) para o contentor do Cloud Storage especificado durante o período designado (neste caso, 1 hora).
Bibliotecas cliente
C++
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 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 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 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 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 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 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 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.
O que se segue?
- Saiba como assinar URLs com o seu próprio programa.
- Saiba mais sobre os URLs assinados.
- Saiba como carregar um objeto com a API XML.
- Saiba mais acerca do carregamento de objetos.