Para aplicar a autenticação de token duplo quando os espectadores acessam um recurso de streaming, configure rotas separadas. Uma rota é uma configuração que corresponde a solicitações do Media CDN e direciona o tráfego HTTP para uma origem. A Media CDN é compatível com rotas para recursos de HTTP Live Streaming (HLS) ou Dynamic Adaptive Streaming over HTTP (DASH). Para mais informações sobre rotas na Media CDN, consulte Configurar rotas de serviço.
Para streams HLS, a Media CDN é compatível com a autenticação de token duplo por cookies e parâmetros de consulta de URL (sem cookies). Para streams DASH, a Media CDN só é compatível com a autenticação de token duplo baseada em cookies.
Nesta página, descrevemos como configurar rotas da Media CDN para ajudar a proteger o conteúdo usando a autenticação de token duplo.
Antes de começar
Faça o seguinte:
Para tokens de curta duração, escolha um dos seguintes algoritmos de assinatura:
- Assinaturas Ed25519
- Códigos de autenticação de mensagens baseados em hash (HMACs) de chave simétrica
É possível ativar algoritmos de assinatura HMAC simétricos apenas para rotas configuradas para gerar novos tokens de longa duração. Recomendamos usar assinaturas Ed25519 para ter o melhor desempenho e segurança, e HMACs de chave simétrica somente quando necessário para compatibilidade com outras CDNs.
Inclua as chaves obrigatórias em um recurso
EdgeCacheKeyset
.Os tokens precisam ser assinados ou verificados com chaves em um recurso
EdgeCacheKeyset
. O conjunto de chaves precisa incluir as chaves corretas para o algoritmo de assinatura selecionado. A tabela a seguir descreve cada um dos algoritmos de assinatura e as chaves necessárias.Algoritmo de assinatura Chaves obrigatórias no conjunto de chaves Ed25519 Chaves públicas HMAC-SHA1 Chaves compartilhadas de validação HMAC-SHA256 Chaves compartilhadas de validação Como prática recomendada, crie dois conjuntos de chaves separados, um para tokens de curta duração e outro para tokens de longa duração.
No entanto, se você estiver usando DASH e arquivos de descrição de apresentação de mídia (MPD) dinâmicos, use o mesmo conjunto de chaves para tokens de longa e curta duração.
Para tokens de longa duração, escolha um dos seguintes formatos:
- Cookies
- Parâmetros de consulta do URL
Configurar tokens de curta duração
Dependendo do algoritmo de assinatura que você quer usar, configure tokens de curta duração usando uma das seguintes opções.
Assinatura Ed25519
Gere uma chave privada:
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Substitua
SSL_KEY_NAME
pelo nome de uma chave.Gere uma chave pública da chave privada:
openssl pkey -outform DER -pubout -in SSL_KEY_NAME.private.key |\ tail -c +13 |\ python3 -c "import base64, sys; print(('%s' % base64.urlsafe_b64encode(sys.stdin.buffer.read()))[2:-1])"
Crie um novo conjunto de chaves com uma única chave pública:
Console
No console Google Cloud , acesse a página Media CDN.
Clique na guia Conjuntos de chaves.
Clique em
Criar conjunto de chaves.Em Nome, insira um nome exclusivo para o conjunto de chaves.
Opcional: em Descrição, insira uma descrição para o conjunto de chaves.
Opcional: clique em Adicionar rótulo e insira um ou mais pares de chave-valor para o conjunto de chaves.
Clique em Adicionar chave pública e faça o seguinte:
- Em ID, insira um ID alfanumérico.
- Selecione Inserir o valor e especifique o valor codificado em base64 da sua chave pública Ed25519.
Clique em Criar conjunto de chaves.
gcloud
Use o comando
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
Substitua:
SHORT_KEYSET_NAME
: um nome exclusivo para o conjunto de chaves, por exemplo,prod-vod-keyset
SSL_PUBLIC_KEY_NAME
: o nome da chave pública SSLSSL_PUBLIC_KEY_VALUE
: o valor da sua chave pública SSL
Para revisar as chaves associadas ao conjunto de chaves, use o comando
gcloud edge-cache keysets describe
.gcloud edge-cache keysets describe prod-vod-keyset
O resultado será assim:
name: prod-vod-keyset description: "Keyset for prod.example.com" publicKeys: - id: "key-20200918" value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w" - id: "key-20200808" value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
Terraform
HMAC de chave simétrica
Se você nunca usou o Secret Manager, configure o serviço.
Adicione uma versão do secret em formato binário.
Conceda o papel de acesso ao Secret Manager (
roles/secretmanager.secretAccessor
) à conta de serviço da Media CDN:Console
No console Google Cloud , acesse a página Secret Manager.
Marque a caixa de seleção ao lado do nome do secret.
Clique em Mostrar painel de informações.
No painel de informações, clique em Adicionar participante.
Em Novos principais, insira a conta de serviço da CDN de mídia neste formato:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Substitua
PROJECT_NUMBER
pelo número do projeto.Em Selecionar um papel, escolha Secret Manager e depois Acessador de secrets do Secret Manager.
gcloud
Use o comando
gcloud secrets add-iam-policy-binding
gcloud secrets add-iam-policy-binding projects/PROJECT_NUMBER/secrets/SECRET_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Substitua:
PROJECT_NUMBER
: o ID do seu projetoSECRET_ID
: o ID do secret
Acesse as versões do secret e copie os caminhos do secret, incluindo os números das versões.
Crie um novo conjunto de chaves com os segredos compartilhados em uma chave compartilhada de validação:
Console
No console Google Cloud , acesse a página Media CDN.
Clique na guia Conjuntos de chaves.
Clique em
Criar conjunto de chaves.Em Nome, insira um nome exclusivo para o conjunto de chaves.
Opcional: em Descrição, insira uma descrição para o conjunto de chaves.
Opcional: clique em Adicionar rótulo e insira um ou mais pares de chave-valor para o conjunto de chaves.
Para especificar uma chave compartilhada de validação, clique em Adicionar chave compartilhada de validação e faça o seguinte:
Em Secret, selecione um secret na lista, insira um secret manualmente especificando o ID do recurso ou crie um novo secret e selecione-o.
Em Versão do secret, selecione uma versão na lista ou crie uma nova versão do secret e selecione-a.
Clique em Criar conjunto de chaves.
gcloud
Use o comando
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
Substitua:
SHORT_KEYSET_NAME
: um nome exclusivo para o conjunto de chaves, por exemplo,prod-vod-keyset
PROJECT_NUMBER
: ID do projeto;SECRET_ID
: o ID do recurso do secretKEY_VERSION
: a versão do secret que você quer usar
Configurar tokens de longa duração
Google-owned and managed keys s são definidos por chaveset. Isso significa que dois conjuntos de chaves diferentes têmGoogle-owned and managed keysdiferentes. Google-owned and managed keys são trocadas com frequência.
Configure tokens de longa duração usando uma das seguintes opções:
Console
Na seção Chaves, selecione Usar Google-owned and managed key para autenticação de dois tokens.
gcloud e YAML
Use uma das seguintes opções:
Crie uma chave de assinatura gerenciada pelo Google:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
Substitua
LONG_KEYSET_NAME
por um nome de chave, por exemplo,prod-vod-keyset-long
.Modificar um conjunto de chaves:
Exporte o conjunto de chaves para um arquivo YAML. Use o comando
gcloud edge-cache keysets export
.gcloud edge-cache keysets export LONG_KEYSET_NAME \ --destination=prod-vod-keyset-long.yaml
Em um editor de texto ou na ferramenta de gerenciamento de configuração, edite a configuração do conjunto de chaves para que ela fique semelhante a esta:
name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME publicKeys: - id: some-key value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd - id: google-managed-key managed: true
Importe o conjunto de chaves editado. Use o comando
gcloud edge-cache keysets import
(em inglês).gcloud edge-cache keysets import LONG_KEYSET_NAME \ --source=prod-vod-keyset-long.yaml
É possível incluir outras chaves públicas no conjunto de chaves de token de longa duração. O conjunto de chaves pode ter no máximo três chaves públicas. Na prática, isso significa que o conjunto de chaves pode ter duas chaves gerenciadas pelo usuário e um Google-owned and managed key.
A Media CDN sempre usa o Google-owned and managed key para gerar tokens. As chaves gerenciadas pelo usuário só podem ser usadas para verificação.
Incluir outras chaves públicas é útil para permitir que o aplicativo do player acesse playlists e segmentos de mídia usando solicitações assinadas geradas pelas suas próprias chaves privadas.
Configurar a troca de tokens
Esta seção mostra como configurar a troca de tokens criando várias rotas. Uma rota permite otimizar o comportamento com base no tipo de conteúdo, nos atributos do cliente e nos requisitos de atualização. Nos exemplos a seguir, usamos rotas para configurar a troca de tokens em cada parte de uma solicitação de mídia.
Configurar a rota do manifesto principal para exigir tokens de curta duração
Configure a Media CDN para exigir tokens de curta duração na rota do manifesto principal.
Console
Ative a autenticação de token de curta duração na rota do manifesto principal:
No console Google Cloud , acesse a página Media CDN.
Para abrir a página Detalhes de um serviço, clique no nome dele.
Para mudar para o modo de edição, clique no botão Editar.
Para navegar até a seção Roteamento, clique em Próxima.
Expanda a regra de host a que você quer adicionar a regra de rota do manifesto principal.
Clique em Adicionar regra de rota.
Para editar uma regra de rota, clique em
Editar na linha correspondente.No painel Editar regra de rota, em Prioridade, defina um valor, por exemplo,
1
.Em Descrição, forneça uma breve descrição que ajude a identificar a regra na lista.
Na seção Correspondência, clique em Adicionar uma condição de correspondência. Em seguida, faça o seguinte:
- Em Tipo de correspondência, selecione Correspondência de modelo de caminho.
- Em Correspondência de caminho, especifique os nomes ou modelos de caminho para a playlist principal HLS (M3U8) ou o arquivo de manifesto DASH (MPD). Para mais informações, consulte Correspondência de caminho.
Clique em Configurações avançadas.
Na seção Rota de ação, clique em Adicionar um item.
Em Tipo, selecione Política de CDN.
Na seção Solicitação assinada, em Modo de solicitação assinada, selecione Exigir tokens.
Na seção Conjunto de chaves de solicitação assinada, faça o seguinte:
Para especificar o conjunto de chaves para tokens de curta duração, clique em Selecionar um conjunto de chaves e escolha seu conjunto de chaves de token de curta duração.
Se preferir, clique em Criar novo conjunto de chaves para criar um com as chaves necessárias. Em seguida, selecione-o.
Em Algoritmo de assinatura, selecione Ed25519 usando chaves públicas.
Em Parâmetro de consulta do token, mantenha o valor padrão,
edge-cache-token
.Como alternativa, se você planeja usar parâmetros de consulta de URL do manifesto HLS em vez de cookies para autenticação, especifique o parâmetro em que os tokens de solicitação serão armazenados.
Em Tempo máximo de vida, especifique, em segundos, o ciclo de vida máximo dos tokens de solicitação recebidos.
Para salvar as mudanças na seção Ação de rota, clique em Concluído.
Para salvar as mudanças na regra de rota, clique em Salvar.
gcloud e YAML
Exporte sua configuração da Media CDN para um arquivo YAML. Use o comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Substitua:
SERVICE_NAME
: o nome do serviço;FILENAME
: o nome do arquivo YAML
Para ativar a autenticação de token de curta duração na regra de rota do manifesto principal, na seção
cdnPolicy
da rota no arquivo YAML, especifique uma configuraçãosignedTokensOptions
.pathMatchers: - name: "ROUTE_NAME" routeRules: - priority: 1 description: "ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/MANIFEST_OR_PLAYLIST" routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: SHORT_KEYSET_NAME signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME signedTokenOptions: tokenQueryParameter: SHORT_TOKEN_NAME
Substitua:
ROUTE_NAME
: o nome da regra de rotaROUTE_DESCRIPTION
: uma descrição da regra de rota.ORIGIN_NAME
: o nome da origemMANIFEST_OR_PLAYLIST
: o nome da playlist principal HLS (M3U8) ou do arquivo de manifesto DASH (MPD). Para mais informações, consulte Correspondência de caminho.SHORT_KEYSET_NAME
: o nome do conjunto de chaves a ser usado para tokens de curta duraçãoSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: o prazo de validade das solicitações assinadas, por exemplo,600s
. Para mais informações, consultesignedRequestMaximumExpirationTtl
.- Opcional:
SHORT_TOKEN_NAME
: o parâmetro de consulta em que o token curto será encontrado. O valor padrão éedge-cache-token
. Veja mais informações emSignedTokenOptions
.
Ao usar HMACs de chave simétrica, na seção
signedTokenOptions
, adicioneallowedSignatureAlgorithms
com o valorHMAC_SHA_256
:allowedSignatureAlgorithms: - HMAC_SHA_256
Para atualizar o serviço, importe a configuração da Media CDN do arquivo YAML. Use o comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Isso conclui o processo de ativação da autenticação de token único.
Para configurar a autenticação de dois tokens, acesse as seções a seguir.
Configurar a regra de rota do manifesto principal para gerar tokens de longa duração
Configure a CDN de mídia para gerar tokens de longa duração na rota do manifesto principal. Escolha cookies ou parâmetros de consulta de URL para gerar esses tokens.
Console
Modifique a regra de rota do manifesto principal para que a Media CDN possa gerar tokens de longa duração na rota:
- Na página Editar regra de rota, clique em Configurações avançadas.
- Em Tipo, selecione Política de CDN.
- Expanda Autenticação de dois tokens.
- Em Ação de assinatura, selecione Gerar novo token de longa duração.
Em Tipo de assinatura, selecione uma das seguintes opções:
- por cookies (para streaming HLS e DASH): configura a
Media CDN para retornar um
Edge-Cache-Cookie
com a resposta do manifesto principal. - por parâmetros de consulta de URL do manifesto HLS (sem cookies): configura a Media CDN para manipular o manifesto principal do HLS anexando um token de longa duração a cada URL.
- por cookies (para streaming HLS e DASH): configura a
Media CDN para retornar um
Na seção Gerar novo token de longa duração, faça o seguinte:
Para especificar um conjunto de chaves para tokens de longa duração, clique em Selecionar um conjunto de chaves e escolha seu conjunto de chaves de token de longa duração.
Ou clique em Criar novo conjunto de chaves para criar um conjunto com as chaves necessárias. Em seguida, selecione-o.
Em TTL do token, especifique, em segundos, o tempo máximo de vida útil do token de longa duração.
Em Tipo de assinatura, se você selecionou a opção via cookies, na seção Parâmetros copiados, selecione os parâmetros que você quer que a Media CDN copie do token de curta duração para o de longa duração. Para usar a autenticação com dois tokens, selecione
PathGlobs
(ou um dos aliases,acl
oupaths
) ouURLPrefix
.Se você selecionou a opção por parâmetros de consulta URI do manifesto HLS, mantenha o valor padrão
edge-cache-token
em Parâmetro de consulta de token.
Para salvar as mudanças na seção Ação de rota, clique em Concluído.
Para salvar as mudanças na regra de rota, clique em Salvar.
Uma mensagem vai aparecer perguntando se você quer criar as rotas para playlists e segmentos de mídia de forma automática ou manual. Se você selecionar a opção automática, uma única nova rota será criada para a assinatura de cookies e duas rotas para a assinatura sem cookies. Se você selecionar a opção manual, siga para a próxima seção.
gcloud e YAML
Modifique a seção addSignatures
da regra de rota do manifesto principal para que
a Media CDN possa gerar tokens de longa duração na rota:
Cookies
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
Substitua:
LONG_KEYSET_NAME
: o nome do conjunto de chaves de token de longa duraçãoTOKEN_EXPIRATION_TIME
: o prazo de validade do token de longa duração. Por exemplo,86400s
para um prazo de validade de um dia.
Este exemplo de código implementa as seguintes mudanças:
addSignatures.actions: GENERATE_COOKIE
: configura a Media CDN para retornar umEdge-Cache-Cookie
com a resposta do manifesto principal.copiedParameters.PathGlobs
: configura o Media CDN para copiar oPathGlobs
do token de curta duração para o de longa duração. Para usar a autenticação de dois tokens, é preciso usarcopiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Para mais informações, consultecopiedParameters
.Opcional:
copiedParameters.SessionID
: configura o Media CDN para copiar oSessionID
do token de curta duração para o de longa duração
Quando a ação GENERATE_COOKIE
é aplicada, a Media CDN
retorna um cabeçalho Set-Cookie
semelhante ao seguinte com a resposta do manifesto
principal:
Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
Parâmetros de consulta do URL
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
tokenQueryParameter: LONG_TOKEN_NAME
Substitua:
LONG_KEYSET_NAME
: o nome do seu conjunto de chaves de longa duraçãoTOKEN_EXPIRATION_TIME
: o prazo de validade do token de longa duração. Por exemplo,86400s
para um prazo de validade de um dia.
Este exemplo de código implementa as seguintes mudanças:
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS
: configura a CDN de mídia para manipular o manifesto principal do HLS anexando um token de longa duração a cada URI presente.copiedParameters.PathGlobs
: configura o Media CDN para copiar oPathGlobs
do token de curta duração para o de longa duração. Para usar a autenticação de dois tokens, use um dos seguintes métodos:copiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Para mais informações, consultecopiedParameters
.Opcional:
copiedParameters.SessionID
: configura o Media CDN para copiar oSessionID
do token de curta duração para o de longa duração.Opcional:
LONG_TOKEN_NAME
: o parâmetro de consulta em que o token longo gerado será colocado. O valor padrão éedge-cache-token
. Veja mais informações emtokenQueryParameter
.
O arquivo de manifesto a seguir mostra a ação
GENERATE_TOKEN_HLS_COOKIELESS
aplicada:
#EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1280000,AVERAGE-BANDWIDTH=1000000 http://example.com/HLS_PRIMARY_PLAYLIST.m3u8?LONG_TOKEN_NAME=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
A Media CDN verifica o token de curta duração e gera e armazena o token de longa duração no parâmetro de consulta LONG_TOKEN_NAME
.
Configurar as rotas de playlists de mídia e segmentos para exigir tokens de longa duração
Configure as rotas de playlists de mídia e segmentos para exigir tokens de longa duração.
Console
Cookies
Crie uma regra de rota para a playlist de mídia e a rota de segmentos:
- Na página Editar serviço de cache de borda, na seção Roteamento, clique na regra de host que tem a rota de manifesto principal.
- Clique em Adicionar regra de rota.
- No painel Editar regra de rota, em Prioridade, defina um valor maior que o da rota do manifesto principal, por exemplo,
2
. Valores mais altos indicam prioridade menor. - Em Descrição, forneça uma breve descrição que ajude a identificar a regra na lista.
Defina os seguintes campos conforme sugerido:
- Selecione uma origem: igual à regra de rota do manifesto principal
- Adicionar uma condição de correspondência: igual à regra de rota do manifesto principal
- Tipo: Política de CDN
- Modo de solicitação assinada: Exigir tokens
- Selecionar um conjunto de chaves: igual aos tokens de longa duração
- Algoritmo de assinatura: igual à regra de rota do manifesto principal.
Expanda Autenticação de dois tokens.
Em Ação de assinatura, mantenha o valor padrão Nenhuma.
Clique em Concluído e depois em Salvar.
Parâmetros de consulta do URL
Crie uma regra de rota para a playlist de mídia.
- Na página Editar serviço de cache de borda, na seção Roteamento, clique na regra de host que tem a rota de manifesto principal.
- Clique em Adicionar regra de rota.
- No painel Editar regra de rota, em Prioridade, defina um valor maior que o da rota do manifesto principal. Por exemplo,
2
. Valores mais altos indicam prioridade menor. - Em Descrição, forneça uma breve descrição que ajude a identificar a regra na lista.
Defina os seguintes campos conforme sugerido:
- Selecione uma origem: a mesma da regra de rota do manifesto principal
- Adicione uma condição de correspondência: igual à regra de rota do manifesto principal.
- Tipo: Política de CDN
- Modo de solicitação assinada: Exigir tokens
- Selecione um conjunto de chaves: igual aos tokens de longa duração.
- Algoritmo de assinatura: o mesmo da regra de rota do manifesto principal
- Parâmetro de consulta do token: igual aos tokens de longa duração.
Expanda Autenticação de dois tokens.
Em Ação de assinatura, selecione Propagar token de longa duração existente.
Essa opção só é ativada depois que o Media CDN verifica se o token de longa duração foi gerado usando o tipo de assinatura por parâmetros de consulta de URL do manifesto HLS (sem cookies).
Em Parâmetro de consulta do token, mantenha o valor padrão,
edge-cache-token
.Clique em Concluído e depois em Salvar.
Crie uma regra de rota para segmentos de mídia.
Essa rota é semelhante à das playlists de mídia, com as seguintes principais diferenças:
- Em Prioridade, defina um valor maior que o da regra de rota da playlist de mídia, por exemplo,
3
. - Em Descrição, forneça uma breve descrição que ajude a identificar a regra na lista.
- Na seção Autenticação com dois tokens, para Ação de assinatura, mantenha o valor padrão Nenhuma.
- Em Prioridade, defina um valor maior que o da regra de rota da playlist de mídia, por exemplo,
gcloud e YAML
Edite o arquivo YAML:
Cookies
Configure a playlist de mídia e os segmentos para exigir cookies de longa duração:
- priority: 2
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Substitua SEGMENTS_ROUTE_DESCRIPTION por uma descrição da rota.
Este exemplo de código implementa as seguintes mudanças:
priority: 2
: a prioridade da rota. Valores mais altos indicam prioridade menor. Como a rota das suas playlists e segmentos de mídia corresponde a qualquer nome de arquivo que termine em.m3u8
, a prioridade da rota precisa ser menor do que a rota criada anteriormente para o manifesto principal.signedRequestMode: REQUIRE_TOKENS
: aplica tokens para playlists de mídia e segmentos de mídia. Se você estiver usando arquivos estáticos de descrição de apresentação de mídia (MPD), os conjuntos de chaves longos e curtos poderão ser diferentes. Se você estiver usando arquivos MPD dinâmicos, os conjuntos de chaves longos e curtos precisarão ser iguais.signedRequestKeyset: LONG_KEYSET_NAME
: o Media CDN usa o conjunto de chaves de longa duração para validar o cookie de longa duração fornecido por um agente do usuário para solicitações de playlist e segmento de mídia.
Parâmetros de consulta do URL
Adicione duas configurações de rota:
Configure as rotas de manifesto de mídia HLS para propagar tokens de longa duração:
- priority: 2 description: "PLAYLIST_ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/**.m3u8" # HLS media playlists routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: LONG_KEYSET_NAME addSignatures: actions: - PROPAGATE_TOKEN_HLS_COOKIELESS
Substitua PLAYLIST_ROUTE_DESCRIPTION por uma descrição da rota.
Este exemplo de código implementa as seguintes mudanças:
priority: 2
: a prioridade da rota. Valores mais altos indicam prioridade menor. Como a rota das suas playlists de mídia corresponde a qualquer nome de arquivo que termine em.m3u8
, a prioridade da rota precisa ser menor do que a rota criada anteriormente para o manifesto principal.signedRequestMode: REQUIRE_TOKENS
: aplica tokens para playlists de mídia e segmentos de mídia. Se você estiver usando arquivos estáticos de descrição de apresentação de mídia (MPD), os conjuntos de chaves longos e curtos poderão ser diferentes. Se você estiver usando arquivos MPD dinâmicos, os conjuntos de chaves longos e curtos precisam ser iguais.signedRequestKeyset: LONG_KEYSET_NAME
: o Media CDN usa o conjunto de chaves de longa duração para validar o cookie de longa duração fornecido por um agente do usuário para solicitações de playlist e segmento de mídia.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: configura a Media CDN para copiar o token de longa duração para URIs de segmento de mídia nas playlists de mídia.
Configure as rotas de segmento para exigir tokens de longa duração:
- priority: 3 description: "SEGMENTS_ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/**.ts" # HLS segments routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: LONG_KEYSET_NAME
Substitua SEGMENTS_ROUTE_DESCRIPTION por uma descrição da rota.
Este exemplo de código implementa as seguintes mudanças:
priority: 3
: a prioridade da rota. Valores mais altos indicam prioridade menor. A prioridade dessa rota precisa ser menor do que a rota criada anteriormente para as playlists de mídia.signedRequestMode: REQUIRE_TOKENS
: aplica tokens para playlists de mídia e segmentos de mídia.signedRequestKeyset: LONG_KEYSET_NAME
: o Media CDN usa o conjunto de chaves de longa duração para validar o token assinado de longa duração fornecido por um agente do usuário para solicitações de lista de reprodução e segmento de mídia.
Exemplo: arquivo de configuração
O exemplo de código a seguir mostra um arquivo de configuração concluído:
Cookies
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_MASTER_PLAYLIST.m3u8" # HLS primary playlists
- pathTemplateMatch: "/DASH_MANIFESTS.mpd" # DASH manifests
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Parâmetros de consulta do URL
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_PRIMARY_PLAYLIST.m3u8" # HLS primary playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
signedTokenOptions:
tokenQueryParameter: SHORT_TOKEN_NAME
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
tokenQueryParameter: LONG_TOKEN_NAME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "PLAYLIST_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
addSignatures:
actions:
- PROPAGATE_TOKEN_HLS_COOKIELESS
- priority: 3
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.ts" # HLS segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Gerar tokens de curta duração no servidor de aplicativos
Para informações sobre como gerar tokens, consulte Gerar tokens.
Aplicar proteções de conteúdo de defesa em profundidade
Como prática recomendada, ative a autenticação de origem da seguinte maneira:
Para o Cloud Storage, use permissões do Identity and Access Management com buckets privados do Cloud Storage.
Para provedores de armazenamento compatíveis com a AWS, use a assinatura da AWS versão 4. O uso da autenticação de origem bloqueia solicitações que tentam burlar o Media CDN e acessar sua origem diretamente.