Dual-Token-Authentifizierung verwenden

Wenn Sie die Dual-Token-Authentifizierung erzwingen möchten, wenn Zuschauer auf eine Streamingressource zugreifen, konfigurieren Sie separate Routen. Eine Route ist eine Konfiguration, die mit Anfragen für Media CDN übereinstimmt und HTTP-Traffic an einen Ursprung weiterleitet. Media CDN unterstützt Routen für HLS-Ressourcen (HTTP Live Streaming) oder DASH-Ressourcen (Dynamic Adaptive Streaming over HTTP). Weitere Informationen zu Routen in Media CDN finden Sie unter Dienstrouten konfigurieren.

Für HLS-Streams unterstützt Media CDN die Dual-Token-Authentifizierung über Cookies und URL-Abfrageparameter (ohne Cookies). Für DASH-Streams unterstützt Media CDN nur die Cookie-basierte Dual-Token-Authentifizierung.

Auf dieser Seite wird beschrieben, wie Sie Media CDN-Routen konfigurieren, um Inhalte mithilfe der Dual-Token-Authentifizierung zu schützen.

Hinweise

Gehen Sie dazu so vor:

  1. Wählen Sie für kurzlebige Tokens einen der folgenden Signaturalgorithmen aus:

    • Ed25519-Signaturen
    • Hash-basierte Nachrichtenauthentifizierungscodes (HMACs) mit Symmetrieschlüsseln

    Sie können symmetrische HMAC-Signaturalgorithmen nur für Routen aktivieren, die so konfiguriert sind, dass neue Tokens mit langer Gültigkeitsdauer generiert werden. Wir empfehlen, Ed25519-Signaturen für optimale Leistung und Sicherheit zu verwenden und HMACs mit Symmetrieschlüsseln nur, wenn dies für die Kompatibilität mit anderen CDNs erforderlich ist.

  2. Fügen Sie die erforderlichen Schlüssel in eine EdgeCacheKeyset-Ressource ein.

    Tokens müssen mit Schlüsseln in einer EdgeCacheKeyset-Ressource signiert oder bestätigt werden. Der Schlüsselsatz muss die richtigen Schlüssel für den ausgewählten Signaturalgorithmus enthalten. In der folgenden Tabelle werden die einzelnen Signaturalgorithmen und die dafür erforderlichen Schlüssel beschrieben.

    Signaturalgorithmus Erforderliche Schlüssel im Schlüsselsatz
    Ed25519 Öffentliche Schlüssel
    HMAC-SHA1 Freigegebene Validierungsschlüssel
    HMAC-SHA256 Freigegebene Validierungsschlüssel

    Als Best Practice sollten Sie zwei separate Schlüsselsätze erstellen, einen für kurzlebige und einen für langlebige Tokens.

    Wenn Sie jedoch DASH und dynamische MPD-Dateien (Media Presentation Description) verwenden, müssen Sie für Token mit langer und kurzer Gültigkeitsdauer denselben Keysatz verwenden.

  3. Wählen Sie für Tokens mit langer Gültigkeitsdauer eines der folgenden Tokenformate aus:

    • Cookies
    • URL-Suchparameter

Kurzlebige Tokens einrichten

Richten Sie je nach dem Signaturalgorithmus, den Sie verwenden möchten, Kurzzeittokens mit einer der folgenden Optionen ein.

Ed25519-Signatur

  1. Privaten Schlüssel generieren:

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

    Ersetzen Sie SSL_KEY_NAME durch einen Schlüsselnamen.

  2. Öffentlichen Schlüssel aus dem privaten Schlüssel generieren:

    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. So erstellen Sie einen neuen Schlüsselsatz mit einem einzelnen öffentlichen Schlüssel:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

      Zum Media CDN

    2. Klicken Sie auf den Tab Schlüsselsätze.

    3. Klicken Sie auf Schlüsselsatz erstellen.

    4. Geben Sie unter Name einen eindeutigen Keyset-Namen ein.

    5. Optional: Geben Sie unter Beschreibung eine Beschreibung für Ihren Schlüsselsatz ein.

    6. Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare für Ihren Schlüsselsatz ein.

    7. Klicken Sie auf Öffentlichen Schlüssel hinzufügen und gehen Sie dann so vor:

      1. Geben Sie als ID eine alphanumerische ID ein.
      2. Wählen Sie Wert eingeben aus und geben Sie dann den base64-codierten Wert Ihres öffentlichen Ed25519-Schlüssels an.
    8. Klicken Sie auf Schlüsselsatz erstellen.

    gcloud

    Führen Sie den Befehl gcloud edge-cache keysets create aus.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
    

    Ersetzen Sie Folgendes:

    • SHORT_KEYSET_NAME: ein eindeutiger Name für den Schlüsselsatz, z. B. prod-vod-keyset
    • SSL_PUBLIC_KEY_NAME: der Name Ihres öffentlichen SSL-Schlüssels
    • SSL_PUBLIC_KEY_VALUE: der Wert Ihres öffentlichen SSL-Schlüssels

    Mit dem Befehl gcloud edge-cache keysets describe können Sie die mit dem Schlüsselsatz verknüpften Schlüssel aufrufen.

    gcloud edge-cache keysets describe prod-vod-keyset
    

    Die Ausgabe sieht etwa so aus:

    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 mit symmetrischem Schlüssel

  1. Wenn Sie Secret Manager noch nicht verwendet haben, konfigurieren Sie Secret Manager.

  2. Secret erstellen

  3. Fügen Sie eine Secret-Version im Binärformat hinzu.

  4. Weisen Sie dem Media CDN-Dienstkonto die Rolle „Secret Manager-Zugriff“ (roles/secretmanager.secretAccessor) zu:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

      Zu Secret Manager

    2. Aktivieren Sie das Kästchen neben dem Namen des Secrets.

    3. Klicken Sie auf Infofeld anzeigen.

    4. Klicken Sie im Infofeld auf Hauptkonto hinzufügen.

    5. Geben Sie unter Neue Hauptkonten das Media CDN-Dienstkonto in diesem Format ein:

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

      Ersetzen Sie PROJECT_NUMBER durch Ihre Projektnummer.

    6. Wählen Sie unter Rolle auswählen die Option Secret Manager und dann Zugriffsfunktion für Secret Manager-Secret aus.

    gcloud

    gcloud secrets add-iam-policy-binding-Befehl ausführen

    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"
    

    Ersetzen Sie Folgendes:

    • PROJECT_NUMBER: Ihre Projektnummer
    • SECRET_ID: die ID des Secrets
  5. Greifen Sie auf Ihre Secret-Versionen zu und kopieren Sie die Secret-Pfade einschließlich der Versionsnummern.

  6. So erstellen Sie einen neuen Schlüsselsatz mit den gemeinsamen Geheimnissen in einem freigegebenen Validierungsschlüssel:

    Console

    1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

      Zum Media CDN

    2. Klicken Sie auf den Tab Schlüsselsätze.

    3. Klicken Sie auf Schlüsselsatz erstellen.

    4. Geben Sie unter Name einen eindeutigen Keyset-Namen ein.

    5. Optional: Geben Sie unter Beschreibung eine Beschreibung für Ihren Schlüsselsatz ein.

    6. Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare für Ihren Schlüsselsatz ein.

    7. Wenn Sie einen freigegebenen Validierungsschlüssel angeben möchten, klicken Sie auf Freigegebenen Validierungsschlüssel hinzufügen und gehen Sie dann so vor:

      1. Wählen Sie für Secret ein Secret aus der Liste aus, geben Sie ein Secret manuell ein, indem Sie die Ressourcen-ID angeben, oder erstellen Sie ein neues Secret und wählen Sie es dann aus.

      2. Wählen Sie unter Secret-Version eine Version aus der Liste aus oder erstellen Sie eine neue Secret-Version und wählen Sie sie dann aus.

    8. Klicken Sie auf Schlüsselsatz erstellen.

    gcloud

    Führen Sie den Befehl gcloud edge-cache keysets create aus.

    gcloud edge-cache keysets create SHORT_KEYSET_NAME \
      --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
    

    Ersetzen Sie Folgendes:

    • SHORT_KEYSET_NAME: ein eindeutiger Name für das Schlüsselset, z. B. prod-vod-keyset
    • PROJECT_NUMBER: Ihre Projekt-ID.
    • SECRET_ID: die Ressourcen-ID des Secrets
    • KEY_VERSION: die Secret-Version, die Sie verwenden möchten

Langzeit-Tokens einrichten

Google-owned and managed keys werden nach Schlüsselsatz eingegrenzt. Das bedeutet, dass zwei verschiedene Schlüsselsätze unterschiedlicheGoogle-owned and managed keyshaben. Google-owned and managed keys werden regelmäßig aktualisiert.

Richten Sie Tokens mit langer Gültigkeitsdauer mit einer der folgenden Optionen ein:

Console

  1. Schlüsselsatz erstellen oder ändern

  2. Wählen Sie im Abschnitt Schlüssel die Option Google-owned and managed key für Dual-Token-Authentifizierung verwenden aus.

gcloud und YAML

Sie haben folgende Möglichkeiten:

  • Von Google verwalteten Signierschlüssel erstellen:

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

    Ersetzen Sie LONG_KEYSET_NAME durch einen Schlüsselnamen, z. B. prod-vod-keyset-long.

  • Vorhandenen Schlüsselsatz ändern:

    1. Exportieren Sie das Schlüsselsatz in eine YAML-Datei. Führen Sie den Befehl gcloud edge-cache keysets export aus.

      gcloud edge-cache keysets export LONG_KEYSET_NAME \
         --destination=prod-vod-keyset-long.yaml
      
    2. Bearbeiten Sie die Schlüsselsatzkonfiguration in einem Texteditor oder in Ihrem Konfigurationsverwaltungstool, sodass sie in etwa so aussieht:

      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. Importieren Sie den bearbeiteten Schlüsselsatz. Führen Sie den Befehl gcloud edge-cache keysets import aus:

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

Sie können dem Schlüsselsatz für Tokens mit langer Gültigkeitsdauer weitere öffentliche Schlüssel hinzufügen. Der Schlüsselsatz darf maximal drei öffentliche Schlüssel enthalten. In der Praxis bedeutet das, dass das Schlüsselset zwei von Nutzern verwaltete Schlüssel und einenGoogle-owned and managed keyenthalten kann.

In Media CDN wird immer der Google-owned and managed keyverwendet, um Tokens zu generieren. Die vom Nutzer verwalteten Schlüssel können nur zur Bestätigung verwendet werden.

Das Hinzufügen zusätzlicher öffentlicher Schlüssel ist nützlich, damit Ihre Player-Anwendung über signierte Anfragen, die mit Ihren eigenen privaten Schlüsseln generiert werden, auf Media-Playlists und Media-Segmente zugreifen kann.

Token-Tausch konfigurieren

In diesem Abschnitt wird gezeigt, wie Sie den Tokenaustausch konfigurieren, indem Sie mehrere Routen erstellen. Mit einer Route können Sie das Verhalten basierend auf dem Inhaltstyp, den Clientattributen und Ihren Aktualitätsanforderungen optimieren. In den folgenden Beispielen verwenden wir Routen, um den Tausch von Tokens für jeden Teil einer Media-Anfrage zu konfigurieren.

Primäre Manifestroute so konfigurieren, dass Kurzzeit-Tokens erforderlich sind

Konfigurieren Sie Media CDN so, dass für die primäre Manifestroute Kurzzeit-Tokens erforderlich sind.

Console

Aktivieren Sie die Authentifizierung mit kurzlebigen Tokens für die primäre Manifestroute:

  1. Rufen Sie in der Google Cloud Console die Seite Media CDN auf.

    Zum Media CDN

  2. Klicken Sie auf den Namen eines Dienstes, um die Seite Details zu öffnen.

  3. Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.

  4. Klicken Sie auf Weiter, um zum Abschnitt Routing zu gelangen.

  5. Erweitern Sie die Hostregel, der Sie die primäre Manifestroutenregel hinzufügen möchten.

  6. Klicken Sie auf Weiterleitungsregel hinzufügen.

    Alternativ können Sie eine Routenregel bearbeiten, indem Sie in der entsprechenden Zeile auf Bearbeiten klicken.

  7. Legen Sie im Bereich Routenregel bearbeiten für Priorität einen Wert fest, z. B. 1.

  8. Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit Sie die Regel in der Liste der Regeln leichter finden.

  9. Klicken Sie im Bereich Abgleich auf Abgleichsbedingung hinzufügen. Gehen Sie dann so vor:

    1. Wählen Sie für Übereinstimmungstyp die Option Pfadvorlagenübereinstimmung aus.
    2. Geben Sie bei Path match (Pfadübereinstimmung) die Namen oder Pfadvorlagen für die primäre HLS-Playlist-Datei (M3U8) oder die DASH-Manifestdatei (MPD) an. Weitere Informationen finden Sie unter Pfadabgleich.
  10. Klicken Sie auf Erweiterte Konfigurationen.

  11. Klicken Sie im Bereich Routenaktion auf Element hinzufügen.

  12. Wählen Sie für Typ die Option CDN-Richtlinie aus.

  13. Wählen Sie im Bereich Signierte Anfrage für Modus für signierte Anfrage die Option Tokens erforderlich aus.

  14. Führen Sie im Abschnitt Schlüsselsatz für signierte Anfragen folgende Schritte aus:

    1. Klicken Sie auf Schlüsselsatz auswählen und wählen Sie Ihren Schlüsselsatz für kurzlebige Tokens aus, um den Schlüsselsatz für kurzlebige Tokens anzugeben.

      Wenn Sie stattdessen einen neuen Schlüsselsatz mit den benötigten Schlüsseln erstellen möchten, klicken Sie auf Neuen Schlüsselsatz erstellen. Wählen Sie es dann aus.

    2. Wählen Sie für Signaturalgorithmus die Option Ed25519 mit öffentlichen Schlüsseln aus.

    3. Behalten Sie für Abfrageparameter für Tokens den Standardwert edge-cache-token bei.

      Wenn Sie stattdessen HLS-Manifest-URL-Abfrageparameter anstelle von Cookies für die Authentifizierung verwenden möchten, geben Sie den Parameter an, in dem die Anfragetokens gespeichert werden sollen.

    4. Geben Sie für Maximale Gültigkeitsdauer die maximale Gültigkeitsdauer von eingehenden Anfrage-Tokens in Sekunden an.

  15. Klicken Sie auf Fertig, um die Änderungen im Bereich Routenaktion zu speichern.

  16. Klicken Sie auf Speichern, um die Änderungen an der Routenregel zu speichern.

gcloud und YAML

  1. Exportieren Sie Ihre Media CDN-Konfiguration in eine YAML-Datei. Führen Sie den Befehl gcloud edge-cache services export aus.

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

    Ersetzen Sie Folgendes:

    • SERVICE_NAME: der Name Ihres Dienstes
    • FILENAME : der Name Ihrer YAML-Datei
  2. Wenn Sie die Authentifizierung mit kurzlebigen Tokens in der primären Manifest-Routenregel aktivieren möchten, geben Sie im Abschnitt cdnPolicy der YAML-Datei der Route eine signedTokensOptions-Konfiguration an.

      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
    

    Ersetzen Sie Folgendes:

    • ROUTE_NAME: der Name der Routenregel
    • ROUTE_DESCRIPTION: eine Beschreibung der Routenregel
    • ORIGIN_NAME: der Name des Ursprungs
    • MANIFEST_OR_PLAYLIST: der Name der primären HLS-Playlistdatei (M3U8) oder der DASH-Manifestdatei (MPD). Weitere Informationen finden Sie unter Pfadabgleich.
    • SHORT_KEYSET_NAME: Der Name des Schlüsselsatzes, der für kurzlebige Tokens verwendet werden soll
    • SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: Die Ablaufzeit für signierte Anfragen, z. B. 600s. Weitere Informationen finden Sie unter signedRequestMaximumExpirationTtl.
    • Optional: SHORT_TOKEN_NAME: Der Abfrageparameter, in dem das kurze Token zu finden ist. Der Standardwert ist edge-cache-token. Weitere Informationen finden Sie unter SignedTokenOptions.

    Wenn Sie symmetrische HMACs verwenden, hängen Sie im Bereich signedTokenOptions allowedSignatureAlgorithms mit seinem Wert als HMAC_SHA_256 an:

           allowedSignatureAlgorithms:
           - HMAC_SHA_256
    
  3. Wenn Sie den Dienst aktualisieren möchten, importieren Sie Ihre Media CDN-Konfiguration aus der YAML-Datei. Führen Sie den Befehl gcloud edge-cache services import aus.

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

Damit ist die Aktivierung der Single-Token-Authentifizierung abgeschlossen.

Fahren Sie mit den folgenden Abschnitten fort, um die Dual-Token-Authentifizierung zu konfigurieren.

Primäre Manifest-Routingregel konfigurieren, um Tokens mit langer Gültigkeitsdauer zu generieren

Konfigurieren Sie Media CDN so, dass Langzeit-Tokens auf der primären Manifestroute generiert werden. Wählen Sie entweder Cookies oder URL-Suchparameter aus, um diese Tokens zu generieren.

Console

Ändern Sie die Routenregel für das primäre Manifest, damit Media CDN Langzeit-Tokens für die Route generieren kann:

  1. Klicken Sie auf der Seite Routingregel bearbeiten auf Erweiterte Konfigurationen.
  2. Wählen Sie für Typ die Option CDN-Richtlinie aus.
  3. Maximieren Sie Dual-Token-Authentifizierung.
  4. Wählen Sie für Signaturaktion die Option Neues Langzeit-Token generieren aus.
  5. Wählen Sie für Signaturtyp eine der folgenden Optionen aus:

    • über Cookies (für HLS- und DASH-Streaming): Konfiguriert Media CDN so, dass ein Edge-Cache-Cookie mit der primären Manifestantwort zurückgegeben wird.
    • Über URI-Abfrageparameter des HLS-Manifests (ohne Cookies): Konfiguriert Media CDN so, dass das primäre HLS-Manifest manipuliert wird, indem jeder URL ein Langzeit-Token angehängt wird.
  6. Führen Sie im Abschnitt Neues Langzeit-Token generieren folgende Schritte aus:

    1. Wenn Sie einen Schlüsselsatz für Tokens mit langer Gültigkeitsdauer angeben möchten, klicken Sie auf Schlüsselsatz auswählen und wählen Sie Ihren Schlüsselsatz für Tokens mit langer Gültigkeitsdauer aus.

      Alternativ können Sie auf Neues Schlüsselset erstellen klicken, um ein neues Schlüsselset mit den benötigten Schlüsseln zu erstellen. Wählen Sie es dann aus.

    2. Geben Sie für Token-TTL die maximale Lebensdauer des Tokens mit langer Gültigkeitsdauer in Sekunden an.

    3. Wenn Sie für Signaturtyp die Option über Cookies ausgewählt haben, wählen Sie im Abschnitt Kopierte Parameter die Parameter aus, die Media CDN aus dem Kurzzeit-Token in das Langzeit-Token kopieren soll. Wenn Sie die Dual-Token-Authentifizierung verwenden möchten, müssen Sie entweder PathGlobs (oder einen der Aliase acl oder paths) oder URLPrefix auswählen.

      Wenn Sie die Option über URI-Abfrageparameter des HLS-Manifests ausgewählt haben, behalten Sie für Token-Suchparameter den Standardwert edge-cache-token bei.

  7. Klicken Sie auf Fertig, um die Änderungen im Bereich Routenaktion zu speichern.

  8. Klicken Sie auf Speichern, um die Änderungen an der Routenregel zu speichern.

    Es wird eine Meldung eingeblendet, in der Sie gefragt werden, ob die Routen für Medienplaylists und ‑segmente automatisch oder manuell erstellt werden sollen. Wenn Sie die automatische Option auswählen, wird eine neue Route für die Cookie-Signatur und zwei Routen für die cookieless Signatur erstellt. Wenn Sie die manuelle Option auswählen, fahren Sie mit dem nächsten Abschnitt fort.

gcloud und YAML

Ändern Sie den Abschnitt addSignatures der primären Manifest-Routingregel so, dass Media CDN Langzeit-Tokens für die Route generieren kann:

Cookies

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

Ersetzen Sie Folgendes:

  • LONG_KEYSET_NAME: der Name Ihres Schlüsselsatzes für langlebige Tokens

  • TOKEN_EXPIRATION_TIME: Die Ablaufzeit des Tokens mit langer Gültigkeitsdauer, z. B. 86400s für eine Ablaufzeit von einem Tag.

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • addSignatures.actions: GENERATE_COOKIE: Konfiguriert Media CDN so, dass eine Edge-Cache-Cookie mit der Antwort des primären Manifests zurückgegeben wird.

  • copiedParameters.PathGlobs: Konfiguriert Media CDN so, dass PathGlobs aus dem Kurzzeit-Token in das Langzeit-Token kopiert wird. Wenn Sie die Authentifizierung mit zwei Tokens verwenden möchten, müssen Sie entweder copiedParameters.PathGlobs oder copiedParameters.URLPrefix verwenden. Weitere Informationen finden Sie unter copiedParameters.

  • Optional: copiedParameters.SessionID: Konfiguriert Media CDN so, dass die SessionID aus dem Kurzzeit-Token in das Langzeit-Token kopiert wird.

Wenn die GENERATE_COOKIE-Aktion angewendet wird, gibt Media CDN mit der primären Manifestantwort einen Set-Cookie-Header ähnlich dem folgenden zurück:

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

URL-Suchparameter

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

Ersetzen Sie Folgendes:

  • LONG_KEYSET_NAME: der Name Ihres Schlüsselsatzes mit langer Laufzeit

  • TOKEN_EXPIRATION_TIME: die Ablaufzeit des Tokens mit langer Gültigkeitsdauer, z. B. 86400s für eine Ablaufzeit von einem Tag

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: Konfiguriert Media CDN so, dass das primäre HLS-Manifest bearbeitet wird, indem an jeden vorhandenen URI ein Langzeit-Token angehängt wird.

  • copiedParameters.PathGlobs: Konfiguriert Media CDN so, dass PathGlobs aus dem Kurzzeit-Token in das Langzeit-Token kopiert wird. Wenn Sie die Authentifizierung mit zwei Tokens verwenden möchten, müssen Sie copiedParameters.PathGlobs oder copiedParameters.URLPrefix verwenden. Weitere Informationen finden Sie unter copiedParameters.

  • Optional: copiedParameters.SessionID: Konfiguriert Media CDN so, dass die SessionID aus dem Kurzzeit-Token in das Langzeit-Token kopiert wird.

  • Optional: LONG_TOKEN_NAME: Der Abfrageparameter, in den das generierte lange Token eingefügt werden soll. Der Standardwert ist edge-cache-token. Weitere Informationen finden Sie unter tokenQueryParameter.

Die folgende Manifestdatei zeigt die angewendete GENERATE_TOKEN_HLS_COOKIELESS-Aktion:

#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 überprüft das Kurzzeit-Token und generiert und speichert dann das Langzeit-Token im Abfrageparameter LONG_TOKEN_NAME.

Routen für Medienplaylists und ‑segmente so konfigurieren, dass Langzeit-Tokens erforderlich sind

Konfigurieren Sie die Routen für Medienplaylists und ‑segmente so, dass Langzeit-Tokens erforderlich sind.

Console

Cookies

Erstellen Sie eine Routingregel für die Medienplaylist- und Segmentroute:

  1. Klicken Sie auf der Seite Edge-Cache-Dienst bearbeiten im Bereich Routing auf die Hostregel mit dem primären Manifest-Route.
  2. Klicken Sie auf Weiterleitungsregel hinzufügen.
  3. Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, der größer ist als der der primären Manifestroute, z. B. 2. Höhere Werte bedeuten eine niedrigere Priorität.
  4. Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit Sie die Regel in der Liste der Regeln leichter finden.
  5. Legen Sie die folgenden Felder wie vorgeschlagen fest:

    • Ursprung auswählen: wie bei der primären Manifestroutenregel
    • Übereinstimmungsbedingung hinzufügen: wie bei der primären Manifest-Routenregel
    • Typ: CDN-Richtlinie
    • Modus für signierte Anfrage: Tokens erforderlich
    • Schlüsselsatz auswählen: wie bei Tokens mit langer Gültigkeitsdauer
    • Signaturalgorithmus: wie für die primäre Manifestroutenregel
  6. Maximieren Sie Dual-Token-Authentifizierung.

  7. Behalten Sie für Signature action (Signaturaktion) den Standardwert None (Keine) bei.

  8. Klicken Sie auf Fertig und anschließend auf Speichern.

URL-Suchparameter

  1. Erstellen Sie eine Routenregel für die Media-Playlist.

    1. Klicken Sie auf der Seite Edge-Cache-Dienst bearbeiten im Bereich Routing auf die Hostregel mit dem primären Manifest-Route.
    2. Klicken Sie auf Weiterleitungsregel hinzufügen.
    3. Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, der größer ist als der der primären Manifestroute, z. B. 2. Höhere Werte bedeuten eine niedrigere Priorität.
    4. Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit die Regel in der Liste der Regeln leichter zu finden ist.
    5. Legen Sie die folgenden Felder wie vorgeschlagen fest:

      • Ursprung auswählen: derselbe wie für die primäre Manifestroutenregel
      • Übereinstimmungsbedingung hinzufügen: wie bei der primären Manifestroutenregel
      • Typ: CDN-Richtlinie
      • Modus für signierte Anfrage: Tokens erforderlich
      • Schlüsselsatz auswählen: wie bei Tokens mit langer Gültigkeitsdauer
      • Signaturalgorithmus: derselbe wie für die Routenregel des primären Manifests
      • Abfrageparameter für Tokens: wie bei Tokens mit langer Gültigkeitsdauer
    6. Maximieren Sie Dual-Token-Authentifizierung.

    7. Wählen Sie für Signaturaktion die Option Vorhandenes Langzeit-Token weitergeben aus.

      Diese Option wird erst aktiviert, wenn Media CDN bestätigt, dass das Langzeit-Token mit dem Signaturtyp über URI-Abfrageparameter des HLS-Manifests (ohne Cookies) generiert wurde.

    8. Behalten Sie für Abfrageparameter für Tokens den Standardwert edge-cache-token bei.

    9. Klicken Sie auf Fertig und anschließend auf Speichern.

  2. Erstellen Sie eine Routenregel für Media-Segmente.

    Dieser Pfad ähnelt dem Pfad für Media-Playlists, mit den folgenden wichtigen Unterschieden:

    • Legen Sie für Priorität einen Wert fest, der größer ist als der Wert der Routenregel für die Media-Playlist, z. B. 3.
    • Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit die Regel in der Liste der Regeln leichter zu finden ist.
    • Behalten Sie im Abschnitt Authentifizierung mit zwei Tokens für Signaturaktion den Standardwert Keine bei.

gcloud und YAML

Bearbeiten Sie die YAML-Datei:

Cookies

Konfigurieren Sie die Medienplaylist und ‑segmente so, dass Langzeit-Cookies erforderlich sind:

    - 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

Ersetzen Sie SEGMENTS_ROUTE_DESCRIPTION durch eine Beschreibung der Route.

In diesem Codebeispiel werden die folgenden Änderungen implementiert:

  • priority: 2: die Priorität der Route. Höhere Werte deuten auf eine niedrigere Priorität hin. Da die Route für deine Media-Playlists und Media-Segmente mit jedem Dateinamen übereinstimmt, der mit .m3u8 endet, muss die Priorität für die Route niedriger sein als die Route, die du zuvor für das primäre Manifest erstellt hast.
  • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Media-Playlists und Media-Segmente. Wenn Sie statische MPD-Dateien (Media Presentation Description) verwenden, können sich die langen und kurzen Schlüsselsätze unterscheiden. Wenn Sie dynamische MPD-Dateien verwenden, müssen die langen und kurzen Schlüsselsätze identisch sein.
  • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Langzeit-Schlüsselsatz, um das vom User-Agent für Media-Playlist- und Media-Segment-Anfragen bereitgestellte Langzeit-Cookie zu validieren.

URL-Suchparameter

Fügen Sie zwei Routenkonfigurationen hinzu:

  1. Konfigurieren Sie die Routen für HLS-Media-Manifeste, um Tokens mit langer Gültigkeitsdauer weiterzugeben:

       - 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
    

    Ersetzen Sie PLAYLIST_ROUTE_DESCRIPTION durch eine Beschreibung der Route.

    In diesem Codebeispiel werden die folgenden Änderungen implementiert:

    • priority: 2: die Priorität der Route. Höhere Werte bedeuten eine niedrigere Priorität. Da die Route für Ihre Mediaplaylists mit allen Dateinamen übereinstimmt, die auf .m3u8 enden, muss die Priorität für die Route niedriger sein als die Route, die Sie zuvor für das primäre Manifest erstellt haben.
    • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Media-Playlists und Media-Segmente. Wenn Sie statische MPD-Dateien (Media Presentation Description) verwenden, können sich die langen und kurzen Schlüsselsätze unterscheiden. Wenn Sie dynamische MPD-Dateien verwenden, müssen die langen und kurzen Schlüsselsätze identisch sein.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Langzeit-Schlüsselsatz, um das vom User-Agent für Media-Playlist- und Media-Segment-Anfragen bereitgestellte Langzeit-Cookie zu validieren.
    • addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: Konfiguriert Media CDN so, dass das Langzeit-Token in die Media-Segment-URIs in den Media-Playlists kopiert wird.
  2. Segmentrouten so konfigurieren, dass Tokens mit langer Gültigkeitsdauer erforderlich sind:

       - 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
    

    Ersetzen Sie SEGMENTS_ROUTE_DESCRIPTION durch eine Beschreibung der Route.

    In diesem Codebeispiel werden die folgenden Änderungen implementiert:

    • priority: 3: die Priorität der Route. Höhere Werte bedeuten eine niedrigere Priorität. Die Priorität für diese Route muss niedriger sein als die Route, die Sie zuvor für die Media-Playlists erstellt haben.
    • signedRequestMode: REQUIRE_TOKENS: Erzwingt Tokens für Media-Playlists und Media-Segmente.
    • signedRequestKeyset: LONG_KEYSET_NAME: Media CDN verwendet den Langzeit-Schlüsselsatz, um das vom User-Agent für Media-Playlist- und Media-Segment-Anfragen bereitgestellte signierte Langzeit-Token zu validieren.

Beispiel: Konfigurationsdatei

Das folgende Codebeispiel zeigt eine vollständige Konfigurationsdatei:

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

URL-Suchparameter

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

Tokens mit kurzer Dauer auf Ihrem Anwendungsserver generieren

Informationen zum Generieren von Tokens finden Sie unter Tokens generieren.

Defense-in-Depth-Inhaltsschutz anwenden

Als Best Practice sollten Sie die Ursprungsauthentifizierung so aktivieren: