Para aplicar la autenticación de token doble cuando los usuarios acceden a un recurso de transmisión, debes configurar rutas separadas. 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 transmisión HTTP en vivo (HLS) o transmisión dinámica adaptable a través de HTTP (DASH). Para obtener más información sobre las rutas en Media CDN, consulta Configura las rutas de servicio.
En el caso de las transmisiones HLS, Media CDN admite la autenticación de token doble a través de cookies y parámetros de consulta de URL (sin cookies). En el caso de las transmisiones DASH, Media CDN solo admite la autenticación de token doble basada en cookies.
En esta página, se describe cómo configurar las rutas de Media CDN para ayudar a proteger el contenido mediante la autenticación de dos tokens.
Antes de comenzar
Puedes hacer lo siguiente:
Para los tokens de corta duración, elige uno de los siguientes algoritmos de firma:
- Firmas Ed25519
- Códigos de autenticación de mensajes (HMAC) basados en hash de clave simétrica
Puedes habilitar algoritmos de firma HMAC simétricos solo para las rutas configuradas para generar tokens nuevos de larga duración. Te recomendamos que uses firmas Ed25519 para obtener un rendimiento y una seguridad óptimos, y HMAC de clave simétrica solo cuando sea necesario para la compatibilidad con otras CDN.
Incluye las claves requeridas en un recurso
EdgeCacheKeyset
.Los tokens deben firmarse o verificarse con claves en un recurso
EdgeCacheKeyset
. El conjunto de claves debe incluir las claves correctas para el algoritmo de firma seleccionado. En la siguiente tabla, se describen cada uno de los algoritmos de firma y sus claves requeridas.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 los tokens de corta duración y otro para los 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.
Para los tokens de larga duración, elige uno de los siguientes formatos de token:
- Cookies
- Parámetros de consulta de URL
Configura tokens de corta duración
Según el 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
Reemplaza
SSL_KEY_NAME
por un nombre de 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:
Console
En la consola de Google Cloud, ve a la página Media CDN.
Haz clic en la pestaña Conjuntos de claves.
Haz clic en
Crear conjunto de claves.En Nombre, ingresa un nombre de conjunto de claves único.
En Descripción, ingresa una descripción para tu conjunto de claves (opcional).
Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor para tu conjunto de claves.
Haz clic en Agregar clave pública y, luego, haz lo siguiente:
- En ID, ingresa un ID alfanumérico.
- Selecciona Ingresar el valor y, luego, especifica el valor con codificación base64 de tu 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'
Reemplaza lo siguiente:
SHORT_KEYSET_NAME
: Es un nombre de conjunto de claves único, por ejemplo,prod-vod-keyset
.SSL_PUBLIC_KEY_NAME
: Es el nombre de tu clave pública SSL.SSL_PUBLIC_KEY_VALUE
: El valor de tu clave pública SSL
Para revisar las claves asociadas con el conjunto de claves, usa el comando
gcloud edge-cache keysets describe
.gcloud edge-cache keysets describe prod-vod-keyset
El resultado es similar a este:
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 nunca usaste Secret Manager, configura Secret Manager.
Agrega una versión del Secret en formato binario.
Otorga el rol de acceso a Secret Manager (
roles/secretmanager.secretAccessor
) a la cuenta de servicio de Media CDN:Console
En la consola de Google Cloud, ve a la página Secret Manager.
Selecciona la casilla de verificación junto al nombre del Secret.
Haz clic en Mostrar panel de información.
En el panel de información, haz clic en Agregar principal.
En Principales nuevas, ingresa la cuenta de servicio de Media CDN en este formato:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Reemplaza
PROJECT_NUMBER
por el número de proyecto.En Selecciona una función, selecciona Secret Manager y, luego, Administrador y descriptor de acceso a secretos.
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"
Reemplaza lo siguiente:
PROJECT_NUMBER
: Es el número de tu proyecto.SECRET_ID
: El ID del secreto
Accede a tus versiones de secretos y copia las rutas de acceso de los secretos, incluidos los números de versión.
Crea un nuevo conjunto de claves con los secretos compartidos en una clave compartida de validación:
Console
En la consola de Google Cloud, ve a la página Media CDN.
Haz clic en la pestaña Conjuntos de claves.
Haz clic en
Crear conjunto de claves.En Nombre, ingresa un nombre de conjunto de claves único.
En Descripción, ingresa una descripción para tu conjunto de claves (opcional).
Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor para tu conjunto de claves.
Para especificar una clave compartida de validación, haz clic en Agregar clave compartida de validación y, luego, haz lo siguiente:
En Secreto, selecciona un secreto de la lista, ingresa un secreto manualmente especificando su ID de recurso o crea un secreto nuevo y, luego, selecciónalo.
En Versión del Secret, selecciona una versión de la lista o crea una nueva versión del Secret y, luego, 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'
Reemplaza lo siguiente:
SHORT_KEYSET_NAME
: Es un nombre único para el conjunto de claves, por ejemplo,prod-vod-keyset
.PROJECT_NUMBER
: El ID de tu proyectoSECRET_ID
: Es el ID del recurso del secreto.KEY_VERSION
: Es la versión del secreto que deseas usar.
Configura tokens de larga duración
El alcance de las claves administradas por Google se define por conjunto de claves. Esto significa que dos conjuntos de claves diferentes tienen claves administradas por Google diferentes. Las claves administradas por Google se rotan con frecuencia.
Configura tokens de larga duración con una de las siguientes opciones:
Console
En la sección Claves, selecciona Usar la clave administrada por Google para la autenticación de token doble.
gcloud y YAML
Usa una de las siguientes opciones:
Crea una clave de firma administrada por Google:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
Reemplaza
LONG_KEYSET_NAME
por un nombre de clave, por ejemplo,prod-vod-keyset-long
.Modifica un conjunto de claves existente:
Exporta el 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 tus herramientas de administración de configuración, edita la configuración del conjunto de claves para que se vea similar al siguiente ejemplo:
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 tokens de larga duración. El conjunto de claves puede tener como máximo tres claves públicas. En la práctica, esto significa que el conjunto de claves puede tener dos claves administradas por el usuario y una clave administrada por Google.
Media CDN siempre usa la clave administrada por Google para generar tokens. Las claves administradas 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 playlists y segmentos multimedia mediante solicitudes firmadas que generan tus propias claves privadas.
Configura el intercambio de tokens
En esta sección, se muestra cómo configurar el intercambio de tokens mediante la creación de 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 para cada parte de una solicitud de contenido multimedia.
Configura 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.
Console
Habilita la autenticación de tokens de corta duración en la ruta del manifiesto principal:
En la consola de Google Cloud, 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 navegar a la sección Enrutamiento, haz clic en Siguiente.
Expande la regla de host a la que deseas agregar la regla de ruta del manifiesto principal.
Haz clic en Add route rule.
Como alternativa, para editar una regla de ruta, haz clic en
Editar en la fila correspondiente.En el panel Editar regla de ruta, en Prioridad, establece un valor, por ejemplo,
1
.En Descripción, proporciona una descripción breve que pueda ayudar a identificar la regla en la lista de reglas.
En la sección Coincidencia, haz clic en Agregar una condición de coincidencia. Luego, haz lo siguiente:
- En Tipo de coincidencia, selecciona Coincidencia con la plantilla de ruta.
- Para Coincidencia de ruta, especifica los nombres o las plantillas de ruta para la playlist principal de HLS (M3U8) o el archivo de manifiesto de DASH (MPD). Para obtener más información, consulta Coincidencia de rutas.
Haz clic en Configuración avanzada.
En la sección Route action, haz clic en Add an item.
En Tipo, selecciona CDN policy.
En la sección Solicitud firmada, en Modo de solicitud firmada, selecciona Solicitar tokens.
En la sección Conjunto de claves de solicitud firmada, haz lo siguiente:
Para especificar el conjunto de claves de los tokens de corta duración, haz clic en Seleccionar un conjunto de claves y elige tu conjunto de claves de tokens de corta duración.
Como alternativa, para crear un nuevo conjunto de claves que tenga las claves que necesitas, haz clic en Crear nuevo conjunto de claves. Luego, selecciónala.
En Algoritmo de firma, selecciona Ed25519 con claves públicas.
En Parámetro de consulta de token, conserva el valor predeterminado,
edge-cache-token
.Como alternativa, si planeas usar parámetros de consulta de URL de manifiesto de HLS en lugar de cookies para la autenticación, especifica el parámetro en el que se almacenarán los tokens de solicitud.
Para Max time to live, especifica, en segundos, la vida útil máxima de los tokens de solicitud entrantes.
Para guardar los cambios en la sección Acción de ruta, haz clic en Listo.
Para guardar los cambios en la regla de ruta, haz clic en Guardar.
gcloud y YAML
Exporta la configuración de la CDN de Media a un archivo YAML. Usa el comando
gcloud edge-cache services export
.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Reemplaza lo siguiente:
SERVICE_NAME
: el nombre de tu servicio.FILENAME
: Es el nombre de tu archivo YAML.
Para habilitar la autenticación de tokens de corta duración en la regla de ruta del manifiesto principal, especifica una configuración de
signedTokensOptions
en la seccióncdnPolicy
de la ruta del archivo YAML.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
Reemplaza lo siguiente:
ROUTE_NAME
: el nombre de la regla de rutaROUTE_DESCRIPTION
: Es una descripción de la regla de ruta.ORIGIN_NAME
: Es el nombre del origen.MANIFEST_OR_PLAYLIST
: Es el nombre de la playlist principal (M3U8) o del archivo de manifiesto (MPD) de HLS. Para obtener más información, consulta Coincidencia de rutas.SHORT_KEYSET_NAME
: Es el nombre del conjunto de claves que se usará para los tokens de corta duración.SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: El tiempo de vencimiento de las solicitudes firmadas, por ejemplo,600s
. Para obtener más información, consultasignedRequestMaximumExpirationTtl
.- Opcional:
SHORT_TOKEN_NAME
: Es el parámetro de consulta en el que se debe encontrar el token corto. El valor predeterminado esedge-cache-token
. Para obtener más información, consultaSignedTokenOptions
:
Cuando uses HMAC de clave simétrica, en la sección
signedTokenOptions
, agregaallowedSignatureAlgorithms
con su valor comoHMAC_SHA_256
:allowedSignatureAlgorithms: - HMAC_SHA_256
Para actualizar el servicio, importa tu configuración de la CDN de Media desde el archivo YAML. Usa el comando
gcloud edge-cache services import
.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Esto completa el proceso de habilitar la autenticación de token único.
Para configurar la autenticación de dos tokens, continúa con las siguientes secciones.
Configura la regla de ruta del manifiesto principal para generar tokens de larga duración
Configura Media CDN para que genere tokens de larga duración en la ruta de manifiesto principal. Elige las cookies o los parámetros de consulta de URL para generar estos tokens.
Console
Modifica la regla de ruta de manifiesto principal para que Media CDN pueda generar tokens de larga duración en la ruta:
- En la página Editar regla de enrutamiento, haz clic en Configuraciones avanzadas.
- En Tipo, selecciona CDN policy.
- Expande Autenticación de doble token.
- En Acción de firma, selecciona Generar un token de larga duración nuevo.
En Tipo de firma, selecciona una de las siguientes opciones:
- a través de cookies (para transmisiones HLS y DASH): Configura Media CDN para que devuelva un
Edge-Cache-Cookie
con la respuesta del manifiesto principal. - A través de los parámetros de consulta de la URL del manifiesto de HLS (sin cookies): Configura la CDN de Media para manipular el manifiesto principal de HLS agregando un token de larga duración a cada URL.
- a través de cookies (para transmisiones HLS y DASH): Configura Media CDN para que devuelva un
En la sección Genera un token de larga duración nuevo, haz lo siguiente:
Para especificar un conjunto de claves para tokens de larga duración, haz clic en Seleccionar un conjunto de claves y elige tu conjunto de claves de token de larga duración.
Como alternativa, haz clic en Crear nuevo conjunto de claves para crear uno nuevo que tenga las claves que necesitas. Luego, selecciónala.
Para TTL del token, especifica, en segundos, la vida útil máxima del token de larga duración.
En Tipo de firma, si seleccionaste la opción a través de cookies, en la sección Parámetros copiados, selecciona los parámetros que deseas que Media CDN copie del token de corta duración al token de larga duración. Para usar la autenticación de token doble, debes seleccionar
PathGlobs
(o cualquiera de sus alias,acl
opaths
) oURLPrefix
.Si seleccionaste la opción a través de los parámetros de consulta de la URL del manifiesto de HLS, para el Parámetro de consulta de token, conserva el valor predeterminado,
edge-cache-token
.
Para guardar los cambios en la sección Acción de ruta, haz clic en Listo.
Para guardar los cambios en la regla de ruta, haz clic en Guardar.
Aparecerá un mensaje en el que se te preguntará si deseas crear las rutas para las playlists y los segmentos de contenido multimedia de forma automática o manual. Si seleccionas la opción automática, se crea una sola ruta nueva para la firma de cookies y dos rutas para la firma sin cookies. Si seleccionas la opción manual, continúa con 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
Reemplaza lo siguiente:
LONG_KEYSET_NAME
: El nombre de tu conjunto de claves de token de larga duraciónTOKEN_EXPIRATION_TIME
: Es el tiempo 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_COOKIE
: Configura Media CDN para que devuelva unEdge-Cache-Cookie
con la respuesta del manifiesto principal.copiedParameters.PathGlobs
: Configura Media CDN para que copie elPathGlobs
del token de corta duración al token de larga duración. Para usar la autenticación de doble token, 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 muestra 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
Reemplaza lo siguiente:
LONG_KEYSET_NAME
: Es el nombre de tu conjunto de claves de larga duración.TOKEN_EXPIRATION_TIME
: Es la fecha 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 agregando un token de larga duración a cada URI presente.copiedParameters.PathGlobs
: Configura Media CDN para que copie elPathGlobs
del token de corta duración al token de larga duración. Para usar la autenticación de doble token, debes usarcopiedParameters.PathGlobs
ocopiedParameters.URLPrefix
. Para obtener más información, consultacopiedParameters
.Opcional:
copiedParameters.SessionID
: Configura Media CDN para que copie elSessionID
del token de corta duración al token de larga duración.Opcional:
LONG_TOKEN_NAME
: Es 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, luego, genera y almacena el token de larga duración en el parámetro de consulta LONG_TOKEN_NAME
.
Configura las rutas de las playlists y los segmentos de medios para que requieran tokens de larga duración
Configura las rutas de las playlists y los segmentos de medios para que requieran tokens de larga duración.
Console
Cookies
Crea una regla de enrutamiento para la ruta de las playlists y los segmentos de medios:
- En la página Editar servicio de caché de Edge, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta de manifiesto principal.
- Haz clic en Add route rule.
- En el panel Editar regla de ruta, en Prioridad, establece un valor que sea superior al de la ruta del manifiesto principal, por ejemplo,
2
. Los valores más altos indican una prioridad más baja. - En Descripción, proporciona una descripción breve que pueda ayudar a identificar la regla en la lista de reglas.
Configura los siguientes campos como se sugiere:
- Selecciona un origen: Igual que para la regla de ruta de manifiesto principal.
- Agrega una condición de concordancia: Igual que para la regla de ruta del manifiesto principal.
- Tipo: Política de CDN
- Modo de solicitud firmada: Solicita tokens
- Selecciona un conjunto de claves: Igual que para los tokens de larga duración
- Algoritmo de firma: Es el mismo que el de la regla de ruta de manifiesto principal.
Expande Autenticación de doble token.
En Acción de firma, conserva el valor predeterminado None.
Haz clic en Listo y, luego, en Guardar.
Parámetros de consulta de URL
Crea una regla de enrutamiento para la playlist de contenido multimedia.
- En la página Editar servicio de caché de Edge, en la sección Enrutamiento, haz clic en la regla de host que tiene la ruta de manifiesto principal.
- Haz clic en Add route rule.
- En el panel Editar regla de enrutamiento, en Prioridad, establece 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, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.
Configura los siguientes campos como se sugiere:
- Seleccionar un origen: Es igual que para la regla de ruta del manifiesto principal.
- Agrega una condición de concordancia: Es igual que para la regla de ruta del manifiesto principal.
- Tipo: Política de CDN
- Modo de solicitud firmada: Solicita tokens
- Selecciona un conjunto de claves: Es lo mismo que para los tokens de larga duración.
- Algoritmo de firma: Es el mismo que el de la regla de ruta del manifiesto principal.
- Parámetro de consulta de token: Es el mismo que para los tokens de larga duración.
Expande Autenticación de doble token.
En Acción de firma, selecciona Propaga un token de larga duración existente.
Esta opción se habilita solo después de que Media CDN verifica que el token de larga duración se generó con el tipo de firma a través del parámetro de consulta de la URL del manifiesto de HLS (sin cookies).
En Parámetro de consulta de token, conserva el valor predeterminado,
edge-cache-token
.Haz clic en Listo y, luego, en Guardar.
Crea una regla de enrutamiento para segmentos de contenido multimedia.
Esta ruta es similar a la de las playlists de contenido multimedia, con las siguientes diferencias clave:
- En Prioridad, establece un valor mayor que el de la regla de ruta de reproducción multimedia, por ejemplo,
3
. - En Descripción, proporciona una breve descripción que pueda ayudar a identificar la regla en la lista de reglas.
- En la sección Autenticación de token doble, en Acción de firma, conserva el valor predeterminado None.
- En Prioridad, establece un valor mayor que el de la regla de ruta de reproducción multimedia, por ejemplo,
gcloud y YAML
Edita el archivo YAML:
Cookies
Configura la playlist y los segmentos de contenido multimedia 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
Reemplaza 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. Debido a que la ruta de acceso de tus playlists y segmentos multimedia coincide con cualquier nombre de archivo que termine en.m3u8
, la prioridad de la ruta debe ser menor que la que creaste anteriormente para el manifiesto principal.signedRequestMode: REQUIRE_TOKENS
: Aplica tokens para las playlists y los segmentos de medios. Si usas archivos de descripción de presentación de medios (MPD) estáticos, es posible que los conjuntos de claves largos y cortos sean 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 que proporciona un usuario-agente para las solicitudes de playlist y segmento de contenido multimedia.
Parámetros de consulta de URL
Agrega dos configuraciones de ruta:
Configura las rutas de manifiesto de contenido 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
Reemplaza 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. Los valores más altos indican una prioridad más baja. Debido a que la ruta de tus playlists multimedia coincide con cualquier nombre de archivo que finaliza en.m3u8
, la prioridad de la ruta debe ser menor que la que creaste anteriormente para el manifiesto principal.signedRequestMode: REQUIRE_TOKENS
: Aplica tokens para las playlists y los segmentos de medios. Si usas archivos de descripción de presentación de medios (MPD) estáticos, es posible que los conjuntos de claves largos y cortos sean 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 que proporciona un usuario-agente para las solicitudes de playlist y segmento de contenido multimedia.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: Configura Media CDN para que copie el token de larga duración en los URIs de segmentos de contenido multimedia en las playlists multimedia.
Configura las rutas de segmentos 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
Reemplaza 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. Los valores más altos indican una prioridad más baja. La prioridad de esta ruta debe ser inferior a la ruta que creaste anteriormente para las playlists multimedia.signedRequestMode: REQUIRE_TOKENS
: Aplica tokens para las playlists y los segmentos de medios.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN usa el conjunto de claves de larga duración para validar el token firmado de larga duración que proporciona un usuario-agente para las solicitudes de playlist y segmentos multimedia.
Archivo de configuración de ejemplo
En la siguiente muestra 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
Genera tokens de corta duración en tu servidor de aplicaciones
Para obtener información sobre cómo generar tokens, consulta Genera tokens.
Aplica protecciones de contenido de defensa en profundidad
Como práctica recomendada, habilita la autenticación de origen de la siguiente manera:
En el caso de Cloud Storage, usa los permisos de administración de identidades y accesos con buckets privados de Cloud Storage.
Para proveedores de almacenamiento compatibles con AWS, usa la versión 4 de la firma de AWS. El uso de la autenticación de origen bloquea las solicitudes que intentan eludir Media CDN y acceder a tu origen directamente.