Usar la autenticación con dos tokens

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:

  1. 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.

  2. 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.

  3. 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

  1. 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.

  2. 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])"
    
  3. Crea un nuevo conjunto de claves con una sola clave pública:

    Consola

    1. En la Google Cloud consola, ve a la página Media CDN.

      Ir a Media CDN

    2. Haz clic en la pestaña Conjuntos de claves.

    3. Haz clic en Crear conjunto de claves.

    4. En Name (Nombre), introduce un nombre único para el conjunto de claves.

    5. Opcional: En Descripción, escribe una descripción del conjunto de claves.

    6. Opcional: Haz clic en Añadir etiqueta y, a continuación, introduce uno o varios pares clave-valor para tu conjunto de claves.

    7. Haz clic en Añadir clave pública y, a continuación, haz lo siguiente:

      1. En ID, introduce un ID alfanumérico.
      2. Seleccione Introducir el valor y, a continuación, especifique el valor codificado en base64 de su clave pública Ed25519.
    8. 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 SSL
    • SSL_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

    resource "google_network_services_edge_cache_keyset" "default" {
      name        = "prod-vod-keyset"
      description = "Keyset for prod.example.com"
      public_key {
        id    = "key-20200918"
        value = "FHsTyFHNmvNpw4o7-rp-M1yqMyBF8vXSBRkZtkQ0RKY" # Update Ed25519 public key
      }
      public_key {
        id    = "key-20200808"
        value = "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA=" # Update Ed25519 public key
      }
    }

HMAC de clave simétrica

  1. Si no has usado Secret Manager antes, configúralo.

  2. Crea un secreto.

  3. Añade una versión del secreto en formato binario.

  4. Asigna el rol de acceso a Secret Manager (roles/secretmanager.secretAccessor) a la cuenta de servicio de Media CDN:

    Consola

    1. En la Google Cloud consola, ve a la página Secret Manager.

      Ir a Secret Manager

    2. Seleccione la casilla situada junto al nombre del secreto.

    3. Haz clic en Mostrar panel de información.

    4. En el panel de información, haz clic en Añadir principal.

    5. 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.

    6. 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 proyecto
    • SECRET_ID: el ID del secreto
  5. Accede a tus versiones de secretos y copia las rutas de los secretos, incluidos los números de versión.

  6. Crea un nuevo conjunto de claves con los secretos compartidos en una llave compartida de validación:

    Consola

    1. En la Google Cloud consola, ve a la página Media CDN.

      Ir a Media CDN

    2. Haz clic en la pestaña Conjuntos de claves.

    3. Haz clic en Crear conjunto de claves.

    4. En Name (Nombre), introduce un nombre único para el conjunto de claves.

    5. Opcional: En Descripción, escribe una descripción del conjunto de claves.

    6. Opcional: Haz clic en Añadir etiqueta y, a continuación, introduce uno o varios pares clave-valor para tu conjunto de claves.

    7. 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:

      1. 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.

      2. En Versión secreta, selecciona una versión de la lista o crea una versión secreta y, a continuación, selecciónala.

    8. 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 proyecto
    • SECRET_ID: el ID de recurso del secreto
    • KEY_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

  1. Crea o modifica un conjunto de claves.

  2. 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:

    1. 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
      
    2. 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
      
    3. 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:

  1. En la Google Cloud consola, ve a la página Media CDN.

    Ir a Media CDN

  2. Para abrir la página Detalles de un servicio, haz clic en su nombre.

  3. Para cambiar al modo de edición, haz clic en el botón Editar.

  4. Para ir a la sección Enrutamiento, haz clic en Siguiente.

  5. Despliega la regla de host a la que quieras añadir la regla de ruta del archivo de manifiesto principal.

  6. Haz clic en Añadir regla de ruta.

    También puedes editar una regla de ruta haciendo clic en Editar en la fila correspondiente.

  7. En el panel Editar regla de ruta, en Prioridad, asigna un valor; por ejemplo, 1.

  8. En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.

  9. En la sección Coincidencia, haz clic en Añadir una condición de coincidencia. A continuación, haz lo siguiente:

    1. En Tipo de coincidencia, selecciona Coincidencia de plantilla de ruta.
    2. 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.
  10. Haz clic en Configuraciones avanzadas.

  11. En la sección Acción de ruta, haz clic en Añadir un elemento.

  12. En Type (Tipo), selecciona CDN policy (Política de CDN).

  13. En la sección Solicitud firmada, en Modo de solicitud firmada, selecciona Requerir tokens.

  14. En la sección Conjunto de claves de solicitud firmada, haga lo siguiente:

    1. 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.

    2. En Algoritmo de firma, selecciona Ed25519 con claves públicas.

    3. 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.

    4. En Tiempo de vida máximo, especifica, en segundos, el tiempo de vida máximo de los tokens de solicitud entrantes.

  15. Para guardar los cambios en la sección Acción de ruta, haz clic en Hecho.

  16. Para guardar los cambios en la regla de ruta, haz clic en Guardar.

