URLs assinados

Nesta página, você terá uma visão geral dos URLs assinados, que podem ser usados para conceder acesso com limite de tempo a recursos para qualquer pessoa que tenha o URL, independentemente de ter uma Conta do Google. Para saber como criar um URL assinado, consulte Processo de assinatura V4 com ferramentas do Cloud Storage e Processo de assinatura V4 com seu próprio programa. Para aprender outras maneiras de controlar o acesso a intervalos e objetos, consulte Visão geral do controle de acesso.

Visão geral

Um URL assinado é um URL que fornece permissão e tempo limitados para fazer uma solicitação. Os URLs assinados contêm informações de autenticação na string de consulta, permitindo que usuários sem credenciais executem ações específicas em um recurso. Ao gerar um URL assinado, você especifica uma conta de usuário ou de serviço que precisa ter permissão suficiente para fazer a solicitação em questão. Depois que a geração for concluída, qualquer pessoa que tenha o URL assinado poderá usá-lo para executar as ações especificadas, como a leitura de um objeto, dentro do período especificado.

Quando usar um URL assinado?

Em alguns cenários, talvez você não queira exigir que seus usuários tenham uma Conta do Google para acessar o Cloud Storage, mas ainda queira controlar o acesso usando a lógica específica do aplicativo. A maneira típica de abordar esse caso de uso é fornecer um URL assinado a um usuário, o que permite a ele ler, gravar ou excluir o acesso a esse recurso por um tempo limitado. Qualquer pessoa que tenha o URL pode acessar o recurso até que o URL expire. Você especifica o prazo de validade ao criar o URL assinado.

Opções para gerar um URL assinado

O Cloud Storage é compatível com vários métodos para gerar um URL assinado:

  • Assinatura V4 com autenticação de conta de serviçoBETA: esse mecanismo de assinatura está descrito abaixo.

  • Assinatura V2 com autenticação de conta de serviço: para mais informações sobre esse mecanismo de assinatura, clique aqui.

  • Assinatura com autenticação HMAC: se você é um usuário do Amazon Simple Storage Service (Amazon S3), é possível usar seus fluxos de trabalho atuais para gerar URLs assinados para o Cloud Storage. Basta especificar os recursos do Cloud Storage, direcionar para o host storage.googleapis.com e usar as credenciais HMAC do Google no processo de geração do URL assinado.

Exemplo de URL assinado

Veja a seguir um exemplo de URL assinado que foi criado com o processo de assinatura V4 e autenticação da conta de serviço:

https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount
.com%2F20181026%2Fus-central-1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
2ea7abedc098d2eb14a7

Esse URL assinado forneceu acesso para ler o objeto cat.jpeg no intervalo example-bucket. Os parâmetros de consulta que fazem com que esse seja um URL assinado são os seguintes:

  • X-Goog-Algorithm: o algoritmo usado para assinar o URL.

  • X-Goog-Credential: informações sobre as credenciais usadas para criar o URL assinado.

  • X-Goog-Date: a data e a hora em que o URL assinado se tornou utilizável, no formato básico YYYYMMDD'T'HHMMSS'Z' do ISO 8601 (em inglês).

  • X-Goog-Expires: o período em que o URL assinado permaneceu válido, medido em segundos a partir do valor em X-Goog-Date. No exemplo, o URL assinado expira em 15 minutos. O maior valor de expiração é 604.800 segundos (sete dias).

  • X-Goog-SignedHeaders: cabeçalhos que precisavam ser incluídos como parte de qualquer solicitação que usou o URL assinado.

  • X-Goog-Signature: a string de autenticação que permitiu às solicitações que usam esse URL assinado acessar cat.jpeg.

Como usar URLs assinados com uploads recuperáveis

