URLs assinados

Esta página oferece uma vista geral dos URLs assinados, que usam assinaturas para conceder acesso por tempo limitado a um recurso específico do Cloud Storage. Qualquer pessoa que tenha o URL assinado pode usá-lo enquanto estiver ativo, independentemente de ter uma conta válida. Para saber como criar um URL assinado, consulte o Processo de assinatura V4 com ferramentas do Cloud Storage e o Processo de assinatura V4 com o seu próprio programa. Para saber mais sobre outras formas de controlar o acesso a contentores e objetos, consulte a vista geral do controlo de acesso.

Vista geral

Um URL assinado é um URL que fornece permissão e tempo limitados para fazer um pedido. Os URLs assinados contêm informações de autenticação, incluindo uma assinatura, na respetiva string de consulta, o que permite aos utilizadores sem credenciais efetuar ações específicas num recurso.

  • Quando gera um URL assinado, tem de especificar uma conta com permissão suficiente para fazer o pedido que o URL assinado vai fazer.

    • Na maioria dos casos, a conta é uma conta de serviço.

    • Nos casos em que cria o seu próprio programa para gerar URLs assinados, é possível usar uma conta de utilizador, se tiver uma chave HMAC associada.

Depois de gerar um URL assinado, qualquer pessoa que o possua pode usá-lo para realizar ações específicas, como ler um objeto, durante um período especificado.

Quando deve usar um URL assinado?

Em alguns cenários, pode não querer exigir que os utilizadores tenham a sua própria conta para aceder ao Cloud Storage, mas ainda quer controlar o acesso através da lógica específica da sua aplicação. A forma habitual de resolver este exemplo de utilização é fornecer um URL assinado a um utilizador, o que lhe dá acesso de leitura, escrita ou eliminação a esse recurso durante um período limitado. Especifica um tempo de expiração quando cria o URL assinado. Qualquer pessoa que conheça o URL pode aceder ao recurso até atingir o prazo de validade do URL ou até a chave usada para assinar o URL ser alterada.

As utilizações mais comuns de URLs assinados são carregamentos e transferências, porque, nesses pedidos, os dados de objetos movem-se entre os requerentes e o Cloud Storage. Na maioria dos outros casos, como copiar objetos, compor objetos, eliminar objetos ou editar metadados, criar um URL assinado e dá-lo a alguém para usar é um passo adicional desnecessário. Em alternativa, deve considerar um design em que a entidade responsável por criar o URL assinado faz diretamente o pedido desejado ao Cloud Storage.

Exemplo de URL assinado

Segue-se um exemplo de um URL assinado criado de acordo com o processo de assinatura da V4 com autenticação de conta de serviço:

https://storage.s3nsapis.fr/example-bucket/cat.jpeg?X-Goog-Algorithm=
GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.s3ns.iam.gserviceaccount.com
%2F20181026%2Fus-central1%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

Este URL assinado concedeu acesso para ler o objeto cat.jpeg no contentor example-bucket. Os parâmetros de consulta que fazem com que este seja um URL assinado são:

  • 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 ficou utilizável, no formato básico ISO 8601 YYYYMMDD'T'HHMMSS'Z'.

  • X-Goog-Expires: o período durante o qual o URL assinado permaneceu válido, medido em segundos a partir do valor em X-Goog-Date. Neste exemplo, o URL assinado expira dentro de 15 minutos. O valor de expiração mais longo é de 604 800 segundos (7 dias).

  • X-Goog-SignedHeaders: cabeçalhos que tinham de ser incluídos como parte de qualquer pedido que usasse o URL assinado.

  • X-Goog-Signature: a string de autenticação que permitiu que os pedidos que usam este URL assinado acedessem a cat.jpeg.

Usar URLs assinados com carregamentos com opção de retomar o mesmo

Geralmente, a criação de URLs assinados para carregamentos retomáveis é desnecessária, porque, após o pedido para iniciar o carregamento, os pedidos PUT subsequentes para carregar os dados do objeto usam um URI de sessão, que funciona como um token de autenticação. Isto significa que os pedidos de PUT não usam URLs assinados.

Embora possa criar e usar um URL assinado para o pedido POST inicial para iniciar o carregamento, na maioria dos casos, o servidor pode iniciar o carregamento retomável. Em seguida, o servidor envia o URI da sessão ao cliente para realizar o carregamento. Isto evita a complexidade de o servidor criar um URL assinado, bem como a complexidade de o cliente processar o URL assinado e iniciar o carregamento retomável.

Tal como os URLs assinados, um URI de sessão pode ser usado por qualquer pessoa que o possua para carregar dados. Certifique-se de que transmite o URI da sessão através de HTTPS quando o fornece a um cliente.

Considerações sobre URLs assinados

Quando trabalhar com URLs assinados, tenha em atenção o seguinte:

  • Os URLs assinados só podem ser usados para aceder a recursos do Cloud Storage através de pontos finais da API XML.

  • Quando especificar credenciais, recomendamos que identifique a sua conta de serviço através do respetivo endereço de email. No entanto, a utilização do ID da conta de serviço também é suportada.

Pedidos canónicos

Os URLs assinados usam pedidos canónicos como parte das informações codificadas no respetivo parâmetro de string de consulta X-Goog-Signature. Quando cria um URL assinado com as ferramentas do Cloud Storage, o pedido canónico necessário é criado e incorporado automaticamente. No entanto, quando cria um URL assinado com o seu próprio programa, tem de definir o pedido canónico e usá-lo para criar uma assinatura.

Âmbito das credenciais

O âmbito das credenciais aparece na string a assinar e no parâmetro da string de consulta X-Goog-Credential.

O que se segue?