Wenn du die Zwei-Token-Authentifizierung erzwingen möchtest, wenn Zuschauer auf eine Streamingressource zugreifen, musst du separate Routen konfigurieren. Eine Route ist eine Konfiguration, für Media CDN und leitet HTTP-Traffic an einen Ursprung weiter. Media CDN unterstützt Routen für Ressourcen für HTTP Live Streaming (HLS) oder Dynamic Adaptive Streaming over HTTP (DASH). Weitere Informationen zu Routen in Media CDN findest du unter Dienstrouten konfigurieren.
Bei HLS-Streams unterstützt Media CDN die Dual-Token-Authentifizierung über Cookies und URL-Suchparameter (ohne Cookies). Für DASH-Streams unterstützt Media CDN nur die cookiebasierte Dual-Token-Authentifizierung.
Auf dieser Seite wird beschrieben, wie Sie Media CDN-Routen konfigurieren, um Inhalte mit 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 Tokens mit langer Gültigkeit konfiguriert sind. Wir empfehlen die Verwendung von Ed25519 Signaturen für optimale Leistung und Sicherheit sowie HMACs mit symmetrischen Schlüsseln 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 einem
EdgeCacheKeyset
signiert oder verifiziert werden . Der Schlüsselsatz muss die richtigen Schlüssel für den ausgewählten Signaturalgorithmus verwendet. In der folgenden Tabelle werden die einzelnen Signaturalgorithmen und die 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 Tokens mit kurzer Gültigkeitsdauer und einen für Tokens mit langer Gültigkeitsdauer.
Wenn du jedoch DASH- und MPD-Dateien (Dynamic Media Presentation Description) verwendest, musst du für Token mit langer und kurzer Dauer dasselbe Schlüsselset verwenden.
Wählen Sie für Langzeit-Tokens eines der folgenden Tokenformate aus:
- Cookies
- URL-Suchparameter
Tokens mit kurzer Gültigkeitsdauer einrichten
Richten Sie je nach Signaturalgorithmus, den Sie verwenden möchten, Tokens mit einer der folgenden Optionen.
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])"
So 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 des Schlüsselsatzes ein.
Optional: Klicken Sie auf Label hinzufügen und geben Sie dann 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 Name für das Schlüsselset, z. B.prod-vod-keyset
SSL_PUBLIC_KEY_NAME
: der Name Ihres öffentlichen SSL-SchlüsselsSSL_PUBLIC_KEY_VALUE
: der Wert Ihres Öffentlicher SSL-Schlüssel
Um die mit dem Schlüsselsatz verknüpften Schlüssel zu überprüfen, verwenden Sie den
gcloud edge-cache keysets describe
-Befehlgcloud 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
HMAC mit symmetrischem Schlüssel
Wenn Sie Secret Manager noch nicht verwendet haben, Konfigurieren Sie Secret Manager.
Fügen Sie eine Secret-Version im Binärformat hinzu.
Secret Manager-Zugriffsrolle gewähren (
roles/secretmanager.secretAccessor
) an das Media CDN Dienstkonto:Console
Wechseln Sie in der Google Cloud Console zur Seite Secret Manager.
Klicken Sie das Kästchen neben dem Namen des Secrets an.
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 Ihr Projekt. Nummer.Wählen Sie unter Rolle auswählen die Option Secret Manager und dann Zugriffsperson 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
Auf Secret-Versionen zugreifen 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 des Schlüsselsatzes ein.
Optional: Klicken Sie auf Label hinzufügen und geben Sie ein oder mehrere Schlüssel/Wert-Paare ein. für Ihren Schlüsselsatz.
Um einen freigegebenen Validierungsschlüssel anzugeben, klicken Sie auf Freigegebene Validierungsschlüssel hinzufügen. und gehen Sie dann so vor:
Wählen Sie unter 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.
Wählen Sie für Secret-Version eine Version aus der Liste aus oder neue Secret-Version erstellen und wählen es 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 die Keyset, z. B.prod-vod-keyset
PROJECT_NUMBER
: Ihre Projekt-ID.SECRET_ID
: die Ressourcen-ID des SecretsKEY_VERSION
: die Version des Geheimnisses, die Sie verwenden möchten
Langzeit-Tokens einrichten
Von Google verwaltete Schlüssel sind auf Schlüsselsätze beschränkt. 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 verwenden. Authentifizierung.
gcloud und YAML
Verwenden Sie eine der folgenden Optionen:
So erstellen Sie einen von Google verwalteten Signaturschlüssel:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
LONG_KEYSET_NAME
durch einen Schlüssel ersetzen Name, z. B.prod-vod-keyset-long
.So ändern Sie einen vorhandenen Schlüsselsatz:
Exportieren Sie den 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
Bearbeiten Sie die Keyset-Konfiguration in einem Texteditor oder in Ihrem Tool 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 das bearbeitete Schlüsselset. 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. Die Keyset darf höchstens drei öffentliche Schlüssel haben. In der Praxis bedeutet dies, Keyset kann zwei vom Nutzer verwaltete Schlüssel und einen von Google verwalteten Schlüssel haben.
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.
Wenn du zusätzliche öffentliche Schlüssel einschließt, kann deine Player-Anwendung mithilfe von signierten Anfragen, die mit deinen eigenen privaten Schlüsseln generiert werden, auf Medienplaylists und Mediensegmente zugreifen.
Tokenaustausch konfigurieren
In diesem Abschnitt wird gezeigt, wie Sie den Token-Austausch 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 Token-Austausch für jeden Teil einer Medienanfrage zu konfigurieren.
Konfigurieren Sie die primäre Manifestroute so, dass Kurzzeit-Tokens erforderlich sind
Konfiguriere Media CDN so, dass für die primäre Manifest-Route Kurzzeit-Tokens 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 gelangen.
Maximieren Sie die Hostregel, der Sie die primäre Manifest-Wegbeschreibungsregel hinzufügen möchten.
Klicken Sie auf Weiterleitungsregel hinzufügen.
Alternativ können Sie eine Routenregel bearbeiten, indem Sie in der entsprechenden Zeile auf
Bearbeiten klicken.Legen Sie im Bereich Routenregel bearbeiten für Priorität einen Wert fest, z. B.
1
.Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit der Regel in der Liste der Regeln.
Klicken Sie im Bereich Abgleich auf Abgleichsbedingung hinzufügen. Führen Sie dann die folgenden Schritte aus:
- 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 DASH-Manifestdatei (MPD). Weitere Informationen Weitere Informationen
Klicken Sie auf Erweiterte Konfigurationen.
Klicken Sie im Bereich Routenaktion 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
Führen Sie im Abschnitt Keyset für signierte Anfrage die folgenden Schritte aus:
Um den Schlüsselsatz für Kurzzeit-Tokens anzugeben, klicken Sie auf Wählen Sie einen Schlüsselsatz aus und wählen Sie den gewünschten Kurzzeit-Token-Schlüsselsatz.
Alternativ können Sie zum Erstellen eines neuen Schlüsselsatzes mit den benötigten Schlüsseln Klicken Sie auf Neuen Schlüsselsatz 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 bei.
edge-cache-token
Wenn du stattdessen URL-Suchparameter des HLS-Manifests anstelle von Cookies für die Authentifizierung verwenden möchtest, gib 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 auf Fertig, um die Änderungen im Bereich Wegbewegungsaktion zu speichern.
Klicken Sie auf Speichern, um die Änderungen an der Routingregel zu speichern.
gcloud und YAML
Exportiere die Media CDN-Konfiguration in eine YAML-Datei. Verwenden Sie die Methode
gcloud edge-cache services export
-Befehlgcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Ersetzen Sie Folgendes:
SERVICE_NAME
: der Name Ihres DienstesFILENAME
: der Name der YAML-Datei
So aktivieren Sie die kurzzeitige Tokenauthentifizierung im primären Manifest: der Routingregel im Abschnitt
cdnPolicy
der YAML-Datei einesignedTokensOptions
-Konfiguration angeben.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 des RoutingregelORIGIN_NAME
: der Name des UrsprungsMANIFEST_OR_PLAYLIST
: der Name der HLS primäre Playlist (M3U8) oder eine DASH-Manifestdatei (MPD) hochladen. Weitere Informationen Weitere InformationenSHORT_KEYSET_NAME
: der Name des Schlüsselsatzes, der für Tokens mit kurzer Gültigkeit verwendet werden sollSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: die Ablaufzeit für signierte Anfragen, z. B.600s
. Für Weitere Informationen finden Sie untersignedRequestMaximumExpirationTtl
.- Optional:
SHORT_TOKEN_NAME
: Der Abfrageparameter, in dem das Kurz-Token gefunden werden soll. Der Standardwert istedge-cache-token
. Weitere Informationen finden Sie unterSignedTokenOptions
.
Bei Verwendung von HMACs mit symmetrischem Schlüssel geben Sie im Abschnitt
signedTokenOptions
Fügen SieallowedSignatureAlgorithms
mit dem WertHMAC_SHA_256
an:allowedSignatureAlgorithms: - HMAC_SHA_256
Importieren Sie Ihre Media CDN-Konfiguration, um den Dienst zu aktualisieren. aus der YAML-Datei. Verwenden Sie die Methode
gcloud edge-cache services import
-Befehlgcloud 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
Media CDN so konfigurieren, dass Langzeit-Tokens im primären Manifest-Route. Wählen Sie entweder Cookies oder URL-Suchparameter aus, um diese Tokens zu generieren.
Console
Ändere die primäre Manifest-Routenregel so, dass Media CDN auf der Route Langzeit-Tokens 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 unter Signaturtyp eine der folgenden Optionen aus:
- über Cookies (für HLS- und DASH-Streaming): konfiguriert
Media CDN, mit dem ein
Edge-Cache-Cookie
zurückgegeben werden soll die primäre Manifestantwort. - über HLS-Manifest-URL-Suchparameter (ohne Cookies): konfiguriert Media CDN kann das primäre HLS-Manifest bearbeiten, indem ein Langzeit-Token an jede URL angehängt.
- über Cookies (für HLS- und DASH-Streaming): konfiguriert
Media CDN, mit dem ein
Gehen Sie im Bereich Neues Langzeit-Token generieren so vor:
Wenn Sie ein Schlüsselsatz für Tokens mit langer Gültigkeit angeben möchten, klicken Sie auf Schlüsselsatz auswählen und wählen Sie den Schlüsselsatz für Tokens mit langer Gültigkeit aus.
Alternativ können Sie auf Neuen Schlüsselsatz erstellen klicken, um einen neuen Schlüsselsatz zu erstellen, der enthält die benötigten Schlüssel. Wählen Sie es dann aus.
Geben Sie unter Token-TTL die maximale Lebensdauer des Tokens mit langer Gültigkeit in Sekunden an.
Wenn du unter Signaturtyp die Option über Cookies ausgewählt hast, wähle 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 ihrer Aliasse,acl
oderpaths
) oderURLPrefix
auswählen.Wenn du die Option über URL-Suchparameter des HLS-Manifests ausgewählt hast, behalte für den Token-Suchparameter 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.
Es wird eine Meldung angezeigt, in der du gefragt wirst, ob du die Routen für Medienplaylists und ‑segmente automatisch oder manuell erstellen möchtest. Wenn Sie das Option „Automatisch“ wird eine einzelne neue Route für die Cookie-Signatur erstellt. und zwei Routen für die Signatur ohne Cookies. Wenn Sie die manuelle Option auswählen, fahren Sie mit dem nächsten Abschnitt fort.
gcloud und YAML
Ändere den Abschnitt addSignatures
der primären Manifest-Routingregel so, dass Media CDN auf der Route Tokens mit langer Gültigkeit 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 des Schlüsselsatzes für langlebige TokensTOKEN_EXPIRATION_TIME
: die Ablaufzeit des Langzeit-Tokens, z. B.86400s
für einen Tag Ablaufzeit
In diesem Codebeispiel werden die folgenden Änderungen implementiert:
addSignatures.actions: GENERATE_COOKIE
: Konfiguriert Media CDN so, dass eineEdge-Cache-Cookie
mit der primären Manifestantwort zurückgegeben wird.copiedParameters.PathGlobs
: Konfiguriert Media CDN zum KopierenPathGlobs
vom Kurzzeit-Token in das Langzeit-Token Token. Wenn Sie die Authentifizierung mit zwei Tokens verwenden möchten, müssen Sie entwedercopiedParameters.PathGlobs
odercopiedParameters.URLPrefix
verwenden. Weitere Informationen finden Sie untercopiedParameters
.Optional:
copiedParameters.SessionID
: konfiguriert Media CDN zum Kopieren derSessionID
aus der Kurzzeit-App Token zum Langzeit-Token
Wenn die GENERATE_COOKIE
-Aktion angewendet wird, gibt Media CDN einen Set-Cookie
-Header zurück, der in etwa so aussieht wie der folgende, zusammen mit der primären Manifestantwort:
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 des Schlüsselsatzes mit langer GültigkeitTOKEN_EXPIRATION_TIME
: die Ablaufzeit des Tokens mit langer Gültigkeit, z. B.86400s
für eine Gültigkeitsdauer von einem Tag
In diesem Codebeispiel werden die folgenden Änderungen implementiert:
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS
: Media CDN wird so konfiguriert, dass das primäre HLS-Manifest manipuliert wird, indem jedem vorhandenen URI ein Langzeit-Token angehängt wird.copiedParameters.PathGlobs
: Hiermit wird Media CDN so konfiguriert, dass dasPathGlobs
aus dem Kurzzeit-Token in das Langzeit-Token kopiert wird. Wenn Sie die Authentifizierung mit zwei Tokens verwenden möchten, müssen SiecopiedParameters.PathGlobs
odercopiedParameters.URLPrefix
verwenden. Weitere Informationen Weitere Informationen finden Sie untercopiedParameters
.Optional:
copiedParameters.SessionID
: Konfiguriert Media CDN umSessionID
aus dem Kurzzeit-Token in den Langzeit-Token.Optional:
LONG_TOKEN_NAME
: Der Abfrageparameter, in dem das generierte Long-Token eingefügt werden soll. Der Standardwert istedge-cache-token
. Weitere Informationen finden Sie untertokenQueryParameter
.
In der folgenden Manifestdatei ist die angewendete GENERATE_TOKEN_HLS_COOKIELESS
-Aktion zu sehen:
#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 das Langzeit-Token im
LONG_TOKEN_NAME
.
Routen für Medienplaylists und ‑segmente so konfigurieren, dass Langzeit-Tokens erforderlich sind
Konfigurieren Sie die Medienplaylist und segmentieren Sie Routen so, dass sie lange dauern. Tokens.
Console
Cookies
Erstellen Sie eine Routingregel für die Route der Medienplaylist und der Segmente:
- Gehen Sie auf der Seite Edge-Cache-Dienst bearbeiten im Abschnitt Routing so vor: Klicken Sie 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 die primäre Manifestroute ist, z. B.
2
. Höhere Werte bedeuten eine niedrigere Priorität. - Geben Sie unter Beschreibung eine kurze Beschreibung ein, damit der Regel in der Liste der Regeln.
Legen Sie die folgenden Felder wie vorgeschlagen fest:
- Herkunft auswählen: wie bei der primären Manifest-Routenregel
- Übereinstimmungsbedingung hinzufügen: wie bei der primären Manifest-Routenregel
- Type (Typ): CDN-Richtlinie
- Modus für signierte Anfrage: Tokens 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 Signaturaktion den Standardwert 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 Bereich 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.
größer als die der primären Manifestroute ist –
Beispiel:
2
. Höhere Werte zeigen eine niedrigere Priorität an. - Geben Sie unter Description (Beschreibung) eine kurze Beschreibung ein, die identifizieren Sie die Regel in der Liste.
Legen Sie die folgenden Felder wie empfohlen fest:
- Ursprung auswählen: Entspricht der primären Manifest-Routenregel.
- Übereinstimmungsbedingung hinzufügen: Entspricht der Bedingung für die primäre Manifest-Routenregel.
- Type (Typ): CDN-Richtlinie
- Modus für signierte Anfrage: Token erforderlich
- Schlüsselsatz auswählen: wie bei Tokens mit langer Gültigkeit
- Signaturalgorithmus: derselbe wie für das primäre Manifest Routingregel
- Abfrageparameter für Tokens: wie bei Tokens mit langer Gültigkeit
Maximieren Sie Dual-Token-Authentifizierung.
Wählen Sie unter Signaturaktion die Option Vorhandenes Langzeit-Token weitergeben aus.
Diese Option wird erst aktiviert, nachdem Media CDN überprüft hat, ob das Token mit langer Laufzeit mit dem Signaturtyp über URI-Abfrageparameter des HLS-Manifests (ohne Cookies) generiert wurde.
Behalten Sie für Abfrageparameter für Tokens den Standardwert
edge-cache-token
bei.Klicken Sie auf Fertig und anschließend auf Speichern.
Erstellen Sie eine Routenregel für Mediensegmente.
Diese Route ähnelt der Route für Medienplaylists, mit den folgenden wichtigen Unterschieden:
- Legen Sie für Priority (Priorität) einen Wert fest, der größer als der der Medien ist.
Playlist-Routingregel, z. B.
3
. - Geben Sie unter Beschreibung eine kurze Beschreibung ein, anhand derer sich die Regel in der Liste der Regeln leichter identifizieren lässt.
- Behalten Sie im Abschnitt Zwei-Token-Authentifizierung für Signaturaktion den Standardwert Keine bei.
- Legen Sie für Priority (Priorität) einen Wert fest, der größer als der der Medien ist.
Playlist-Routingregel, z. B.
gcloud und YAML
Bearbeiten Sie die YAML-Datei:
Cookies
Konfiguriere die Medienplaylist und die Segmente so, dass für sie Cookies mit langer Gültigkeitsdauer 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 bedeuten niedrigere Werte. Priorität haben. Da die Route für deine Medienplaylists und ‑segmente mit allen Dateinamen übereinstimmt, die auf.m3u8
enden, 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 Medienplaylists und Mediensegmente. Bei Verwendung statischer Medien Präsentationsbeschreibung (MPD), dann die langen und kurzen Keysets können abweichen. Wenn Sie dynamische MPD-Dateien verwenden, Kurze Schlüsselsätze müssen identisch sein.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Cookie, das von einem User-Agent für die Medienplaylist bereitgestellt wird, und Mediasegment-Anfragen
URL-Suchparameter
Fügen Sie zwei Routenkonfigurationen hinzu:
Konfiguriere die HLS-Media-Manifest-Routen so, dass Tokens mit langer Gültigkeitsdauer 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 an, mit niedrigerer Priorität. Da die Route für deine Mediaplaylists mit allen Dateinamen übereinstimmt, die auf.m3u8
enden, muss die Priorität für die Route niedriger sein als die der Route, die du zuvor für das primäre Manifest erstellt hast.signedRequestMode: REQUIRE_TOKENS
: Erzwingt Tokens für Medien Playlists und Mediensegmenten. Wenn du statische MPD-Dateien (Media Presentation Description) verwendest, können sich die langen und kurzen Schlüsselsätze unterscheiden. Wenn Sie dynamische MPD-Dateien verwenden, und die kurzen Keysets müssen identisch sein.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Cookie, das von einem User-Agent für die Medienplaylist bereitgestellt wird, und Mediasegment-AnfragenaddSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: konfiguriert Media CDN zum Kopieren des Langzeit-Tokens in Medien die Segment-URIs in den Mediaplaylists.
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 einen Beschreibung der Route.
In diesem Codebeispiel werden die folgenden Änderungen implementiert:
priority: 3
: die Priorität der Route. Höhere Werte zeigen an, mit niedrigerer Priorität. Die Priorität für diese Route muss niedriger sein als die der Route, die Sie zuvor für die Medienplaylists erstellt haben.signedRequestMode: REQUIRE_TOKENS
: Erzwingt Tokens für Medien Playlists und Mediensegmenten.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN verwendet den Schlüsselsatz für Langzeit, um die Langzeit-Signiertes Token, das von einem User-Agent für Medien bereitgestellt wird Playlist- und Mediasegment-Anfragen.
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
Weitere Informationen zum Generieren von Tokens finden Sie unter Tokens generieren.
Gestaffelte Sicherheitsebenen für den Inhaltsschutz anwenden
Als Best Practice sollten Sie die Ursprungsauthentifizierung so aktivieren:
Verwenden Sie für Cloud Storage die Berechtigungen für Identity and Access Management mit privaten Cloud Storage-Buckets
Verwenden Sie für AWS-kompatible Speicheranbieter AWS Signature Version 4. Mit der Ursprungsauthentifizierung werden Anfragen blockiert, die versuchen, Media CDN zu umgehen und direkt auf deinen Ursprung zuzugreifen.