Utilizzare l'autenticazione con doppio token

Per applicare l'autenticazione con due token quando gli spettatori accedono a una risorsa di streaming, configura route separati. Un route è una configurazione che abbina le richieste per Media CDN e indirizza il traffico HTTP a un'origine. Media CDN supporta i percorsi per le risorse HTTP Live Streaming (HLS) o Dynamic Adaptive Streaming over HTTP (DASH). Per ulteriori informazioni sulle route in Media CDN, consulta Configurare le route del servizio.

Per i flussi HLS, Media CDN supporta l'autenticazione con doppio token tramite cookie e parametri di ricerca dell'URL (senza cookie). Per gli stream DASH, Media CDN supporta solo l'autenticazione con doppio token basata su cookie.

Questa pagina descrive come configurare i percorsi Media CDN per contribuire a proteggere i contenuti utilizzando l'autenticazione con due token.

Prima di iniziare

Segui questi passaggi:

  1. Per i token di breve durata, scegli uno dei seguenti algoritmi di firma:

    • Firme Ed25519
    • Codici HMAC (Hash-based Message Authentication Code) con chiave simmetrica

    Puoi attivare gli algoritmi di firma HMAC simmetrici solo per i percorsi configurati per generare nuovi token di lunga durata. Ti consigliamo di utilizzare le firme Ed25519 per ottenere prestazioni e sicurezza ottimali e le HMAC con chiave simmetrica solo se necessario per la compatibilità con altre CDN.

  2. Includi le chiavi richieste in una risorsa EdgeCacheKeyset.

    I token devono essere firmati o verificati con le chiavi in una risorsa EdgeCacheKeyset. Il set di chiavi deve includere le chiavi corrette per l'algoritmo di firma selezionato. La tabella seguente descrive ciascuno degli algoritmi di firma e le relative chiavi obbligatorie.

    Algoritmo di firma Chiavi richieste nel set di chiavi
    Ed25519 Chiavi pubbliche
    HMAC-SHA1 Chiavi condivise di convalida
    HMAC-SHA256 Chiavi condivise di convalida

    Come best practice, crea due insiemi di chiavi distinti, uno per i token di durata breve e un altro per i token di durata lunga.

    Tuttavia, se utilizzi file DASH e MPD (Media Presentation Description), devi utilizzare lo stesso set di chiavi sia per i token di durata lunga sia per quelli di durata breve.

  3. Per i token a lunga durata, scegli uno dei seguenti formati:

    • Cookie
    • Parametri di ricerca dell'URL

Configurare token di breve durata

A seconda dell'algoritmo di firma che vuoi utilizzare, configura i token di breve durata utilizzando una delle seguenti opzioni.

