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. 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 ou OPTIONS. 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
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 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.