Konfigurieren Sie separate Routen, um die Dual-Token-Authentifizierung zu erzwingen, wenn Betrachter auf eine Streamingressource zugreifen. Eine Route ist eine Konfiguration, die Anfragen an Media CDN abgleicht und HTTP-Traffic an einen Ursprung weiterleitet. Media CDN unterstützt Routen für HTTP-Livestreaming-Ressourcen (HLS) oder DASH-Ressourcen (Dynamic Adaptive Streaming over HTTP). Weitere Informationen zu Routen in Media CDN finden Sie unter Dienstrouten konfigurieren.
Bei HLS-Streams unterstützt Media CDN die Dual-Token-Authentifizierung über Cookies und URL-Abfrageparameter (ohne Cookies). Bei DASH-Streams unterstützt Media CDN nur die cookiebasierte Dual-Token-Authentifizierung.
Auf dieser Seite wird beschrieben, wie Media CDN-Routen konfiguriert werden, um Inhalte mithilfe der Dual-Token-Authentifizierung zu schützen.
Hinweise
Gehen Sie dazu so vor:
Wählen Sie für Kurzzeit-Tokens einen der folgenden Signaturalgorithmen aus:
- Ed25519-Signaturen
- Symmetric-key hash-based message authentication Codes (HMACs)
Sie können symmetrische HMAC-Signaturalgorithmen nur für Routen aktivieren, die zum Generieren neuer Langzeit-Tokens konfiguriert sind. Wir empfehlen, Ed25519-Signaturen für optimale Leistung und Sicherheit sowie HMACs mit symmetrischen Schlüsseln nur dann zu verwenden, wenn dies für die Kompatibilität mit anderen CDNs erforderlich ist.
Fügen Sie die erforderlichen Schlüssel in eine
EdgeCacheKeyset
-Ressource ein.Tokens müssen mit Schlüsseln in einer
EdgeCacheKeyset
-Ressource signiert oder verifiziert werden. Das Keyset muss die richtigen Schlüssel für den ausgewählten Signaturalgorithmus enthalten. In der folgenden Tabelle werden die einzelnen Signaturalgorithmen und ihre 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 Erstellen Sie als Best Practice zwei separate Schlüsselsätze, einen für Kurzzeit-Tokens und einen für Langzeit-Tokens.
Wenn Sie jedoch DASH- und MPD-Dateien (Dynamic Media Presentation Description) verwenden, müssen Sie für Langzeit- und Kurzzeit-Tokens denselben Schlüsselsatz verwenden.
Wählen Sie für Langzeit-Tokens eines der folgenden Tokenformate aus:
- Cookies
- URL-Suchparameter
Kurzzeit-Tokens einrichten
Richten Sie je nach Signaturalgorithmus, den Sie verwenden möchten, Kurzzeit-Tokens mit einer der folgenden Optionen ein.
Ed25519-Signatur
Generieren Sie einen privaten Schlüssel:
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Ersetzen Sie
SSL_KEY_NAME
durch einen Schlüsselnamen.Generieren Sie einen öffentlichen Schlüssel aus dem privaten Schlüssel:
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])"
Erstellen Sie einen neuen Schlüsselsatz mit einem einzelnen öffentlichen Schlüssel:
Console
Rufen Sie in der Google Cloud Console die Seite Media CDN auf.
Klicken Sie auf den Tab Schlüsselsätze.
Klicken Sie auf
Schlüsselsatz erstellen.Geben Sie unter Name einen eindeutigen Schlüsselsatznamen ein.
Optional: Geben Sie unter Beschreibung eine Beschreibung für den Schlüsselsatz ein.
Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare für Ihren Schlüsselsatz ein.
Klicken Sie auf Öffentlichen Schlüssel hinzufügen und gehen Sie dann so vor:
- Geben Sie unter ID eine alphanumerische ID ein.
- Wählen Sie Wert eingeben aus und geben Sie dann den base64-codierten Wert Ihres öffentlichen Ed25519-Schlüssels an.
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 Schlüsselsatzname, z. B.prod-vod-keyset
SSL_PUBLIC_KEY_NAME
: der Name Ihres öffentlichen SSL-SchlüsselsSSL_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 prüfen.gcloud edge-cache keysets describe prod-vod-keyset
Die Ausgabe sieht in 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
Symmetrischer Schlüssel-HMAC
Wenn Sie Secret Manager noch nicht verwendet haben, konfigurieren Sie Secret Manager.
Fügen Sie eine Secret-Version im Binärformat hinzu.
Weisen Sie dem Media CDN-Dienstkonto die Secret Manager-Zugriffsrolle (
roles/secretmanager.secretAccessor
) zu:Console
Wechseln Sie in der Google Cloud Console zur Seite Secret Manager.
Klicken Sie auf das Kästchen neben dem Namen des Secrets.
Klicken Sie auf Infofeld anzeigen.
Klicken Sie im Infofeld auf Hauptkonto hinzufügen.
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.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ührengcloud 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 ProjektnummerSECRET_ID
: die ID des Secrets
Greifen Sie auf Ihre Secret-Versionen zu und kopieren Sie die Secret-Pfade, einschließlich der Versionsnummern.
Erstellen Sie einen neuen Schlüsselsatz mit den gemeinsamen Secrets in einem freigegebenen Validierungsschlüssel:
Console
Rufen Sie in der Google Cloud Console die Seite Media CDN auf.
Klicken Sie auf den Tab Schlüsselsätze.
Klicken Sie auf
Schlüsselsatz erstellen.Geben Sie unter Name einen eindeutigen Schlüsselsatznamen ein.
Optional: Geben Sie unter Beschreibung eine Beschreibung für den Schlüsselsatz ein.
Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare für Ihren Schlüsselsatz ein.
Um einen freigegebenen Validierungsschlüssel anzugeben, klicken Sie auf Freigegebene Validierungsschlüssel hinzufügen und gehen Sie dann so vor:
Wählen Sie für Secret ein Secret aus der Liste aus oder geben Sie ein Secret manuell ein, indem Sie dessen Ressourcen-ID angeben, oder erstellen Sie ein neues Secret und wählen Sie es dann aus.
Wählen Sie unter Secret-Version eine Version aus der Liste aus oder erstellen Sie eine neue Secret-Version und wählen Sie diese dann aus.
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 den Schlüsselsatz, z. B.prod-vod-keyset
PROJECT_NUMBER
: Ihre Projekt-ID.SECRET_ID
: die Ressourcen-ID des SecretsKEY_VERSION
: die Secret-Version, die Sie verwenden möchten
Langzeit-Tokens einrichten
Von Google verwaltete Schlüssel werden durch einen Schlüsselsatz begrenzt. Das bedeutet, dass zwei verschiedene Schlüsselsätze unterschiedliche von Google verwaltete Schlüssel haben. Von Google verwaltete Schlüssel werden regelmäßig rotiert.
Richten Sie Langzeit-Tokens mit einer der folgenden Optionen ein:
Console
Wählen Sie im Abschnitt Schlüssel die Option Von Google verwalteten Schlüssel für Dual-Token-Authentifizierung verwenden aus.
gcloud und YAML
Verwenden Sie eine der folgenden Optionen:
Erstellen Sie einen von Google verwalteten Signaturschlüssel:
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
.So ändern Sie einen vorhandenen Schlüsselsatz:
Exportieren Sie Ihr Keyset 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
Bearbeiten Sie die Schlüsselsatzkonfiguration in einem Texteditor oder in Ihren Tools zur Konfigurationsverwaltung so, dass 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
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 zusätzliche öffentliche Schlüssel in den Schlüsselsatz für Langzeit-Tokens aufnehmen. Der Schlüsselsatz kann höchstens drei öffentliche Schlüssel haben. In der Praxis bedeutet dies, dass der Schlüsselsatz zwei vom Nutzer verwaltete Schlüssel und einen von Google verwalteten Schlüssel haben kann.
Media CDN verwendet immer den von Google verwalteten Schlüssel, um Tokens zu generieren. Die vom Nutzer verwalteten Schlüssel können nur zur Bestätigung verwendet werden.
Das Einschließen zusätzlicher öffentlicher Schlüssel ist nützlich, damit Ihre Player-Anwendung auf Medienplaylists und Mediensegmente zugreifen kann. Dazu werden signierte Anfragen verwendet, die mit Ihren eigenen privaten Schlüsseln generiert werden.
Tokenaustausch konfigurieren
In diesem Abschnitt wird gezeigt, wie Sie den Tokenaustausch durch Erstellen mehrerer Routen konfigurieren. Mit einer Route können Sie das Verhalten basierend auf dem Inhaltstyp, Clientattributen und Ihren Aktualitätsanforderungen optimieren. In den folgenden Beispielen verwenden wir Routen, um den Tokenaustausch für jeden Teil einer Medienanfrage zu konfigurieren.
Konfigurieren Sie die primäre Manifestroute so, dass Kurzzeit-Tokens erforderlich sind
Konfigurieren Sie Media CDN so, dass Tokens mit kurzer Dauer auf der primären Manifestroute erforderlich sind.
Console
Aktivieren Sie die kurzzeitige Tokenauthentifizierung auf der primären Manifestroute:
Rufen Sie in der Google Cloud Console die Seite Media CDN auf.
Klicken Sie auf den Namen eines Dienstes, um die Seite Details zu öffnen.
Klicken Sie auf die Schaltfläche Bearbeiten, um in den Bearbeitungsmodus zu wechseln.
Klicken Sie auf Weiter, um zum Abschnitt Routing zu gehen.
Maximieren Sie die Hostregel, der Sie die Routingregel des primären Manifests hinzufügen möchten.
Klicken Sie auf Weiterleitungsregel hinzufügen.
Wenn Sie eine Routingregel bearbeiten möchten, klicken Sie in der entsprechenden Zeile auf
Bearbeiten.Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, z. B.
1
.Geben Sie unter Beschreibung eine kurze Beschreibung ein, mit der Sie die Regel in der Liste der Regeln identifizieren können.
Klicken Sie im Bereich Übereinstimmung auf Übereinstimmungsbedingung hinzufügen. Gehen Sie dann so vor:
- Wählen Sie unter Übereinstimmungstyp die Option Übereinstimmung mit Pfadvorlage aus.
- Geben Sie unter Pfadabgleich die Namen oder Pfadvorlagen für die primäre HLS-Playlist (M3U8) oder die DASH-Manifestdatei (MPD) an. Weitere Informationen finden Sie unter Pfadabgleich.
Klicken Sie auf Erweiterte Konfigurationen.
Klicken Sie im Abschnitt Routingaktion auf Element hinzufügen.
Wählen Sie für Typ die Option CDN-Richtlinie aus.
Wählen Sie im Abschnitt Signierte Anfrage für Modus für signierte Anfrage die Option Token erforderlich aus.
Führen Sie im Abschnitt Keyset für signierte Anfrage die folgenden Schritte aus:
Klicken Sie zum Angeben des Schlüsselsatzes für Kurzzeit-Tokens auf Schlüsselsatz auswählen und wählen Sie Ihr Kurzzeit-Token-Keyset aus.
Alternativ können Sie auf Neuen Schlüsselsatz erstellen klicken, um ein neues Keyset mit den benötigten Schlüsseln zu erstellen. Wählen Sie es dann aus.
Wählen Sie für Signature algorithm (Signaturalgorithmus) die Option Ed25519 using public keys (Ed25519 mit öffentlichen Schlüsseln verwenden) aus.
Behalten Sie für Token-Abfrageparameter den Standardwert
edge-cache-token
bei.Wenn Sie vorhaben, URL-Abfrageparameter des HLS-Manifests anstelle von Cookies zur Authentifizierung zu verwenden, geben Sie den Parameter an, in dem die Anfragetokens gespeichert werden sollen.
Geben Sie unter Max. Gültigkeitsdauer die maximale Lebensdauer eingehender Anfragetokens in Sekunden an.
Klicken Sie zum Speichern der Änderungen im Abschnitt Routenaktion auf Fertig.
Klicken Sie auf Speichern, um die Änderungen an der Routingregel zu speichern.
gcloud und YAML
Exportiere deine 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 DienstesFILENAME
: der Name Ihrer YAML-Datei
Geben Sie im Abschnitt
cdnPolicy
der Route in der YAML-Datei einesignedTokensOptions
-Konfiguration an, um die Authentifizierung von Kurzzeit-Tokens in der Routingregel des primären Manifests zu aktivieren.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 RoutingregelROUTE_DESCRIPTION
: eine Beschreibung der RoutingregelORIGIN_NAME
: Name des UrsprungsMANIFEST_OR_PLAYLIST
: der Name der primären HLS-Playlist (M3U8) oder der DASH-Manifestdatei (MPD). Weitere Informationen finden Sie unter Pfadabgleich.SHORT_KEYSET_NAME
: der Schlüsselsatzname, der für Kurzzeit-Tokens verwendet werden sollSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: die Ablaufzeit für signierte Anfragen, z. B.600s
. Weitere Informationen finden Sie untersignedRequestMaximumExpirationTtl
.- Optional:
SHORT_TOKEN_NAME
: der Abfrageparameter, in dem das kurze Token gesucht wird. Der Standardwert istedge-cache-token
. Weitere Informationen finden Sie unterSignedTokenOptions
.
Wenn Sie HMACs mit symmetrischem Schlüssel verwenden, fügen Sie im Abschnitt
signedTokenOptions
allowedSignatureAlgorithms
mit dem WertHMAC_SHA_256
an:allowedSignatureAlgorithms: - HMAC_SHA_256
Importieren Sie Ihre Media CDN-Konfiguration aus der YAML-Datei, um den Dienst zu aktualisieren. 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 Einzeltoken-Authentifizierung abgeschlossen.
Fahren Sie mit den folgenden Abschnitten fort, um die Dual-Token-Authentifizierung zu konfigurieren.
Primäre Routingregel für Manifeste konfigurieren, um Langzeit-Tokens 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 primäre Routingregel für das Manifest so, dass Media CDN Langzeit-Tokens für die Route generieren kann:
- Klicken Sie auf der Seite Routingregel bearbeiten auf Erweiterte Konfigurationen.
- Wählen Sie für Typ die Option CDN-Richtlinie aus.
- Maximieren Sie Dual-Token-Authentifizierung.
- Wählen Sie unter Signature action (Signaturaktion) die Option Generate new long-duration token (Neues Langzeit-Token generieren) aus.
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 URL-Suchparameter des HLS-Manifests (ohne Cookies): Konfiguriert Media CDN so, dass das primäre HLS-Manifest bearbeitet wird, indem an jede URL ein Langzeit-Token angehängt wird.
- über Cookies (für HLS- und DASH-Streaming): Konfiguriert Media CDN so, dass ein
Führen Sie im Abschnitt Neues Langzeit-Token generieren die folgenden Schritte aus:
Wenn Sie einen Schlüsselsatz für Langzeit-Tokens angeben möchten, klicken Sie auf Schlüsselsatz auswählen und wählen Sie Ihren Schlüsselsatz für Langzeit-Tokens aus.
Alternativ können Sie auf Neues Schlüsselsatz erstellen klicken, um ein neues Keyset zu erstellen, das die benötigten Schlüssel enthält. Wählen Sie es dann aus.
Geben Sie für Token-TTL die maximale Lebensdauer des Langzeit-Tokens in Sekunden an.
Wenn Sie für den Signaturtyp die Option über Cookies ausgewählt haben, wählen Sie im Abschnitt Kopierte Parameter die Parameter aus, die Media CDN vom 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 zugehörigen Aliasse,acl
oderpaths
) oderURLPrefix
auswählen.Wenn Sie die Option über HLS-Manifest-URL-Suchparameter ausgewählt haben, behalten Sie für Token-Abfrageparameter den Standardwert
edge-cache-token
bei.
Klicken Sie zum Speichern der Änderungen im Abschnitt Routenaktion auf Fertig.
Klicken Sie auf Speichern, um die Änderungen an der Routingregel zu speichern.
Sie werden in einer Meldung gefragt, ob die Routen für Medienplaylists und -segmente automatisch oder manuell erstellt werden sollen. Wenn Sie die Option „Automatisch“ auswählen, werden eine einzelne neue Route für die Cookie-Signatur und zwei Routen für die Signatur ohne Cookies 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 auf der 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 Langzeit-Token-SchlüsselsatzesTOKEN_EXPIRATION_TIME
: die Ablaufzeit des Langzeit-Tokens, 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 einEdge-Cache-Cookie
mit der primären Manifestantwort zurückgegeben wird.copiedParameters.PathGlobs
: Konfiguriert Media CDN so, dass dasPathGlobs
vom Kurzzeit-Token in das Langzeit-Token kopiert wird. Für die Dual-Token-Authentifizierung müssen Sie entwedercopiedParameters.PathGlobs
odercopiedParameters.URLPrefix
verwenden. Weitere Informationen finden Sie untercopiedParameters
.Optional:
copiedParameters.SessionID
: Konfiguriert Media CDN so, dass dieSessionID
vom Kurzzeit-Token in das Langzeit-Token kopiert wird.
Wenn die Aktion GENERATE_COOKIE
angewendet wird, gibt Media CDN mit der primären Manifestantwort einen Set-Cookie
-Header wie den 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 Langzeit-SchlüsselsatzesTOKEN_EXPIRATION_TIME
: die Ablaufzeit des Langzeit-Tokens, 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. Dazu wird an jeden vorhandenen URI ein Langzeit-Token angehängt.copiedParameters.PathGlobs
: Konfiguriert Media CDN so, dass dasPathGlobs
vom Kurzzeit-Token in das Langzeit-Token kopiert wird. Für die Dual-Token-Authentifizierung müssen SiecopiedParameters.PathGlobs
odercopiedParameters.URLPrefix
verwenden. Weitere Informationen finden Sie untercopiedParameters
.Optional:
copiedParameters.SessionID
: Konfiguriert Media CDN so, dass dieSessionID
vom 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 istedge-cache-token
. Weitere Informationen finden Sie untertokenQueryParameter
.
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 prüft das Kurzzeit-Token und generiert und speichert dann das Langzeit-Token im Abfrageparameter LONG_TOKEN_NAME
.
Konfigurieren Sie die Mediaplaylist und segmentieren Sie Routen so, dass Langzeit-Tokens erforderlich sind
Konfigurieren Sie die Medienplaylist und segmentieren Sie Routen so, dass Langzeit-Tokens erforderlich sind.
Console
Cookies
Erstellen Sie eine Routingregel für die Route der Medienplaylist und der Segmente:
- Klicken Sie auf der Seite Edge-Cache-Dienst bearbeiten im Abschnitt Routing auf die Hostregel mit der primären Manifestroute.
- Klicken Sie auf Weiterleitungsregel hinzufügen.
- Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, der höher als der Wert der primären Manifestroute ist, z. B.
2
. Höhere Werte zeigen eine niedrigere Priorität an. - Geben Sie unter Beschreibung eine kurze Beschreibung ein, mit der Sie die Regel in der Liste der Regeln identifizieren können.
Legen Sie die folgenden Felder wie empfohlen fest:
- Ursprung auswählen: derselbe wie für die Routingregel des primären Manifests
- Übereinstimmungsbedingung hinzufügen: wie für die Routingregel des primären Manifests.
- Type (Typ): CDN-Richtlinie
- Modus für signierte Anfrage: Token erforderlich
- Schlüsselsatz auswählen: wie für Langzeit-Tokens
- Signaturalgorithmus: derselbe wie für die Routingregel des primären Manifests
Maximieren Sie Dual-Token-Authentifizierung.
Behalten Sie für Signature action (Signaturaktion) den Standardwert None (Keine) bei.
Klicken Sie auf Fertig und anschließend auf Speichern.
URL-Suchparameter
Erstellen Sie eine Routingregel für die Medienplaylist.
- Klicken Sie auf der Seite Edge-Cache-Dienst bearbeiten im Abschnitt Routing auf die Hostregel mit der primären Manifestroute.
- Klicken Sie auf Weiterleitungsregel hinzufügen.
- Legen Sie im Bereich Routingregel bearbeiten für Priorität einen Wert fest, der größer als der Wert der primären Manifestroute ist, z. B.
2
. Höhere Werte zeigen eine niedrigere Priorität an. - Geben Sie unter Beschreibung eine kurze Beschreibung ein, mit der die Regel in der Liste der Regeln identifiziert werden kann.
Legen Sie die folgenden Felder wie empfohlen fest:
- Ursprung auswählen: derselbe wie für die Routingregel des primären Manifests
- Übereinstimmungsbedingung hinzufügen: dieselbe wie für die Routingregel des primären Manifests.
- Type (Typ): CDN-Richtlinie
- Modus für signierte Anfrage: Token erforderlich
- Schlüsselsatz auswählen: identisch mit Langzeit-Tokens
- Signaturalgorithmus: derselbe wie für die Routingregel des primären Manifests
- Token-Suchparameter: wie für Langzeit-Tokens
Maximieren Sie Dual-Token-Authentifizierung.
Wählen Sie unter Signatureaktion die Option Vorhandenes Langzeit-Token weitergeben aus.
Diese Option wird erst aktiviert, nachdem Media CDN verifiziert hat, dass das Langzeit-Token mithilfe des Signaturtyps über HLS-Manifest-URL-Abfrageparameter (ohne Cookies) generiert wurde.
Behalten Sie für Token-Abfrageparameter den Standardwert
edge-cache-token
bei.Klicken Sie auf Fertig und anschließend auf Speichern.
Erstellen Sie eine Routingregel für Mediensegmente.
Diese Route entspricht der Route für Medienplaylists, mit folgenden wichtigen Unterschieden:
- Legen Sie als Priorität einen Wert fest, der größer als der der Routingregel der Medienplaylist ist, z. B.
3
. - Geben Sie unter Beschreibung eine kurze Beschreibung ein, mit der die Regel in der Liste der Regeln identifiziert werden kann.
- Behalten Sie im Abschnitt Dual-Token-Authentifizierung für Signature action (Signaturaktion) den Standardwert None bei.
- Legen Sie als Priorität einen Wert fest, der größer als der der Routingregel der Medienplaylist ist, z. B.
gcloud und YAML
Bearbeiten Sie die YAML-Datei:
Cookies
Konfigurieren Sie die Mediaplaylist und die 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 zeigen eine niedrigere Priorität an. Da die Route für Ihre Medienplaylists und Mediensegmente mit jedem Dateinamen mit der Endung.m3u8
übereinstimmt, 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 Medienplaylists und Mediensegmente. Wenn Sie MPD-Dateien (Static Media Presentation Description) verwenden, können sich die langen und die kurzen Keysets unterscheiden. Wenn Sie dynamische MPD-Dateien verwenden, müssen die langen und die kurzen Keysets identisch sein.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Langzeit-Schlüsselsatz, um das Langzeit-Cookie zu validieren, das von einem User-Agent für Anfragen zu Medienplaylists und Mediensegmenten bereitgestellt wird.
URL-Suchparameter
Fügen Sie zwei Routenkonfigurationen hinzu:
Konfigurieren Sie die Routen des HLS-Medienmanifests so, dass Langzeit-Tokens weitergegeben werden:
- 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 zeigen eine niedrigere Priorität an. Da die Route für Ihre Medienplaylists mit allen Dateinamen mit der Endung.m3u8
übereinstimmt, 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 Medienplaylists und Mediensegmente. Wenn Sie MPD-Dateien (Static Media Presentation Description) verwenden, können sich die langen und die kurzen Keysets unterscheiden. Wenn Sie dynamische MPD-Dateien verwenden, müssen die langen und kurzen Keysets identisch sein.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Langzeit-Schlüsselsatz, um das Langzeit-Cookie zu validieren, das von einem User-Agent für Anfragen zu Medienplaylists und Mediensegmenten bereitgestellt wird.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: Konfiguriert Media CDN so, dass das Langzeit-Token in die URIs der Mediensegmente in den Medienplaylists kopiert wird.
Konfigurieren Sie die Segmentrouten so, dass Langzeit-Tokens 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 zeigen eine niedrigere Priorität an. Die Priorität dieser Route muss niedriger sein als die der Route, die Sie zuvor für die Medienplaylists erstellt haben.signedRequestMode: REQUIRE_TOKENS
: Erzwingt Tokens für Medienplaylists und Mediensegmente.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Langzeit-Schlüsselsatz, um das von einem User-Agent bereitgestellte Langzeit-Token für signierte Playlists für Medienplaylist- und Mediensegmentanfragen zu validieren.
Beispiel: Konfigurationsdatei
Das folgende Codebeispiel zeigt eine fertige 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
Kurzzeit-Tokens auf dem Anwendungsserver generieren
Informationen zum Generieren von Tokens finden Sie unter Token generieren.
Gestaffelte Sicherheitsebenen anwenden
Als Best Practice sollten Sie die Ursprungsauthentifizierung so aktivieren:
Verwenden Sie für Cloud Storage die Berechtigungen für Identitäts- und Zugriffsverwaltung mit privaten Cloud Storage-Buckets.
Verwenden Sie für AWS-kompatible Speicheranbieter AWS Signature Version 4. Durch die Ursprungsauthentifizierung werden Anfragen blockiert, mit denen versucht wird, Media CDN zu umgehen und direkt auf Ihren Ursprung zuzugreifen.