Em uploads recuperáveis para enviar objetos a um intervalo, use o URL assinado apenas na solicitação POST inicial. Não será feito o upload de quaisquer dados na solicitação POST. Em vez disso, a solicitação retornará o URI da sessão, que será usado nas solicitações PUT subsequentes para fazer upload dos dados. Como o URI da sessão é, na realidade, um token de autenticação, as solicitações PUT não precisam usar o URL assinado original. Esse comportamento permite que a solicitação POST seja feita pelo servidor. Assim, os clientes não precisam lidar com URLs assinados.

Os uploads recuperáveis são fixados na região em que são iniciados. Por exemplo, se você criar um URL de upload recuperável nos EUA e fornecê-lo a um cliente na Ásia, o upload ainda passará pelos EUA. A realização de um upload recuperável em uma região onde ele não foi iniciado pode resultar em lentidão. Para evitar que isso ocorra, garanta que a solicitação POST inicial seja construída e assinada pelo servidor, mas forneça o URL assinado ao cliente para que o upload seja iniciado a partir da localização dele. Uma vez iniciado, o cliente pode usar o URI da sessão resultante normalmente para fazer solicitações PUT que não precisam ser assinadas.

Considerações sobre URLs assinados

Ao trabalhar com URLs assinados, tenha isto em mente:

  • Geralmente, os URLs assinados podem ser feitos para qualquer solicitação da API XML. No entanto, as bibliotecas de cliente do Cloud Storage para Node.js atualmente podem criar URLs assinados somente para objetos individuais. Por exemplo, não é possível usá-las para criar URLs assinados para listar objetos em um intervalo.

  • Ao especificar credenciais, é recomendável que você identifique sua conta de serviço usando o endereço de e-mail dela. No entanto, o uso do ID da conta de serviço também é aceito.

Solicitações canônicas

Os URLs assinados usam solicitações canônicas como parte das informações codificadas no parâmetro de string de consulta X-Goog-Signature. Ao criar um URL assinado com as ferramentas do Cloud Storage, a solicitação canônica exigida é criada e incorporada automaticamente. No entanto, quando você cria um URL assinado com seu próprio programa , precisa definir a solicitação canônica por conta própria.

Escopo da credencial

O escopo da credencial aparece na string a ser assinada e no parâmetro de string de consulta X-Goog-Credential. Ele tem a seguinte estrutura:

[DATE]/[LOCATION]/storage/goog4_request
  • [DATE]: data formatada como AAAAMMDD, que precisa corresponder ao dia usado na string a ser assinada.
  • [LOCATION]: a região em que o recurso reside ou será criado. Para recursos do Cloud Storage, o valor de [LOCATION] é arbitrário. O parâmetro [LOCATION] existe para manter a compatibilidade com o Amazon Simple Storage Service (Amazon S3).
  • storage: o nome do serviço.
  • goog4_request: o tipo de URL assinado.

Exemplo: 20181102/us/storage/goog4_request

Como assinar strings com as ferramentas do Google Cloud Platform

Ao gerar um URL assinado usando um programa, uma opção para assinar a string é utilizar as ferramentas fornecidas pelo GCP.

Serviço App Identity do App Engine

A assinatura em um aplicativo do App Engine usa o serviço App Identity, que utiliza as credenciais da conta de serviço do App Engine. Por exemplo, ao usar a API App Identity para Python, é possível fazer o seguinte:

  • Usar google.appengine.api.app_identity.sign_blob() para assinar os bytes da string construída, fornecendo a Signature que você precisa na montagem do URL assinado.

  • Usar google.appengine.api.app_identity.get_service_account_name() para recuperar um nome de conta de serviço, que é o GoogleAccessId que você precisa na montagem do URL assinado.

O App Engine também é compatível com outras linguagens:

O serviço App Identity faz a rotação das chaves privadas ao assinar os blobs. Os URLs assinados gerados pelo serviço App Identity são válidos por pelo menos uma hora e são melhor utilizados para acesso de curta duração aos recursos.

signBlob do IAM

A assinatura pode ser realizada usando o método signBlob do IAM.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.