Usar la autenticación de doble token

Para aplicar de manera forzosa la autenticación de token doble cuando los espectadores acceden a un recurso de transmisión, debes configurar 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 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 rutas de Media CDN para obtener ayuda. proteger contenido con la autenticación de token doble.

Antes de comenzar

Puedes hacer lo siguiente:

  1. Para 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 (HMAC) de clave simétrica

    Puedes habilitar los algoritmos de firma de HMAC simétrico solo para las rutas configuradas para generar nuevos tokens de larga duración. Te recomendamos que uses Ed25519 firmas para un rendimiento y una seguridad óptimos, y HMAC de clave simétrica solo cuando sea necesario para brindar compatibilidad con otras CDN.

  2. Incluye las claves necesarias 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 la clave seleccionada de firma de certificados. En la siguiente tabla, se describe cada una de las firmas los algoritmos y sus claves requeridas.

    Algoritmo de firma Claves requeridas 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 separados, uno para de corta duración y otro para los de larga duración.

    Sin embargo, si usas DASH y la descripción (MPD), debes usar el mismo conjunto de claves para ambos tokens de larga duración y de corta duración.

  3. 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 una duración los tokens usando una de las siguientes opciones.

Firma Ed25519

  1. Genera una clave privada:

    openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
    

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

    Console

    1. En la consola de Google Cloud, 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 Nombre, ingresa un nombre de conjunto de claves único.

    5. Opcional: En Descripción, ingresa una descripción para tu conjunto de claves.

    6. Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor. para tu conjunto de claves.

    7. Haz clic en Agregar clave pública y, luego, haz lo siguiente:

      1. En ID, ingresa un ID alfanumérico.
      2. Selecciona Ingresar el valor y, luego, especifica el valor codificado en base64 de tu 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'
    

    Reemplaza lo siguiente:

    • SHORT_KEYSET_NAME: Es un conjunto de claves único. nombre, por ejemplo, prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: Es el nombre de tu Clave pública SSL
    • SSL_PUBLIC_KEY_VALUE: Es 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

    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, configurar Secret Manager.

  2. Crea un secreto.

  3. Agrega una versión del Secret en formato binario.

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

    Console

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

      Ir a Secret Manager

    2. Selecciona la casilla de verificación junto al nombre del secreto.

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

    4. En el panel de información, haz clic en Agregar principal.

    5. En Principales nuevas, ingresa el servicio Media CDN. cuenta en este formato:

      service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
      

      Reemplaza PROJECT_NUMBER por tu proyecto. de la fila.

    6. En Selecciona un rol, elige 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: Es el ID del secreto.
  5. Accede a tus versiones del Secret y copiar las rutas de acceso secretas, incluidos los números de versión.

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

    Console

    1. En la consola de Google Cloud, 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 Nombre, ingresa un nombre de conjunto de claves único.

    5. Opcional: En Descripción, ingresa una descripción para tu conjunto de claves.

    6. Opcional: Haz clic en Agregar etiqueta y, luego, ingresa uno o más pares clave-valor. para tu conjunto de claves.

    7. Para especificar una clave compartida de validación, haz clic en Agregar clave compartida de validación. y, luego, haz lo siguiente:

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

      2. En Versión del secreto, selecciona una versión de la lista. crea una nueva versión del secreto y, luego, selecciónalo.

    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'
    

    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 proyecto
    • SECRET_ID: Es el ID de recurso del secreto.
    • KEY_VERSION: Es la versión del secreto que que quieras usar

Configura tokens de larga duración

El alcance de las claves administradas por Google se determina según el conjunto de claves. Eso significa que dos conjuntos de claves diferentes tienen diferentes claves administradas por Google. Las claves administradas por Google se rotan con regularidad.

Configura tokens de larga duración con una de las siguientes opciones:

Console

  1. Crea o modifica un conjunto de claves.

  2. En la sección Claves, selecciona Usar la clave administrada por Google para la autenticación de token doble.

gcloud y YAML

Usa cualquiera 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 una clave nombre, por ejemplo, prod-vod-keyset-long.

  • Modifica un conjunto de claves existente:

    1. 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
      
    2. En un editor de texto o en tus herramientas de administración de configuración, edita tu keyset de modo que se vea similar al 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 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 la aplicación del reproductor acceder a playlists de medios y a segmentos de medios usando solicitudes firmadas que generados por 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 según el tipo de contenido, atributos y los 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.

Cómo 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 el ruta del manifiesto principal.

Console

Habilita la autenticación de token de corta duración en la ruta del manifiesto principal:

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

    Ir a Media CDN

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

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

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

  5. Expande la regla de host a la que deseas agregar el manifiesto principal. regla de enrutamiento.

  6. Haz clic en Add route rule.

    Como alternativa, para editar una regla de enrutamiento, haz clic Editar en la fila correspondiente

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

  8. En Descripción, proporciona una descripción breve que pueda ayudar a identificar la regla en la lista de reglas.

  9. En la sección Coincidencia, haz clic en Agregar una condición de concordancia. Luego, haz lo siguiente: lo siguiente:

    1. En Tipo de concordancia, selecciona Coincidencia de plantilla de la ruta.
    2. En Coincidencia de ruta de acceso, especifica los nombres o las plantillas de ruta de acceso para el Lista de reproducción principal de HLS (M3U8) o archivo de manifiesto DASH (MPD). Para ver más consulta Coincidencias de rutas de acceso.
  10. Haz clic en Configuración avanzada.

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

  12. En Tipo, selecciona CDN policy.

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

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

    1. Para especificar el conjunto de claves para tokens de corta duración, haz clic en Selecciona un conjunto de claves y elige tu conjunto de claves de token de corta duración.

      Como alternativa, para crear un nuevo conjunto de claves que tenga las claves que necesitas, Haz clic en Crear un nuevo conjunto de claves. Luego, selecciónala.

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

    3. En Parámetro de consulta de token, conserva el valor predeterminado. edge-cache-token

      Como alternativa, si planeas usar parámetros de consulta de la URL del manifiesto de HLS en lugar de cookies para la autenticación, especifica el parámetro en en la que se almacenarán los tokens de solicitud.

    4. En Tiempo de actividad máximo, especifica, en segundos, la vida útil máxima de tokens de solicitudes entrantes.

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

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

gcloud y YAML

  1. Exporta la configuración de Media CDN en 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.
  2. Para habilitar la autenticación con token de corta duración en el manifiesto principal de ruta, en la sección cdnPolicy de la ruta del archivo YAML, especifica una configuración de signedTokensOptions.

      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: Es el nombre de la regla de enrutamiento.
    • ROUTE_DESCRIPTION: Es una descripción de la regla de enrutamiento
    • ORIGIN_NAME: Es el nombre del origen.
    • MANIFEST_OR_PLAYLIST: Es el nombre del HLS. la playlist principal (M3U8) o un archivo de manifiesto DASH (MPD). Para ver más consulta Coincidencias de rutas de acceso.
    • SHORT_KEYSET_NAME: Es el nombre del conjunto de claves que se usará. para 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, consulta signedRequestMaximumExpirationTtl.
    • SHORT_TOKEN_NAME (la consulta) (opcional) el parámetro en el que se encuentra el token corto. El valor predeterminado es edge-cache-token. Para obtener más información, consulta SignedTokenOptions:

    Cuando uses HMAC de clave simétrica, en la sección signedTokenOptions, Agrega allowedSignatureAlgorithms con su valor como HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Para actualizar el servicio, importa la configuración de Media CDN. del 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 habilitación de la autenticación de token único.

Para configurar la autenticación de token doble, continúa con las siguientes secciones.

Configura la regla de enrutamiento del manifiesto principal para generar tokens de larga duración

Configura Media CDN para que genere tokens de larga duración en la ruta del manifiesto principal. Elegir cookies o parámetros de consulta de URL para generar estos tokens.

Console

Modifica la regla de enrutamiento 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 enrutamiento, haz clic en Configuración avanzada.
  2. En Tipo, selecciona CDN policy.
  3. Expande Autenticación de token doble.
  4. En Signature action, selecciona Generate new long-duration token.
  5. 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.
  6. En la sección Genera un nuevo token de larga duración, haz lo siguiente:

    1. Para especificar un conjunto de claves para los tokens de larga duración, haz clic en Selecciona 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.

    2. En TTL del token, especifica, en segundos, la vida útil máxima del el token de larga duración.

    3. En Tipo de firma, si seleccionaste la opción mediante cookies, Luego, en la sección Copy parameters, selecciona los parámetros que deseas que Media CDN copie token de larga duración. Para usar la autenticación de doble token, debes seleccionar PathGlobs (o cualquiera de sus alias, acl o paths) o URLPrefix.

      Si seleccionaste la opción a través de los parámetros de consulta de la URL del manifiesto de HLS, En Parámetro de consulta de token, conserva el valor predeterminado edge-cache-token

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

  8. Para guardar los cambios en la regla de enrutamiento, haz clic en Guardar.

    Aparecerá un mensaje en el que se te preguntará si quieres crear las rutas para el contenido multimedia listas de reproducción y segmentos de forma automática o manual. Si seleccionas automática, se crea una única ruta nueva para la firma de cookies y dos rutas para la firma sin cookies. Si seleccionas la configuración , continúa con la siguiente sección.

gcloud y YAML

Modifica la sección addSignatures de la regla de enrutamiento del manifiesto principal para que Media CDN puede 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: Es el nombre de tu conjunto de claves de token de larga duración

  • TOKEN_EXPIRATION_TIME: La fecha y hora de vencimiento del token de larga duración, por ejemplo, 86400s por un token de un día fecha y hora de vencimiento

En este ejemplo de código, se implementan los siguientes cambios:

  • addSignatures.actions: GENERATE_COOKIE: configura Media CDN para mostrar un Edge-Cache-Cookie con la respuesta del manifiesto principal

  • copiedParameters.PathGlobs: Configura Media CDN para que copie el PathGlobs del token de corta duración al token de larga duración. Para usar la autenticación de token doble, debes usar cualquiera de las siguientes opciones: copiedParameters.PathGlobs o copiedParameters.URLPrefix. Para ver más consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: configura Media CDN para copiar el SessionID del directorio de corta duración token de larga duración

Cuando se aplica la acción GENERATE_COOKIE, Media CDN muestra un encabezado Set-Cookie similar al siguiente con el encabezado respuesta del manifiesto:

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: el vencimiento tiempo 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 servidor HLS principal del manifiesto agregando 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 token. Para usar la autenticación de token doble, debes usar uno de copiedParameters.PathGlobs o copiedParameters.URLPrefix. Para ver más consulta copiedParameters.

  • Opcional: copiedParameters.SessionID: configura Media CDN. para copiar SessionID del token de corta duración al de larga duración.

  • LONG_TOKEN_NAME (la consulta) (opcional) parámetro en el que se 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 el GENERATE_TOKEN_HLS_COOKIELESS acción 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 la Parámetro de consulta LONG_TOKEN_NAME.

Configura la playlist de contenido multimedia y las rutas de segmentos 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:

  1. En la página Editar servicio de almacenamiento en caché perimetral, en la sección Enrutamiento, haz lo siguiente: haz clic en la regla de host que tiene la ruta del manifiesto principal.
  2. Haz clic en Add route rule.
  3. En el panel Editar regla de enrutamiento, para Prioridad, establece un valor que mayor que la de la ruta del manifiesto principal, por ejemplo, 2. Los valores más altos indican una prioridad más baja.
  4. En Descripción, proporciona una breve descripción que ayude a identificar la regla en la lista de reglas.
  5. Configura los siguientes campos como se sugiere:

    • Seleccionar un origen: Al igual que para la regla de enrutamiento del manifiesto principal
    • Agrega una condición de coincidencia: Igual que para la ruta del manifiesto principal regla
    • Tipo: Política de CDN
    • Modo de solicitud firmada: requerir 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.
  6. Expande Autenticación de token doble.

  7. En Acción de firma (Signature action), conserva el valor predeterminado Ninguna (None).

  8. Haz clic en Listo y, luego, en Guardar.

Parámetros de consulta de URL

  1. Crea una regla de enrutamiento para la playlist de contenido multimedia.

    1. 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.
    2. Haz clic en Add route rule.
    3. En el panel Editar regla de enrutamiento, para Prioridad, establece un valor superior a la de la ruta del manifiesto principal, por ejemplo, 2. Los valores más altos indican una prioridad más baja.
    4. En Descripción, proporciona una breve descripción que pueda servirte. identificar la regla en la lista de reglas.
    5. Configura los siguientes campos como se sugiere:

      • Seleccionar un origen: Al igual que para la ruta del manifiesto principal regla
      • Agrega una condición de coincidencia: igual que para el manifiesto principal regla de enrutamiento
      • Tipo: Política de CDN
      • Modo de solicitud firmada: requerir tokens
      • Selecciona un conjunto de claves: Igual que para los tokens de larga duración
      • Algoritmo de firma: el mismo que el del manifiesto principal regla de enrutamiento
      • Parámetro de consulta de token: igual que para larga duración tokens
    6. Expande Autenticación de token doble.

    7. En Signature action, selecciona Propagate existing long-duration token.

      Esta opción se habilita solo después de que Media CDN se verifique que el token de larga duración se generó usando a través de la firma de parámetros de consulta de la URL del manifiesto de HLS (sin cookies) el tipo de letra.

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

    9. Haz clic en Listo y, luego, en Guardar.

  2. Crea una regla de enrutamiento para segmentos de contenido multimedia.

    Esta ruta es similar a la de las playlists de contenido multimedia, con la siguiente diferencias clave:

    • En Priority, establece un valor superior al del elemento multimedia. regla de enrutamiento de playlist, 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, para Acción de firma, conserva el valor predeterminado Ninguno.

gcloud y YAML

Edita el archivo YAML:

Cookies

Configura la playlist de contenido 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

Reemplaza SEGMENTS_ROUTE_DESCRIPTION por una descripción de la ruta.

En este ejemplo de código, se implementan los siguientes cambios:

  • priority: 2: Es la prioridad de la ruta. Los valores más altos indican más bajo prioridad. Porque la ruta para tus playlists y segmentos de medios coincide con cualquier nombre de archivo que termine en .m3u8, la prioridad de la ruta debe ser inferior a la ruta que creaste previamente para el manifiesto principal.
  • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para contenido multimedia. listas de reproducción y segmentos de medios. Si usas contenido multimedia estático de descripción de la presentación (MPD) y, a continuación, los conjuntos de claves largo y corto pueden ser diferentes. Si usas archivos MPD dinámicos, las longitudes y los conjuntos de claves cortos deben ser iguales.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar cookie de larga duración proporcionada por un usuario-agente para la playlist de contenido multimedia y de segmentos multimedia.

Parámetros de consulta de URL

Agrega dos configuraciones de ruta:

  1. 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 un descripción de la ruta.

    En este ejemplo de código, se implementan los siguientes cambios:

    • priority: 2: Es la prioridad de la ruta. Los valores más altos indican menor prioridad. Porque la ruta de tus playlists de contenido multimedia coincide cualquier nombre de archivo que termine en .m3u8, la prioridad de la ruta debe ser inferior a la ruta que creaste anteriormente para el manifiesto principal.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para contenido multimedia. listas de reproducción y segmentos de medios. Si usas contenido multimedia estático archivos de descripción de presentación (MPD), los conjuntos de claves largo y corto pueden ser diferentes. Si usas archivos MPD dinámicos, la longitud y los conjuntos de claves cortos deben ser iguales.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar cookie de larga duración proporcionada por un usuario-agente para la playlist de contenido multimedia y de segmentos multimedia.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: configura Media CDN para copiar el token de larga duración al contenido multimedia los URI de segmentos en las playlists de contenido multimedia.
  2. 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: Es la prioridad de la ruta. Los valores más altos indican menor prioridad. La prioridad de esta ruta debe ser menor que la ruta que creaste anteriormente para las playlists de contenido multimedia.
    • signedRequestMode: REQUIRE_TOKENS: Aplica tokens para contenido multimedia. listas de reproducción y segmentos de medios.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN usa el conjunto de claves de larga duración para validar token firmado de larga duración proporcionado por un usuario-agente para medios solicitudes a playlists 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: