Usar solicitações assinadas

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. Depois, inclua a string composta na solicitação. O Media CDN verifica se a solicitação assinada é válida antes de e agir com base nela.

Requisitos de solicitação assinados

As solicitações assinadas precisam atender aos seguintes requisitos:

  • Tenha um método HTTP GET, HEAD ou OPTIONS. Outros métodos não são suporte.

  • Defina um prazo de validade 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 possa ser verificada por uma chave ou um secret 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 para o usuário, consulte a Documentação do Cloud Storage para 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 ou tokens inválidos são rejeitados na borda da CDN. HTTP 403
Sim Sim REQUIRE_SIGNATURES ou REQUIRE_TOKENS Validar uma assinatura ou um token e a resposta com conteúdo de cache ou uma busca na 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 Nenhum 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.

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.

A ativação de solicitações assinadas em uma rota garante que todas elas sejam assinadas apresentar um token. Solicitações sem uma assinatura válida (como uma chave inválida) nome, assinatura ou token expirado, assinatura incompatível etc.), não funcionam.

Um EdgeCacheKeyset pode conter várias chaves para permitir que a chave a rotação de chaves. São aceitas solicitações válidas assinadas com qualquer chave listada, e as chaves são testadas em 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
Saída:
...
  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 as chaves secretas usadas 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