gcloud y YAML

  1. 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 servicio
    • FILENAME : el nombre del archivo YAML
  2. 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ón cdnPolicy 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 ruta
    • ROUTE_DESCRIPTION: descripción de la regla de ruta
    • ORIGIN_NAME: nombre del origen
    • MANIFEST_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ón
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: tiempo de vencimiento de las solicitudes firmadas. Por ejemplo, 600s. Para obtener más información, consulta signedRequestMaximumExpirationTtl.
    • Opcional: SHORT_TOKEN_NAME: el parámetro de consulta en el que se encuentra el token corto. El valor predeterminado es edge-cache-token. Para obtener más información, consulta SignedTokenOptions.

    Cuando se usan HMACs de clave simétrica, en la sección signedTokenOptions, añade allowedSignatureAlgorithms con su valor como HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. 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:

  1. En la página Editar regla de ruta, haz clic en Configuraciones avanzadas.
  2. En Type (Tipo), selecciona CDN policy (Política de CDN).
  3. Despliega Autenticación con dos tokens.
  4. En Acción de firma, selecciona Generar token de larga duración.
  5. 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.
  6. En la sección Generar token de larga duración, haga lo siguiente:

    1. 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.

    2. En TTL de token, especifica en segundos el tiempo de vida máximo del token de larga duración.

    3. 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 o paths) o URLPrefix.

      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.

  7. Para guardar los cambios en la sección Acción de ruta, haz clic en Hecho.

  8. 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ón

  • TOKEN_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 un Edge-Cache-Cookie con la respuesta del manifiesto principal.

  • copiedParameters.PathGlobs: configura Media CDN para copiar el PathGlobs del token de corta duración al token de larga duración. Para usar la autenticación con dos tokens, debes usar copiedParameters.PathGlobs o copiedParameters.URLPrefix. Para obtener más información, consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: configura Media CDN para copiar el SessionID 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ón

  • TOKEN_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 el PathGlobs 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 o copiedParameters.URLPrefix. Para obtener más información, consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: configura Media CDN para copiar el SessionID 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 es edge-cache-token. Para obtener más información, consulta tokenQueryParameter.

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:

  1. 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.
  2. Haz clic en Añadir regla de ruta.
  3. 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.
  4. En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
  5. 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
  6. Despliega Autenticación con dos tokens.

  7. En Acción de firma, mantenga el valor predeterminado Ninguna.

  8. Haz clic en Hecho y, a continuación, en Guardar.

Parámetros de consulta de URL

  1. Crea una regla de ruta para la lista de reproducción multimedia.

    1. 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.
    2. Haz clic en Añadir regla de ruta.
    3. 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.
    4. En Descripción, escribe una breve descripción que te ayude a identificar la regla en la lista de reglas.
    5. 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.
    6. Despliega Autenticación con dos tokens.

    7. 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).

    8. En Parámetro de consulta de token, mantén el valor predeterminado, edge-cache-token.

    9. Haz clic en Hecho y, a continuación, en Guardar.

  2. 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.

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:

  1. 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.
  2. 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: