Para criar uma solicitação assinada, escreva uma string que inclua parâmetros que descreva o conteúdo que você quer proteger e o prazo de validade do valor assinado. Em seguida, inclua a string composta na solicitação. O Media CDN verifica se a solicitação assinada é válida antes de agir.
Requisitos de solicitação assinados
As solicitações assinadas precisam atender aos seguintes requisitos:
Tenha um método HTTP
GET
,HEAD
ouOPTIONS
. Outros métodos não são suporte.Ter um tempo de expiração definido no futuro. Devido ao possível relógio diferenças de sincronização e condições de rede do cliente (por exemplo, desconexões e novas tentativas), recomendamos definir carimbos de data/hora como em menos de um minuto no futuro ou não menos que a duração a transmissão de vídeo, o que for maior.
Ter uma assinatura que pode ser verificada por uma chave ou um segredo em um
EdgeCacheKeyset
.
Não é possível assinar outros métodos HTTP, como solicitações POST
, PUT
ou DELETE
.
Se você precisar emitir URLs assinados para uploads voltados ao usuário, consulte a
documentação do Cloud Storage sobre URLs assinados.
Considerações sobre segurança
O Media CDN valida todas as solicitações que correspondem a uma rota configurada com um
cdnPolicy.signedRequestMode
de REQUIRE_SIGNATURES
ou REQUIRE_TOKENS
.
A tabela a seguir explica os cenários em que o Media CDN valida uma solicitação:
A solicitação tem uma assinatura | Assinatura válida? | signedRequestMode | Comportamento | Código de resposta |
---|---|---|---|---|
Não | N/A | REQUIRE_SIGNATURES ou REQUIRE_TOKENS |
As solicitações sem assinaturas ou tokens são tratadas como se a assinatura fosse inválido. | HTTP 403 |
Sim | Não | REQUIRE_SIGNATURES ou REQUIRE_TOKENS |
Uma assinatura ou token é considerado inválido se tiver expirado ou tiver um URL incompatível ou chave incorreta. Assinaturas inválidas ou tokens são rejeitados na borda da CDN. | HTTP 403 |
Sim | Sim | REQUIRE_SIGNATURES ou REQUIRE_TOKENS |
Valide uma assinatura ou um token e a resposta com conteúdo do cache ou uma busca da origem. | HTTP 200 |
Sim | Sim | Nenhum ou DISABLED |
Nenhuma validação é realizada, e uma resposta é exibida ao usuário diretamente. | HTTP 200 |
Sim | Não | Nenhuma ou DISABLED |
Nenhuma validação é realizada, e uma resposta é exibida ao usuário diretamente. | HTTP 200 |
Quando o aplicativo detectar uma assinatura inválida, verifique se
ele responde com um código de resposta HTTP 403 (Forbidden)
.
Os códigos de resposta HTTP 403
não são armazenáveis em cache.
Configurar solicitações assinadas
As seções a seguir detalham como configurar, assinar e validar solicitações assinhadas.
Gerar chaves
Crie as chaves que o Media CDN usa para assinar solicitações.
Criar um conjunto de chaves
Crie o conjunto de chaves usado pelo Media CDN para solicitações assinadas.
Exigir solicitações assinadas
Para permitir que apenas solicitações assinadas acessem um recurso, anexe um
lista de chaves para uma rota e defina signedRequestMode
como um dos seguintes:
REQUIRE_SIGNATURES
para solicitações assinadas que não usam tokens.REQUIRE_TOKENS
para solicitações assinadas usando tokens.
Ativar solicitações assinadas em uma rota exige que todas as solicitações sejam assinadas ou apresentem um token. As solicitações sem uma assinatura válida (como um nome de chave inválido, assinatura ou token expirado, assinatura incompatível etc.) falham.
Um EdgeCacheKeyset
pode conter várias chaves para permitir que a chave
a rotação de chaves. As solicitações válidas assinadas com qualquer chave listada são aceitas, e as chaves
são testadas na ordem. Para mais informações sobre rotação de chaves, consulte Alternar
secrets.
Quando signedRequestMode
é definido como REQUIRE_SIGNATURES
ou REQUIRE_TOKENS
,
O Media CDN valida tanto as ocorrências quanto as ausências em cache. Isso inclui todos os
solicitações para a origem.
Este é um exemplo de configuração do Media CDN que aplica solicitações assinadas em um determinado PathMatcher (rota):
gcloud edge-cache services describe prod-media-service
... routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_SIGNATURES signedRequestKeyset: prod-vod-keyset
Para informações sobre como criar tokens para solicitações assinadas, consulte Gerar tokens.
Para desativar a assinatura de solicitações, defina signedRequestMode
como DISABLED
e exclua a referência ao signedRequestKeyset
.
Validar solicitações na origem
Quando uma rota é configurada com um modo de assinatura de REQUIRE_SIGNATURES
,
O Media CDN valida se cada solicitação correspondente tem um
assinatura. Nesse caso, a ausência de uma assinatura é tratada como inválida.
rotas de prioridade mais alta.
Para evitar casos em que a assinatura está configurada incorretamente e em que um usuário tentar acessar sua origem diretamente, recomendamos confirmar que as solicitações também estão assinadas na origem. Uma defesa em profundidade abordagem de proteção de conteúdo ajuda a evitar acessos e downloads não autorizados do seu conteúdo licenciado e pago.
Para métodos de assinatura com base em URL, em que a assinatura faz parte da consulta
ou incorporados como um componente de caminho do URL, a assinatura e os
são removidos do URL antes que a solicitação seja enviada ao
origem. Isso evita que a assinatura cause problemas de roteamento quando o
origem está processando a solicitação. Para validar essas solicitações, inspecione o
Cabeçalho da solicitação x-client-request-url
, que inclui o cabeçalho original (assinado)
URL de solicitação do cliente antes da remoção dos componentes assinados.
Para validar solicitações na origem, use o mesmo código de validação como parte do os endpoints de assinatura de solicitações, o que também ajuda a reduzir a incompatibilidade de chaves e devido à rotação de chaves.
Alternar chaves
Como prática recomendada, alterne ou atualize os segredos usados pelo Media CDN regularmente. Recomendamos fazer a rotação das chaves a cada 30 a 60 dias, mas isso não é obrigatório.
A seguir
Para saber mais sobre como ativar e acessar os registros da Media CDN, incluindo como filtrar e consultar seus registros, consulte Registros.
Para configurar o Media CDN e um um bucket particular do Cloud Storage, consulte Conectividade e proteção de origem.