Para aplicar la autenticación con dos tokens cuando los usuarios accedan a un recurso de streaming, configura rutas independientes. Una ruta es una configuración que coincide con las solicitudes de Media CDN y dirige el tráfico HTTP a un origen. Media CDN admite rutas para recursos de HTTP Live Streaming (HLS) o de Dynamic Adaptive Streaming over HTTP (DASH). Para obtener más información sobre las rutas de Media CDN, consulta Configurar rutas de servicio.
En el caso de las secuencias HLS, Media CDN admite la autenticación con dos tokens mediante cookies y parámetros de consulta de URL (sin cookies). En el caso de las secuencias DASH, Media CDN solo admite la autenticación con token dual basada en cookies.
En esta página se describe cómo configurar rutas de Media CDN para proteger el contenido mediante la autenticación con dos tokens.
Antes de empezar
Sigue estos pasos:
En el caso de los tokens de corta duración, elige uno de los siguientes algoritmos de firma:
- Firmas Ed25519
- Códigos de autenticación de mensajes basados en hash con clave simétrica (HMACs)
Solo puede habilitar algoritmos de firma HMAC simétricos en las rutas configuradas para generar tokens de larga duración. Te recomendamos que utilices firmas Ed25519 para obtener un rendimiento y una seguridad óptimos, y HMACs de clave simétrica solo cuando sea necesario para que sean compatibles con otras CDNs.
Incluye las claves obligatorias en un recurso
EdgeCacheKeyset
.Los tokens deben firmarse o verificarse con claves de un recurso
EdgeCacheKeyset
. El conjunto de claves debe incluir las claves correctas para el algoritmo de firma seleccionado. En la siguiente tabla se describen los algoritmos de firma y las claves necesarias para cada uno.Algoritmo de firma Claves obligatorias en el conjunto de claves Ed25519 Claves públicas HMAC‑SHA1 Claves compartidas de validación HMAC‑SHA256 Claves compartidas de validación Como práctica recomendada, crea dos conjuntos de claves independientes: uno para tokens de corta duración y otro para tokens de larga duración.
Sin embargo, si usas DASH y archivos de descripción de presentación multimedia (MPD) dinámicos, debes usar el mismo conjunto de claves para los tokens de larga y corta duración.
En el caso de los tokens de larga duración, elige uno de los siguientes formatos:
- Cookies
- Parámetros de consulta de URL
Configurar tokens de corta duración
En función del algoritmo de firma que quieras usar, configura tokens de corta duración con una de las siguientes opciones.
Firma Ed25519
Genera una clave privada:
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Sustituye
SSL_KEY_NAME
por el nombre de una clave.Genera una clave pública a partir de la clave 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])"
Crea un nuevo conjunto de claves con una sola clave pública:
Consola
En la Google Cloud consola, ve a la página Media CDN.
Haz clic en la pestaña Conjuntos de claves.
Haz clic en
Crear conjunto de claves.En Name (Nombre), introduce un nombre único para el conjunto de claves.
Opcional: En Descripción, escribe una descripción del conjunto de claves.
Opcional: Haz clic en Añadir etiqueta y, a continuación, introduce uno o varios pares clave-valor para tu conjunto de claves.
Haz clic en Añadir clave pública y, a continuación, haz lo siguiente:
- En ID, introduce un ID alfanumérico.
- Seleccione Introducir el valor y, a continuación, especifique el valor codificado en base64 de su clave pública Ed25519.
Haz clic en Crear conjunto de claves.
gcloud
Usa el 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'
Haz los cambios siguientes:
SHORT_KEYSET_NAME
: nombre de un conjunto de claves único; por ejemplo,prod-vod-keyset
SSL_PUBLIC_KEY_NAME
: el nombre de tu clave pública SSLSSL_PUBLIC_KEY_VALUE
: el valor de tu clave pública SSL
Para revisar las claves asociadas al conjunto de claves, usa el comando
gcloud edge-cache keysets describe
.gcloud edge-cache keysets describe prod-vod-keyset
El resultado debería ser similar al siguiente:
name: prod-vod-keyset description: "Keyset for prod.example.com" publicKeys: - id: "key-20200918" value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w" - id: "key-20200808" value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
Terraform
HMAC de clave simétrica
Si no has usado Secret Manager antes, configúralo.
Añade una versión del secreto en formato binario.
Asigna el rol de acceso a Secret Manager (
roles/secretmanager.secretAccessor
) a la cuenta de servicio de Media CDN:Consola
En la Google Cloud consola, ve a la página Secret Manager.
Seleccione la casilla situada junto al nombre del secreto.
Haz clic en Mostrar panel de información.
En el panel de información, haz clic en Añadir principal.
En Principales nuevos, introduce la cuenta de servicio de Media CDN con este formato:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Sustituye
PROJECT_NUMBER
por el número de tu proyecto.En Selecciona un rol, elige Secret Manager y, a continuación, Permiso para acceder a los recursos de Secret Manager.
gcloud
Usa el 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"
Haz los cambios siguientes:
PROJECT_NUMBER
: tu número de proyectoSECRET_ID
: el ID del secreto
Accede a tus versiones de secretos y copia las rutas de los secretos, incluidos los números de versión.
Crea un nuevo conjunto de claves con los secretos compartidos en una llave compartida de validación:
Consola
En la Google Cloud consola, ve a la página Media CDN.
Haz clic en la pestaña Conjuntos de claves.
Haz clic en
Crear conjunto de claves.En Name (Nombre), introduce un nombre único para el conjunto de claves.
Opcional: En Descripción, escribe una descripción del conjunto de claves.
Opcional: Haz clic en Añadir etiqueta y, a continuación, introduce uno o varios pares clave-valor para tu conjunto de claves.
Para especificar una clave compartida de validación, haz clic en Añadir clave compartida de validación y, a continuación, sigue estos pasos:
En Secreto, selecciona un secreto de la lista, introduce un secreto manualmente especificando su ID de recurso o crea un secreto y, a continuación, selecciónalo.
En Versión secreta, selecciona una versión de la lista o crea una versión secreta y, a continuación, selecciónala.
Haz clic en Crear conjunto de claves.
gcloud
Usa el 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'
Haz los cambios siguientes:
SHORT_KEYSET_NAME
: un nombre único para el conjunto de claves (por ejemplo,prod-vod-keyset
).PROJECT_NUMBER
: tu ID de proyectoSECRET_ID
: el ID de recurso del secretoKEY_VERSION
: la versión del secreto que quieres usar
Configurar tokens de larga duración
Google-owned and managed keys se definen por conjunto de claves. Esto significa que dos conjuntos de claves diferentes tienen diferentesGoogle-owned and managed keys. Google-owned and managed keys se actualizan periódicamente.
Configura tokens de larga duración con una de las siguientes opciones:
Consola
En la sección Claves, selecciona Usar Google-owned and managed key para la autenticación con dos tokens.
gcloud y YAML
Usa una de las siguientes opciones:
Crea una clave de firma gestionada por Google:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
Sustituye
LONG_KEYSET_NAME
por un nombre de clave (por ejemplo,prod-vod-keyset-long
).Para modificar un conjunto de claves, sigue estos pasos:
Exporta tu conjunto de claves a un archivo YAML. Usa el comando
gcloud edge-cache keysets export
.gcloud edge-cache keysets export LONG_KEYSET_NAME \ --destination=prod-vod-keyset-long.yaml
En un editor de texto o en tu herramienta de gestión de configuración, edita la configuración del conjunto de claves para que sea similar a la siguiente:
name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME publicKeys: - id: some-key value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd - id: google-managed-key managed: true
Importa el conjunto de claves editado. Usa el comando
gcloud edge-cache keysets import
:gcloud edge-cache keysets import LONG_KEYSET_NAME \ --source=prod-vod-keyset-long.yaml
Puedes incluir claves públicas adicionales en el conjunto de claves de token de larga duración. El conjunto de claves puede tener un máximo de tres claves públicas. En la práctica, esto significa que el conjunto de claves puede tener dos claves gestionadas por el usuario y unaGoogle-owned and managed key.
Media CDN siempre usa el Google-owned and managed key para generar tokens. Las claves gestionadas por el usuario solo se pueden usar para la verificación.
Incluir claves públicas adicionales es útil para permitir que tu aplicación de reproductor acceda a listas de reproducción multimedia y segmentos multimedia mediante solicitudes firmadas que se generen con tus propias claves privadas.
Configurar el intercambio de tokens
En esta sección se muestra cómo configurar el intercambio de tokens creando varias rutas. Una ruta te permite optimizar el comportamiento en función del tipo de contenido, los atributos del cliente y tus requisitos de actualización. En los siguientes ejemplos, usamos rutas para configurar el intercambio de tokens de cada parte de una solicitud multimedia.
Configurar la ruta del manifiesto principal para que requiera tokens de corta duración
Configura Media CDN para que requiera tokens de corta duración en la ruta del manifiesto principal.
Consola
Habilita la autenticación con tokens de corta duración en la ruta del manifiesto principal:
En la Google Cloud consola, ve a la página Media CDN.
Para abrir la página Detalles de un servicio, haz clic en su nombre.
Para cambiar al modo de edición, haz clic en el botón Editar.
Para ir a la sección Enrutamiento, haz clic en Siguiente.
Despliega la regla de host a la que quieras añadir la regla de ruta del archivo de manifiesto principal.
Haz clic en Añadir regla de ruta.
También puedes editar una regla de ruta haciendo clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, en Prioridad, asigna un valor; por ejemplo,
1
.En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
En la sección Coincidencia, haz clic en Añadir una condición de coincidencia. A continuación, haz lo siguiente:
- En Tipo de coincidencia, selecciona Coincidencia de plantilla de ruta.
- En Coincidencia de ruta, especifique los nombres o las plantillas de ruta de la lista de reproducción principal HLS (M3U8) o del archivo de manifiesto DASH (MPD). Para obtener más información, consulta Coincidencia de rutas.
Haz clic en Configuraciones avanzadas.
En la sección Acción de ruta, haz clic en Añadir un elemento.
En Type (Tipo), selecciona CDN policy (Política de CDN).
En la sección Solicitud firmada, en Modo de solicitud firmada, selecciona Requerir tokens.
En la sección Conjunto de claves de solicitud firmada, haga lo siguiente:
Para especificar el conjunto de claves de los tokens de corta duración, haz clic en Seleccionar un conjunto de claves y selecciona el conjunto de claves de token de corta duración.
También puedes crear un conjunto de claves que tenga las claves que necesites haciendo clic en Crear conjunto de claves. A continuación, selecciónala.
En Algoritmo de firma, selecciona Ed25519 con claves públicas.
En Parámetro de consulta de token, mantén el valor predeterminado,
edge-cache-token
.Si tienes pensado usar parámetros de consulta de URL de manifiesto HLS en lugar de cookies para la autenticación, especifica el parámetro en el que se almacenarán los tokens de solicitud.
En Tiempo de vida máximo, especifica, en segundos, el tiempo de vida máximo de los tokens de solicitud entrantes.
Para guardar los cambios en la sección Acción de ruta, haz clic en Hecho.
Para guardar los cambios en la regla de ruta, haz clic en Guardar.
gcloud y YAML
Exporta tu configuración de Media CDN a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Haz los cambios siguientes:
SERVICE_NAME
: el nombre de tu servicioFILENAME
: el nombre del archivo YAML
Para habilitar la autenticación con tokens de corta duración en la regla de ruta del manifiesto principal, especifica una configuración
signedTokensOptions
en la seccióncdnPolicy
del archivo YAML de la ruta.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
Haz los cambios siguientes:
ROUTE_NAME
: el nombre de la regla de rutaROUTE_DESCRIPTION
: descripción de la regla de rutaORIGIN_NAME
: nombre del origenMANIFEST_OR_PLAYLIST
: el nombre de la lista de reproducción principal de HLS (M3U8) o del archivo de manifiesto de DASH (MPD). Para obtener más información, consulta Coincidencia de rutas.SHORT_KEYSET_NAME
: nombre del conjunto de claves que se va a usar para los tokens de corta duraciónSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: tiempo de vencimiento de las solicitudes firmadas. Por ejemplo,600s
. Para obtener más información, consultasignedRequestMaximumExpirationTtl
.- Opcional:
SHORT_TOKEN_NAME
: el parámetro de consulta en el que se encuentra el token corto. El valor predeterminado esedge-cache-token
. Para obtener más información, consultaSignedTokenOptions
.
Cuando se usan HMACs de clave simétrica, en la sección
signedTokenOptions
, añadeallowedSignatureAlgorithms
con su valor comoHMAC_SHA_256
:allowedSignatureAlgorithms: - HMAC_SHA_256
Para actualizar el servicio, importa tu configuración de Media CDN desde el archivo YAML. Usa el comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
De esta forma, se completa el proceso para habilitar la autenticación con un solo token.
Para configurar la autenticación con dos tokens, ve a las secciones siguientes.
Configurar la regla de ruta del manifiesto principal para generar tokens de larga duración
Configura Media CDN para generar tokens de larga duración en la ruta del manifiesto principal. Elige entre cookies o parámetros de consulta de URL para generar estos tokens.
Consola
Modifica la regla de ruta del manifiesto principal para que Media CDN pueda generar tokens de larga duración en la ruta:
- En la página Editar regla de ruta, haz clic en Configuraciones avanzadas.
- En Type (Tipo), selecciona CDN policy (Política de CDN).
- Despliega Autenticación con dos tokens.
- En Acción de firma, selecciona Generar token de larga duración.
En Tipo de firma, selecciona una de las siguientes opciones:
- A través de cookies (para streaming HLS y DASH): configura Media CDN para que devuelva un
Edge-Cache-Cookie
con la respuesta del manifiesto principal. - Mediante parámetros de consulta de URL de manifiesto HLS (sin cookies): configura Media CDN para manipular el manifiesto principal HLS añadiendo un token de larga duración a cada URL.
- A través de cookies (para streaming HLS y DASH): configura Media CDN para que devuelva un
En la sección Generar token de larga duración, haga lo siguiente:
Para especificar un conjunto de claves para tokens de larga duración, haz clic en Seleccionar un conjunto de claves y selecciona tu conjunto de claves de token de larga duración.
También puedes hacer clic en Crear conjunto de claves para crear un conjunto de claves que tenga las claves que necesites. A continuación, selecciónala.
En TTL de token, especifica en segundos el tiempo de vida máximo del token de larga duración.
En Tipo de firma, si ha seleccionado la opción mediante cookies, en la sección Parámetros copiados, seleccione los parámetros que quiera que Media CDN copie del token de corta duración al token de larga duración. Para usar la autenticación con dos tokens, debes seleccionar
PathGlobs
(o cualquiera de sus alias,acl
opaths
) oURLPrefix
.Si ha seleccionado la opción a través de los parámetros de consulta de URL del manifiesto HLS, conserve el valor predeterminado en Parámetro de consulta de token:
edge-cache-token
.
Para guardar los cambios en la sección Acción de ruta, haz clic en Hecho.
Para guardar los cambios en la regla de ruta, haz clic en Guardar.
Aparecerá un mensaje en el que se te preguntará si quieres crear las rutas de las listas de reproducción multimedia y los segmentos de forma automática o manual. Si selecciona la opción automática, se creará una ruta para la firma de cookies y dos rutas para la firma sin cookies. Si seleccionas la opción manual, ve a la siguiente sección.
gcloud y YAML
Modifica la sección addSignatures
de la regla de ruta del manifiesto principal para que Media CDN pueda generar tokens de larga duración en la ruta:
Cookies
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
Haz los cambios siguientes:
LONG_KEYSET_NAME
: el nombre de tu conjunto de claves de token de larga duraciónTOKEN_EXPIRATION_TIME
: la hora de vencimiento del token de larga duración. Por ejemplo,86400s
para un plazo de un día.
En este ejemplo de código se implementan los siguientes cambios:
addSignatures.actions: GENERATE_COOKIE
: configura Media CDN para que devuelva unEdge-Cache-Cookie
con la respuesta del manifiesto principal.copiedParameters.PathGlobs
: configura Media CDN para copiar elPathGlobs
del token de corta duración al token de larga duración. Para usar la autenticación con dos tokens, debes usarcopiedParameters.PathGlobs
ocopiedParameters.URLPrefix
. Para obtener más información, consultacopiedParameters
.Opcional:
copiedParameters.SessionID
: configura Media CDN para copiar elSessionID
del token de corta duración al token de larga duración.
Cuando se aplica la acción GENERATE_COOKIE
, Media CDN devuelve un encabezado Set-Cookie
similar al siguiente con la respuesta del manifiesto principal:
Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
Parámetros de consulta de URL
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
tokenQueryParameter: LONG_TOKEN_NAME
Haz los cambios siguientes:
LONG_KEYSET_NAME
: el nombre de tu conjunto de claves de larga duraciónTOKEN_EXPIRATION_TIME
: la hora de vencimiento del token de larga duración. Por ejemplo,86400s
para un tiempo de vencimiento de un día.
En este ejemplo de código se implementan los siguientes cambios:
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS
: configura Media CDN para manipular el manifiesto principal de HLS añadiendo un token de larga duración a cada URI presente.copiedParameters.PathGlobs
: configura Media CDN para copiar elPathGlobs
del token de corta duración al token de larga duración. Para usar la autenticación con dos tokens, debes usar uno de los siguientes métodos:copiedParameters.PathGlobs
ocopiedParameters.URLPrefix
. Para obtener más información, consultacopiedParameters
.Opcional:
copiedParameters.SessionID
: configura Media CDN para copiar elSessionID
del token de corta duración al token de larga duración.Opcional:
LONG_TOKEN_NAME
: el parámetro de consulta en el que se debe colocar el token largo generado. El valor predeterminado esedge-cache-token
. Para obtener más información, consultatokenQueryParameter
.
En el siguiente archivo de manifiesto se muestra la acción 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
Media CDN verifica el token de corta duración y, a continuación, genera y almacena el token de larga duración en el parámetro de consulta LONG_TOKEN_NAME
.
Configurar las rutas de la lista de reproducción multimedia y de los segmentos para que requieran tokens de larga duración
Configura las rutas de la lista de reproducción multimedia y de los segmentos para que requieran tokens de larga duración.
Consola
Cookies
Crea una regla de ruta para la ruta de la lista de reproducción multimedia y de los segmentos:
- En la página Editar servicio de caché perimetral, en la sección Enrutamiento, haga clic en la regla de host que tenga la ruta del manifiesto principal.
- Haz clic en Añadir regla de ruta.
- En el panel Editar regla de ruta, en Prioridad, asigna un valor que sea mayor que el de la ruta del manifiesto principal (por ejemplo,
2
). Los valores más altos indican una prioridad más baja. - En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
Define los siguientes campos como se indica:
- Seleccione un origen: igual que para la regla de ruta del manifiesto principal
- Añadir una condición de coincidencia: igual que en la regla de ruta del archivo de manifiesto principal
- Tipo: Política de CDN
- Modo de solicitud firmada: requerir tokens
- Selecciona un conjunto de claves: igual que con los tokens de larga duración
- Algoritmo de firma: igual que en la regla de ruta del manifiesto principal
Despliega Autenticación con dos tokens.
En Acción de firma, mantenga el valor predeterminado Ninguna.
Haz clic en Hecho y, a continuación, en Guardar.
Parámetros de consulta de URL
Crea una regla de ruta para la lista de reproducción multimedia.
- En la página Editar servicio de caché perimetral, en la sección Enrutamiento, haga clic en la regla de host que tenga la ruta del manifiesto principal.
- Haz clic en Añadir regla de ruta.
- En el panel Editar regla de ruta, en Prioridad, asigna un valor
que sea mayor que el de la ruta del manifiesto principal (por ejemplo,
2
). Los valores más altos indican una prioridad más baja. - En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
Define los siguientes campos como se indica:
- Seleccione un origen: el mismo que para la regla de ruta del archivo de manifiesto principal.
- Añade una condición de coincidencia: igual que en la regla de ruta del archivo de manifiesto principal.
- Tipo: Política de CDN
- Modo de solicitud firmada: requerir tokens
- Selecciona un conjunto de claves: igual que en el caso de los tokens de larga duración.
- Algoritmo de firma: el mismo que el de la regla de ruta del manifiesto principal
- Parámetro de consulta de token: es el mismo que el de los tokens de larga duración.
Despliega Autenticación con dos tokens.
En Acción de firma, selecciona Propagar token de larga duración actual.
Esta opción solo se habilita después de que Media CDN verifique que el token de larga duración se ha generado mediante el tipo de firma vía parámetros de consulta de la URL del archivo de manifiesto HLS (sin cookies).
En Parámetro de consulta de token, mantén el valor predeterminado,
edge-cache-token
.Haz clic en Hecho y, a continuación, en Guardar.
Crea una regla de ruta para segmentos multimedia.
Esta ruta es similar a la de las listas de reproducción multimedia, pero con las siguientes diferencias clave:
- En Prioridad, asigna un valor superior al de la regla de ruta de la lista de reproducción multimedia; por ejemplo,
3
. - En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
- En la sección Autenticación con dos tokens, en Acción de firma, mantén el valor predeterminado Ninguna.
- En Prioridad, asigna un valor superior al de la regla de ruta de la lista de reproducción multimedia; por ejemplo,
gcloud y YAML
Edita el archivo YAML:
Cookies
Configura la lista de reproducción multimedia y los segmentos para que requieran cookies de larga duración:
- 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
Sustituye SEGMENTS_ROUTE_DESCRIPTION por una descripción de la ruta.
En este ejemplo de código se implementan los siguientes cambios:
priority: 2
: la prioridad de la ruta. Los valores más altos indican una prioridad más baja. Como la ruta de tus listas de reproducción multimedia y segmentos multimedia coincide con cualquier nombre de archivo que termine en.m3u8
, la prioridad de la ruta debe ser inferior a la de la ruta que creaste anteriormente para el manifiesto principal.signedRequestMode: REQUIRE_TOKENS
: aplica tokens a listas de reproducción multimedia y segmentos multimedia. Si usas archivos MPD de contenido multimedia estático, los conjuntos de claves largos y cortos pueden ser diferentes. Si usas archivos MPD dinámicos, los conjuntos de claves largos y cortos deben ser los mismos.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN usa el conjunto de claves de larga duración para validar la cookie de larga duración proporcionada por un agente de usuario para las solicitudes de listas de reproducción y segmentos multimedia.
Parámetros de consulta de URL
Añade dos configuraciones de ruta:
Configure las rutas del archivo de manifiesto multimedia HLS para propagar tokens de larga duración:
- 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
Sustituye PLAYLIST_ROUTE_DESCRIPTION por una descripción de la ruta.
En este ejemplo de código se implementan los siguientes cambios:
priority: 2
: la prioridad de la ruta. Cuanto mayor sea el valor, menor será la prioridad. Como la ruta de tus listas de reproducción multimedia coincide con cualquier nombre de archivo que termine en.m3u8
, la prioridad de la ruta debe ser inferior a la que creaste anteriormente para el manifiesto principal.signedRequestMode: REQUIRE_TOKENS
: aplica tokens a listas de reproducción multimedia y segmentos multimedia. Si usas archivos de descripción de presentación de contenido multimedia estático (MPD), los conjuntos de claves largas y cortas pueden ser diferentes. Si usas archivos MPD dinámicos, los conjuntos de claves largos y cortos deben ser los mismos.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN usa el conjunto de claves de larga duración para validar la cookie de larga duración proporcionada por un agente de usuario para las solicitudes de listas de reproducción y segmentos multimedia.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: configura Media CDN para copiar el token de larga duración en los URIs de los segmentos multimedia de las listas de reproducción multimedia.
Configura las rutas de segmento para que requieran tokens de larga duración:
- 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
Sustituye SEGMENTS_ROUTE_DESCRIPTION por una descripción de la ruta.
En este ejemplo de código se implementan los siguientes cambios:
priority: 3
: la prioridad de la ruta. Cuanto mayor sea el valor, menor será la prioridad. La prioridad de esta ruta debe ser inferior a la de la ruta que haya creado anteriormente para las listas de reproducción multimedia.signedRequestMode: REQUIRE_TOKENS
: aplica tokens a listas de reproducción multimedia y segmentos multimedia.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN usa el conjunto de claves de larga duración para validar el token firmado de larga duración proporcionado por un user-agent para las solicitudes de listas de reproducción y segmentos multimedia.
Ejemplo de archivo de configuración
En el siguiente ejemplo de código se muestra un archivo de configuración completo:
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 de 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
Generar tokens de corta duración en el servidor de aplicaciones
Para obtener información sobre cómo generar tokens, consulta Generar tokens.
Aplicar protecciones de contenido de defensa en profundidad
Como práctica recomendada, habilita la autenticación de origen de la siguiente manera:
En Cloud Storage, usa permisos de Gestión de Identidades y Accesos con segmentos de Cloud Storage privados.
En el caso de los proveedores de almacenamiento compatibles con AWS, usa AWS Signature Version 4. La autenticación de origen bloquea las solicitudes que intentan eludir Media CDN y acceder directamente a tu origen.