Firma Ed25519

  1. Genera una chiave privata:

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

    Sostituisci SSL_KEY_NAME con il nome di una chiave.

  2. Genera una chiave pubblica dalla chiave privata:

    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 nuovo set di chiavi con una singola chiave pubblica:

    Console

    1. Nella console Google Cloud, vai alla pagina Media CDN.

      Vai a Media CDN

    2. Fai clic sulla scheda Insiemi di chiavi.

    3. Fai clic su Crea set di chiavi.

    4. In Nome, inserisci un nome univoco per l'insieme di chiavi.

    5. (Facoltativo) In Descrizione, inserisci una descrizione per il set di chiavi.

    6. (Facoltativo) Fai clic su Aggiungi etichetta, quindi inserisci una o più coppie chiave-valore per il tuo insieme di chiavi.

    7. Fai clic su Aggiungi chiave pubblica ed esegui le seguenti operazioni:

      1. In ID, inserisci un ID alfanumerico.
      2. Seleziona Inserisci il valore e specifica il valore con codifica Base64 della chiave pubblica Ed25519.
    8. Fai clic su Crea set di chiavi.

    gcloud

    Utilizza il 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'
    

    Sostituisci quanto segue:

    • SHORT_KEYSET_NAME: un nome univoco per l'insieme di chiavi, ad esempio prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: il nome della chiave pubblica SSL
    • SSL_PUBLIC_KEY_VALUE: il valore della chiave pubblica SSL

    Per esaminare le chiavi associate al set di chiavi, utilizza il comando gcloud edge-cache keysets describe.

    gcloud edge-cache keysets describe prod-vod-keyset
    

    L'output è simile al seguente:

    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 con chiave simmetrica

  1. Se non hai mai utilizzato Secret Manager, configuralo.

  2. Crea un secret.

  3. Aggiungi una versione del secret in formato binario.

  4. Concedi il ruolo di accesso a Secret Manager (roles/secretmanager.secretAccessor) all'account di servizio Media CDN:

    Console

    1. Nella console Google Cloud, vai alla pagina Secret Manager.

      Vai a Secret Manager

    2. Seleziona la casella di controllo accanto al nome del secret.

    3. Fai clic su Mostra riquadro informazioni.

    4. Nel riquadro delle informazioni, fai clic su Aggiungi entità.

    5. In Nuove entità, inserisci l'account del servizio Media CDN in questo formato:

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

      Sostituisci PROJECT_NUMBER con il numero del progetto.

    6. In Seleziona un ruolo, seleziona Gestore dei secret e poi Accesso ai secret di Gestore dei secret.

    gcloud

    Utilizza il 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"
    

    Sostituisci quanto segue:

    • PROJECT_NUMBER: il numero del progetto
    • SECRET_ID: l'ID del segreto
  5. Accedi alle versioni dei secret e copia i percorsi dei secret, inclusi i numeri di versione.

  6. Crea un nuovo set di chiavi con i secret condivisi in una chiave condivisa di convalida:

    Console

    1. Nella console Google Cloud, vai alla pagina Media CDN.

      Vai a Media CDN

    2. Fai clic sulla scheda Insiemi di chiavi.

    3. Fai clic su Crea set di chiavi.

    4. In Nome, inserisci un nome univoco per l'insieme di chiavi.

    5. (Facoltativo) In Descrizione, inserisci una descrizione per il set di chiavi.

    6. (Facoltativo) Fai clic su Aggiungi etichetta, quindi inserisci una o più coppie chiave-valore per il tuo insieme di chiavi.

    7. Per specificare una chiave condivisa di convalida, fai clic su Aggiungi chiave condivisa di convalida, quindi svolgi i seguenti passaggi:

      1. Per Secret, seleziona un secret dall'elenco, inserisci un secret manualmente specificandone l'ID risorsa o crea un nuovo secret e selezionalo.

      2. Per Versione segreto, seleziona una versione dall'elenco o crea una nuova versione del segreto e poi selezionala.

    8. Fai clic su Crea set di chiavi.

    gcloud

    Utilizza il 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'
    

    Sostituisci quanto segue:

    • SHORT_KEYSET_NAME: un nome univoco per l'insieme di chiavi, ad esempio prod-vod-keyset
    • PROJECT_NUMBER: il tuo ID progetto
    • SECRET_ID: l'ID risorsa del secret
    • KEY_VERSION: la versione del secret che vuoi utilizzare

Configurare i token di lunga durata

L'ambito delle chiavi gestite da Google è definito dal set di chiavi. Ciò significa che due insiemi di chiavi diversi hanno chiavi gestite da Google diverse. Le chiavi gestite da Google vengono ruotate regolarmente.

Configura i token di lunga durata utilizzando una delle seguenti opzioni:

Console

  1. Crea o modifica un insieme di chiavi.

  2. Nella sezione Chiavi, seleziona Utilizza la chiave gestita da Google per l'autenticazione con doppio token.

gcloud e YAML

Utilizza una delle seguenti opzioni:

  • Crea una chiave di firma gestita da Google:

    gcloud edge-cache keysets create LONG_KEYSET_NAME \
        --public-key='id=google-managed-key,managed=true'
    

    Sostituisci LONG_KEYSET_NAME con un nome chiave, ad esempio prod-vod-keyset-long.

  • Modificare un insieme di chiavi esistente:

    1. Esporta il set di chiavi in un file YAML. Utilizza il comando gcloud edge-cache keysets export.

      gcloud edge-cache keysets export LONG_KEYSET_NAME \
         --destination=prod-vod-keyset-long.yaml
      
    2. In un editor di testo o negli strumenti di gestione della configurazione, modifica la configurazione del set di chiavi in modo che sia simile alla seguente:

      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 il set di chiavi modificato. Utilizza il comando gcloud edge-cache keysets import:

      gcloud edge-cache keysets import LONG_KEYSET_NAME \
          --source=prod-vod-keyset-long.yaml
      

Puoi includere altre chiavi pubbliche nel set di chiavi dei token a durata lunga. Il set di chiavi può avere al massimo tre chiavi pubbliche. In pratica, ciò significa che il set di chiavi può avere due chiavi gestite dall'utente e una chiave gestita da Google.

Media CDN utilizza sempre la chiave gestita da Google per generare i token. Le chiavi gestite dall'utente possono essere utilizzate solo per la verifica.

L'inclusione di chiavi pubbliche aggiuntive è utile per consentire all'applicazione del player di accedere alle playlist e ai segmenti multimediali utilizzando richieste firmate generate dalle tue chiavi private.

Configurare lo scambio di token

Questa sezione mostra come configurare lo scambio di token creando più route. Un percorso ti consente di ottimizzare il comportamento in base al tipo di contenuti, agli attributi del cliente e ai tuoi requisiti di aggiornamento. Nei seguenti esempi, utilizziamo i percorsi per configurare lo scambio di token per ogni parte di una richiesta di contenuti multimediali.

Configurare la route del manifest principale in modo che richieda token di breve durata

Configura Media CDN in modo che richieda token di breve durata sulla route del manifest principale.

Console

Attiva l'autenticazione dei token di breve durata nel percorso manifest principale:

  1. Nella console Google Cloud, vai alla pagina Media CDN.

    Vai a Media CDN

  2. Per aprire la pagina Dettagli di un servizio, fai clic sul nome del servizio.

  3. Per passare alla modalità di modifica, fai clic sul pulsante Modifica.

  4. Per andare alla sezione Routing (Inoltro), fai clic su Avanti.

  5. Espandi la regola host a cui vuoi aggiungere la regola di routing del manifest principale.

  6. Fai clic su Aggiungi regola di percorso.

    In alternativa, per modificare una regola di percorso, fai clic su Modifica nella riga corrispondente.

  7. Nel riquadro Modifica regola di route, imposta un valore per Priorità, ad esempio 1.

  8. In Descrizione, fornisci una breve descrizione che possa aiutare a identificare la regola nell'elenco delle regole.

  9. Nella sezione Corrispondenza, fai clic su Aggiungi una condizione di corrispondenza. Poi, procedi nel seguente modo:

    1. In Tipo di corrispondenza, seleziona Corrispondenza modello di percorso.
    2. Per Corrispondenza percorso, specifica i nomi o i modelli di percorso per la playlist principale HLS (M3U8) o il file manifest DASH (MPD). Per ulteriori informazioni, consulta la sezione Corrispondenza dei percorsi.
  10. Fai clic su Configurazioni avanzate.

  11. Nella sezione Azione del percorso, fai clic su Aggiungi un elemento.

  12. In Tipo, seleziona Criterio CDN.

  13. Nella sezione Richiesta firmata, seleziona Modalità di richiesta firmata e poi Richiedi token.

  14. Nella sezione Set di chiavi per richiesta firmata:

    1. Per specificare il set di chiavi per i token di breve durata, fai clic su Seleziona un set di chiavi e seleziona il set di chiavi per i token di breve durata.

      In alternativa, per creare un nuovo insieme di chiavi contenente le chiavi di cui hai bisogno, fai clic su Crea nuovo insieme di chiavi. Quindi selezionala.

    2. Per Algoritmo di firma, seleziona Ed25519 con chiavi pubbliche.

    3. Per Parametro di query del token, mantieni il valore predefinito, edge-cache-token.

      In alternativa, se prevedi di utilizzare parametri di ricerca dell'URL del manifest HLS anziché i cookie per l'autenticazione, specifica il parametro in cui memorizzare i token di richiesta.

    4. Per Tempo di vita massimo, specifica in secondi la durata massima dei token di richiesta in entrata.

  15. Per salvare le modifiche nella sezione Azione di routing, fai clic su Fine.

  16. Per salvare le modifiche nella regola di routing, fai clic su Salva.

gcloud e YAML

  1. Esporta la configurazione Media CDN in un file YAML. Utilizza il comando gcloud edge-cache services export.

    gcloud edge-cache services export SERVICE_NAME \
        --destination=FILENAME.yaml
    

    Sostituisci quanto segue:

    • SERVICE_NAME: il nome del servizio
    • FILENAME : il nome del file YAML
  2. Per attivare l'autenticazione dei token di breve durata nella regola di route del manifest principale, specifica una configurazione signedTokensOptions nella sezione cdnPolicy della route del file 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
    

    Sostituisci quanto segue:

    • ROUTE_NAME: il nome della regola di route
    • ROUTE_DESCRIPTION: una descrizione della regola di route
    • ORIGIN_NAME: il nome dell'origine
    • MANIFEST_OR_PLAYLIST: il nome del file della playlist principale HLS (M3U8) o del file manifest DASH (MPD). Per ulteriori informazioni, consulta la sezione Corrispondenza dei percorsi.
    • SHORT_KEYSET_NAME: il nome del set di chiavi da utilizzare per i token di breve durata
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: la data e l'ora di scadenza per le richieste firmate, ad esempio 600s. Per maggiori informazioni, vedi signedRequestMaximumExpirationTtl.
    • (Facoltativo) SHORT_TOKEN_NAME: il parametro della query in cui trovare il token breve. Il valore predefinito è edge-cache-token. Per ulteriori informazioni, vedi SignedTokenOptions.

    Quando utilizzi HMAC con chiave simmetrica, nella sezione signedTokenOptions, appendi allowedSignatureAlgorithms con il valore HMAC_SHA_256:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Per aggiornare il servizio, importa la configurazione di Media CDN dal file YAML. Utilizza il comando gcloud edge-cache services import.

    gcloud edge-cache services import SERVICE_NAME \
        --source=FILENAME.yaml
    

La procedura di attivazione dell'autenticazione con token singolo è stata completata.

Per configurare l'autenticazione con doppio token, vai alle sezioni seguenti.

Configura la regola di routing del manifest principale per generare token di lunga durata

Configura Media CDN in modo da generare token di lunga durata sulla route del manifest principale. Scegli i cookie o parametri di ricerca dell'URL per generare questi token.

Console

Modifica la regola del percorso manifest principale in modo che Media CDN possa generare token di lunga durata sul percorso:

  1. Nella pagina Modifica regola di routing, fai clic su Configurazioni avanzate.
  2. In Tipo, seleziona Criterio CDN.
  3. Espandi Autenticazione con doppio token.
  4. In Azione di firma, seleziona Genera nuovo token di lunga durata.
  5. Per Tipo di firma, seleziona una delle seguenti opzioni:

    • tramite cookie (per flussi HLS e DASH): configura Media CDN in modo da restituire un Edge-Cache-Cookie con la risposta manifest principale.
    • Tramite parametri di ricerca dell'URL del manifest HLS (senza cookie): configura Media CDN per manipolare il manifest principale HLS aggiungendo un token di lunga durata a ogni URL.
  6. Nella sezione Genera nuovo token di lunga durata:

    1. Per specificare un insieme di chiavi per i token a durata lunga, fai clic su Seleziona un insieme di chiavi e seleziona il tuo insieme di chiavi per i token a durata lunga.

      In alternativa, fai clic su Crea nuovo set di chiavi per creare un nuovo set di chiavi con le chiavi di cui hai bisogno. Quindi selezionala.

    2. Per TTL token, specifica in secondi la durata massima del token a durata prolungata.

    3. Per Tipo di firma, se hai selezionato l'opzione tramite cookie, nella sezione Parametri copiati, seleziona i parametri che vuoi che Media CDN copi dal token di breve durata al token di lunga durata. Per utilizzare l'autenticazione con doppio token, devi selezionare PathGlobs (o uno dei relativi alias, acl o paths) o URLPrefix.

      Se hai selezionato l'opzione tramite parametri di query dell'URL del manifest HLS, per Parametro di query del token, mantieni il valore predefinito edge-cache-token.

  7. Per salvare le modifiche nella sezione Azione di routing, fai clic su Fine.

  8. Per salvare le modifiche nella regola di routing, fai clic su Salva.

    Viene visualizzato un messaggio che chiede se vuoi creare le route per i segmenti e le playlist multimediali automaticamente o manualmente. Se selezioni l'opzione automatica, viene creato un unico nuovo percorso per la firma con i cookie e due percorsi per la firma senza cookie. Se selezioni l'opzione manuale, vai alla sezione successiva.

gcloud e YAML

Modifica la sezione addSignatures della regola del route del manifest principale in modo che Media CDN possa generare token di lunga durata sul route:

Cookie

          addSignatures:
            actions:
              - GENERATE_COOKIE
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID

Sostituisci quanto segue:

  • LONG_KEYSET_NAME: il nome del set di chiavi dei token di lunga durata

  • TOKEN_EXPIRATION_TIME: la scadenza del token di lunga durata, ad esempio 86400s per una scadenza di un giorno

Questo esempio di codice implementa le seguenti modifiche:

  • addSignatures.actions: GENERATE_COOKIE: configura Media CDN in modo da restituire un Edge-Cache-Cookie con la risposta manifest principale

  • copiedParameters.PathGlobs: configura Media CDN in modo da copiarePathGlobs dal token di breve durata al token di lunga durata. Per utilizzare l'autenticazione con doppio token, devi utilizzare copiedParameters.PathGlobs o copiedParameters.URLPrefix. Per ulteriori informazioni, consulta copiedParameters.

  • (Facoltativo) copiedParameters.SessionID: configura Media CDN in modo da copiare SessionID dal token di breve durata al token di lunga durata

Quando viene applicata l'azione GENERATE_COOKIE, Media CDN restituisce un'intestazione Set-Cookie simile alla seguente con la risposta manifest principale:

Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE

Parametri di ricerca dell'URL

          addSignatures:
            actions:
              - GENERATE_TOKEN_HLS_COOKIELESS
            keyset: LONG_KEYSET_NAME
            tokenTtl: TOKEN_EXPIRATION_TIME
            copiedParameters:
              - PathGlobs
              - SessionID
            tokenQueryParameter: LONG_TOKEN_NAME

Sostituisci quanto segue:

  • LONG_KEYSET_NAME: il nome del set di chiavi di lunga durata

  • TOKEN_EXPIRATION_TIME: la scadenza del token di lunga durata, ad esempio 86400s per una scadenza di un giorno

Questo esempio di codice implementa le seguenti modifiche:

  • addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: configura Media CDN per manipolare il manifest principale HLS aggiungendo un token di lunga durata a ogni URI presente.

  • copiedParameters.PathGlobs: configura Media CDN in modo da copiarePathGlobs dal token di breve durata al token di lunga durata. Per utilizzare l'autenticazione con doppio token, devi utilizzare uno di copiedParameters.PathGlobs o copiedParameters.URLPrefix. Per ulteriori informazioni, consulta copiedParameters.

  • Facoltativo: copiedParameters.SessionID: configura Media CDN per copiare il parametro SessionID dal token di breve durata al token di lunga durata.

  • (Facoltativo) LONG_TOKEN_NAME: il parametro della query in cui inserire il token lungo generato. Il valore predefinito è edge-cache-token. Per ulteriori informazioni, vedi tokenQueryParameter.

Il seguente file manifest mostra l'azione GENERATE_TOKEN_HLS_COOKIELESS applicata:

#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 il token di breve durata, quindi genera e memorizza il token di lunga durata nel parametro di query LONG_TOKEN_NAME.

Configura le route per i segmenti e le playlist multimediali in modo che richiedano token di lunga durata

Configura le route dei segmenti e delle playlist multimediali in modo che richiedano token di lunga durata.

Console

Cookie

Crea una regola di route per la route dei segmenti e delle playlist multimediali:

  1. Nella pagina Modifica servizio cache Edge, nella sezione Routing, fai clic sulla regola host con la route manifest principale.
  2. Fai clic su Aggiungi regola di percorso.
  3. Nel riquadro Modifica regola di route, per Priorità, imposta un valore superiore a quello del route manifest principale, ad esempio 2. Valori più alti indicano una priorità più bassa.
  4. In Descrizione, fornisci una breve descrizione che possa aiutare a identificare la regola nell'elenco delle regole.
  5. Imposta i seguenti campi come suggerito:

    • Seleziona un'origine: come per la regola del percorso manifest principale
    • Aggiungi una condizione di corrispondenza: come per la regola della route del manifest principale
    • Tipo: Criterio CDN
    • Modalità di richiesta firmata: Richiedi token
    • Seleziona un set di chiavi: come per i token a durata lunga
    • Algoritmo di firma: lo stesso della regola del percorso manifest principale
  6. Espandi Autenticazione con doppio token.

  7. Per Azione firma, mantieni il valore predefinito Nessuna.

  8. Fai clic su Fine e poi su Salva.

Parametri di ricerca dell'URL

  1. Crea una regola di routing per la playlist multimediale.

    1. Nella pagina Modifica servizio cache Edge, nella sezione Routing, fai clic sulla regola host con la route manifest principale.
    2. Fai clic su Aggiungi regola di percorso.
    3. Nel riquadro Modifica regola di route, per Priorità, imposta un valore superiore a quello del route manifest principale, ad esempio 2. Valori più alti indicano una priorità più bassa.
    4. In Descrizione, fornisci una breve descrizione che possa aiutare a identificare la regola nell'elenco delle regole.
    5. Imposta i seguenti campi come suggerito:

      • Seleziona un'origine: la stessa della regola di routing del manifest principale.
      • Aggiungi una condizione di corrispondenza: la stessa della regola di route del manifest principale
      • Tipo: Criterio CDN
      • Modalità di richiesta firmata: Richiedi token
      • Seleziona un set di chiavi: come per i token a lunga durata
      • Algoritmo di firma: lo stesso della regola di routing del manifest principale
      • Parametro di query del token: uguale a quello per i token di lunga durata
    6. Espandi Autenticazione con doppio token.

    7. Per Azione di firma, seleziona Propaga token di lunga durata esistente.

      Questa opzione viene attivata solo dopo che Media CDN ha verificato che il token di lunga durata è stato generato utilizzando il tipo di firma tramite parametri di ricerca per l'URL del manifest HLS (senza cookie).

    8. Per Parametro di query del token, mantieni il valore predefinito, edge-cache-token.

    9. Fai clic su Fine e poi su Salva.

  2. Crea una regola di route per i segmenti multimediali.

    Questo percorso è simile a quello per le playlist di contenuti multimediali, con le seguenti differenze principali:

    • In Priorità, imposta un valore maggiore di quello della regola di route della playlist media, ad esempio 3.
    • In Descrizione, fornisci una breve descrizione che possa aiutare a identificare la regola nell'elenco delle regole.
    • Nella sezione Autenticazione con due token, per Azione firma, mantieni il valore predefinito Nessuna.

gcloud e YAML

Modifica il file YAML:

Cookie

Configura la playlist multimediale e i segmenti in modo che richiedano cookie di lunga durata:

    - 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

Sostituisci SEGMENTS_ROUTE_DESCRIPTION con una descrizione del percorso.

Questo esempio di codice implementa le seguenti modifiche:

  • priority: 2: la priorità del percorso. Valori più elevati indicano una priorità inferiore. Poiché la route per le playlist e i segmenti multimediali corrisponde a qualsiasi nome file che termina con .m3u8, la priorità della route deve essere inferiore a quella creata in precedenza per il manifest principale.
  • signedRequestMode: REQUIRE_TOKENS: applica i token per le playlist e i segmenti multimediali. Se utilizzi file MPD (Media Presentation Description) statici, i set di chiavi lunghi e brevi potrebbero essere diversi. Se utilizzi file MPD dinamici, i set di chiavi lunghi e brevi devono essere uguali.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN utilizza il set di chiavi a durata lunga per convalidare il cookie a durata lunga fornito da un agente utente per le richieste di playlist e segmenti multimediali.

Parametri di ricerca dell'URL

Aggiungi due configurazioni di route:

  1. Configura le route del manifest multimediale HLS per propagare i token di lunga durata:

       - 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
    

    Sostituisci PLAYLIST_ROUTE_DESCRIPTION con una descrizione del percorso.

    Questo esempio di codice implementa le seguenti modifiche:

    • priority: 2: la priorità del percorso. Valori più elevati indicano una priorità inferiore. Poiché la route per le playlist multimediali corrisponde a qualsiasi nome file che termina con .m3u8, la priorità della route deve essere inferiore a quella creata in precedenza per il manifest principale.
    • signedRequestMode: REQUIRE_TOKENS: applica i token per le playlist e i segmenti multimediali. Se utilizzi file MPD (Media Presentation Description) statici, i set di chiavi lunghi e brevi potrebbero essere diversi. Se utilizzi file MPD dinamici, i set di chiavi lunghi e brevi devono essere uguali.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN utilizza il set di chiavi a durata lunga per convalidare il cookie a durata lunga fornito da un agente utente per le richieste di playlist e segmenti multimediali.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: configura Media CDN in modo da copiare il token di durata lunga negli URI dei segmenti multimediali nelle playlist multimediali.
  2. Configura le route dei segmenti in modo che richiedano token di lunga durata:

       - 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
    

    Sostituisci SEGMENTS_ROUTE_DESCRIPTION con una descrizione del percorso.

    Questo esempio di codice implementa le seguenti modifiche:

    • priority: 3: la priorità del percorso. Valori più elevati indicano una priorità inferiore. La priorità di questo percorso deve essere inferiore a quella del percorso che hai creato in precedenza per le playlist multimediali.
    • signedRequestMode: REQUIRE_TOKENS: applica i token per le playlist e i segmenti multimediali.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN utilizza il set di chiavi per la durata lunga per convalidare il token firmato per la durata lunga fornito da un user agent per le richieste di playlist multimediali e segmenti multimediali.

File di configurazione di esempio

Il seguente esempio di codice mostra un file di configurazione completo:

Cookie

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

Parametri di ricerca dell'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 token di breve durata sul server dell'applicazione

Per informazioni sulla generazione di token, consulta Generare token.

Applicare protezioni dei contenuti con difesa in profondità

Come best practice, attiva l'autenticazione dell'origine come segue: