Pour appliquer l'authentification à double jeton lorsque les lecteurs accèdent à une ressource de flux, vous devez configurer des routes distinctes. Une route est une configuration qui correspond pour Media CDN et dirige le trafic HTTP vers une origine. Media CDN est compatible avec les routes pour les ressources HTTP Live Streaming (HLS) ou Dynamic Adaptive Streaming over HTTP (DASH). Pour en savoir plus sur les routes dans Media CDN, consultez Configurer des routes de service.
Pour les flux HLS, Media CDN prend en charge l'authentification à double jeton via des cookies et des paramètres de requête d'URL (sans cookie). Pour les flux DASH, Media CDN n'est compatible qu'avec l'authentification à double jeton basée sur les cookies.
Cette page explique comment configurer les routes Media CDN pour protéger le contenu à l'aide de l'authentification à double jeton.
Avant de commencer
Procédez comme suit :
Pour les jetons de courte durée, choisissez l'un des algorithmes de signature suivants :
- Signatures Ed25519
- Codes d'authentification de message (HMAC) à clé symétrique
Vous ne pouvez activer les algorithmes de signature HMAC symétrique que pour les routes configurées pour générer de nouveaux jetons de longue durée. Nous vous recommandons d'utiliser Ed25519 pour des performances et une sécurité optimales, ainsi que des HMAC à clés symétriques uniquement pour assurer la compatibilité avec d'autres CDN.
Incluez les clés requises dans une ressource
EdgeCacheKeyset
.Les jetons doivent être signés ou validés avec des clés dans une ressource
EdgeCacheKeyset
. La collection de clés doit inclure les clés appropriées pour la sélection de signature d'application. Le tableau suivant décrit chacune des fonctionnalités et leurs clés requises.Algorithme de signature Clés requises dans la collection de clés Ed25519 Clés publiques HMAC-SHA1 Clés de validation partagées HMAC-SHA256 Clés de validation partagées Nous vous recommandons de créer deux collections de clés distinctes, une pour des jetons de courte durée et un autre pour les jetons de longue durée.
Toutefois, si vous utilisez DASH et une description de présentation dynamique (MPD), vous devez utiliser la même collection de clés pour les deux les jetons de longue et de courte durée.
Pour les jetons de longue durée, choisissez l'un des formats de jeton suivants:
- Cookies
- Paramètres de requête d'URL
Configurer des jetons de courte durée
Selon l'algorithme de signature que vous souhaitez utiliser, configurez des en utilisant l'une des options suivantes.
Signature ED25519
Générez une clé privée :
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.key
Remplacez
SSL_KEY_NAME
par un nom de clé.Générez une clé publique à partir de la clé privée:
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])"
Créez une collection de clés avec une seule clé publique:
Console
Dans la console Google Cloud, accédez à la page Media CDN.
Cliquez sur l'onglet Collections de clés.
Cliquez sur
Créer une collection de clés.Dans le champ Nom, saisissez un nom de collection de clés unique.
Facultatif: Dans le champ Description, saisissez une description de votre collection de clés.
(Facultatif) Cliquez sur Ajouter une étiquette, puis saisissez une ou plusieurs clé-valeurs. pour votre collection de clés.
Cliquez sur Ajouter une clé publique, puis procédez comme suit:
- Dans le champ ID, saisissez un identifiant alphanumérique.
- Sélectionnez Saisir la valeur, puis indiquez la valeur de votre clé publique Ed25519.
Cliquez sur Créer une collection de clés.
gcloud
Exécutez la commande
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --public-key='id=SSL_PUBLIC_KEY_NAME,value=SSL_PUBLIC_KEY_VALUE'
Remplacez les éléments suivants :
SHORT_KEYSET_NAME
: collection de clés unique son nom (par exemple,prod-vod-keyset
)SSL_PUBLIC_KEY_NAME
: nom de votre Clé publique SSLSSL_PUBLIC_KEY_VALUE
: valeur de votre clé publique SSL
Pour examiner les clés associées à la collection de clés, utilisez la Commande
gcloud edge-cache keysets describe
gcloud edge-cache keysets describe prod-vod-keyset
Le résultat ressemble à ce qui suit :
name: prod-vod-keyset description: "Keyset for prod.example.com" publicKeys: - id: "key-20200918" value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w" - id: "key-20200808" value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
Terraform
HMAC à clé symétrique
Si vous n'avez jamais utilisé Secret Manager, configurer Secret Manager.
Ajouter une version de secret au format binaire.
Accordez le rôle d'accès Secret Manager. (
roles/secretmanager.secretAccessor
) vers Media CDN compte de service:Console
Dans la console Google Cloud, accédez à la page Secret Manager.
Cochez la case à côté du nom du secret.
Cliquez sur Afficher le panneau d'informations.
Dans le panneau d'informations, cliquez sur Ajouter un compte principal.
Dans le champ Nouveaux comptes principaux, saisissez le service Media CDN. dans ce format:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
Remplacez
PROJECT_NUMBER
par votre projet. numéro.Dans le champ Sélectionnez un rôle, choisissez Secret Manager, puis sélectionnez Accesseur de secrets Secret Manager
gcloud
Exécutez la commande
gcloud secrets add-iam-policy-binding
.gcloud secrets add-iam-policy-binding projects/PROJECT_NUMBER/secrets/SECRET_ID \ --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Remplacez les éléments suivants :
PROJECT_NUMBER
: votre numéro de projetSECRET_ID
: ID du secret
Accéder aux versions de secrets et copier les chemins d'accès aux secrets, y compris les numéros de version.
Créez une collection de clés avec les secrets partagés dans une clé partagée de validation:
Console
Dans la console Google Cloud, accédez à la page Media CDN.
Cliquez sur l'onglet Collections de clés.
Cliquez sur
Créer une collection de clés.Dans le champ Nom, saisissez un nom de collection de clés unique.
Facultatif: Dans le champ Description, saisissez une description de votre collection de clés.
(Facultatif) Cliquez sur Ajouter une étiquette, puis saisissez une ou plusieurs clé-valeurs. pour votre collection de clés.
Pour spécifier une clé de validation partagée, cliquez sur Ajouter une clé de validation partagée, puis procédez comme suit :
Dans le champ Secret, sélectionnez un secret dans la liste, puis saisissez manuellement en spécifiant son ID de ressource, ou créer un secret puis sélectionnez-la.
Pour Version du secret, sélectionnez une version dans la liste ou créer une version de secret puis sélectionnez-la.
Cliquez sur Créer une collection de clés.
gcloud
Exécutez la commande
gcloud edge-cache keysets create
.gcloud edge-cache keysets create SHORT_KEYSET_NAME \ --validation-shared-key='secret_version=projects/PROJECT_NUMBER/secrets/SECRET_ID/versions/KEY_VERSION'
Remplacez les éléments suivants :
SHORT_KEYSET_NAME
: nom unique du collection de clés (par exemple,prod-vod-keyset
)PROJECT_NUMBER
: ID de votre projet.SECRET_ID
: ID de ressource du secretKEY_VERSION
: version du secret qui que vous souhaitez utiliser
Configurer des jetons de longue durée
Les clés gérées par Google sont limitées par une collection de clés. Cela signifie que deux collections de clés différentes ont des clés gérées par Google différentes. Les clés gérées par Google font l'objet d'une rotation régulière.
Configurez des jetons de longue durée en utilisant l'une des options suivantes:
Console
Dans la section Clés, sélectionnez Utiliser une clé gérée par Google pour le double jeton. authentification.
gcloud et YAML
Utilisez l'une des options suivantes:
Créez une clé de signature gérée par Google:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'
Remplacer
LONG_KEYSET_NAME
par une clé nom (par exemple,prod-vod-keyset-long
).Modifier un jeu de clés existant :
Exportez votre collection de clés dans un fichier YAML. Utilisez la commande
gcloud edge-cache keysets export
.gcloud edge-cache keysets export LONG_KEYSET_NAME \ --destination=prod-vod-keyset-long.yaml
Dans un éditeur de texte ou dans les outils de gestion de la configuration, modifiez votre keyset afin qu'elle ressemble à ce qui suit:
name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME publicKeys: - id: some-key value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd - id: google-managed-key managed: true
Importez le jeu de clés modifié. Exécutez la commande
gcloud edge-cache keysets import
:gcloud edge-cache keysets import LONG_KEYSET_NAME \ --source=prod-vod-keyset-long.yaml
Vous pouvez inclure des clés publiques supplémentaires dans la collection de clés de jeton de longue durée. La collection de clés ne peut contenir au maximum que trois clés publiques. En pratique, cela signifie que une collection de clés peut avoir deux clés gérées par l'utilisateur et une clé gérée par Google.
Media CDN utilise toujours la clé gérée par Google pour générer des jetons. Les clés gérées par l'utilisateur ne peuvent être utilisées qu'à des fins de validation.
L'inclusion de clés publiques supplémentaires est utile pour permettre à votre application de lecteur d'accéder aux playlists et aux segments multimédias à l'aide de requêtes signées générées par vos propres clés privées.
Configurer l'échange de jetons
Cette section explique comment configurer l'échange de jetons en créant plusieurs routes. Une route vous permet d'optimiser le comportement en fonction du type de contenu, du client des attributs et de vos exigences en matière d'actualisation. Dans les exemples suivants, nous utilisons pour configurer l'échange de jetons pour chaque partie d'une requête média.
Configurer le chemin du fichier manifeste principal pour qu'il exige des jetons de courte durée
Configurez Media CDN de façon à exiger des jetons de courte durée sur le route principale du fichier manifeste.
Console
Activez l'authentification par jeton de courte durée sur le chemin de fichier manifeste principal :
Dans la console Google Cloud, accédez à la page Media CDN.
Pour ouvrir la page Détails d'un service, cliquez sur son nom.
Pour passer en mode Édition, cliquez sur le bouton Modifier.
Pour accéder à la section Routing (Routage), cliquez sur Next (Suivant).
Développez la règle d'hôte à laquelle vous souhaitez ajouter la règle de routage du fichier manifeste principal.
Cliquez sur Ajouter une règle de routage.
Pour modifier un règle de routage, vous pouvez également cliquer sur
Modifiez sur la ligne correspondante.Dans le volet Modifier la règle de routage, sous Priorité, définissez une valeur : Exemple :
1
.Dans le champ Description, fournissez une brève description permettant d'identifier la règle dans la liste des règles.
Dans la section Correspondance, cliquez sur Ajouter une condition de correspondance. Ensuite, effectuez la suivantes:
- Dans le champ Type de correspondance, sélectionnez Correspondance de modèle de chemin.
- Dans Correspondance de chemin, spécifiez les noms ou les modèles de chemin d'accès pour Fichier de playlist principale HLS (M3U8) ou manifeste DASH (MPD). Pour en savoir plus, consultez la section Correspondance de chemin d'accès.
Cliquez sur Configurations avancées.
Dans la section Route action (Action de routage), cliquez sur Add an item (Ajouter un élément).
Dans le champ Type, sélectionnez Règle CDN.
Dans la section Requête signée, pour Mode de requête signée, sélectionnez Exiger des jetons.
Dans la section Ensemble de clés de requête signée, procédez comme suit:
Pour spécifier le jeu de clés pour les jetons de courte durée, cliquez sur Sélectionner un jeu de clés, puis sélectionnez votre jeu de clés de jetons de courte durée.
Sinon, pour créer une collection de clés qui contient les clés dont vous avez besoin, cliquez sur Créer une collection de clés. Ensuite, sélectionnez-la.
Pour Algorithme de signature, sélectionnez Ed25519 utilisant des clés publiques.
Pour Paramètre de requête de jeton, conservez la valeur par défaut.
edge-cache-token
Si vous prévoyez d'utiliser les paramètres de requête de l'URL du fichier manifeste HLS et non des cookies pour l'authentification, spécifiez le paramètre où stocker les jetons de requête.
Dans le champ Valeur TTL maximale, indiquez, en secondes, la durée de vie maximale des les jetons de requête entrants.
Pour enregistrer les modifications de la section Route action (Action de routage), cliquez sur Done (OK).
Pour enregistrer les modifications apportées à la règle de routage, cliquez sur Enregistrer.
gcloud et YAML
Exporter votre configuration Media CDN dans un fichier YAML. Utilisez le Commande
gcloud edge-cache services export
gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yaml
Remplacez les éléments suivants :
SERVICE_NAME
: nom de votre service.FILENAME
: nom de votre fichier YAML
Activer l'authentification par jeton de courte durée dans le fichier manifeste principal dans la section
cdnPolicy
du fichier YAML de route, spécifiez une configurationsignedTokensOptions
.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
Remplacez les éléments suivants :
ROUTE_NAME
: nom de la règle de routageROUTE_DESCRIPTION
: description du règle de routageORIGIN_NAME
: nom du point de départMANIFEST_OR_PLAYLIST
: nom du HLS la playlist principale (M3U8) ou le fichier manifeste DASH (MPD). Pour en savoir plus, consultez la section Correspondance de chemin d'accès.SHORT_KEYSET_NAME
: nom de la collection de clés à utiliser pour les jetons de courte duréeSIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
: délai d'expiration des requêtes signées (par exemple,600s
). Pour Pour en savoir plus, consultezsignedRequestMaximumExpirationTtl
.- Facultatif:
SHORT_TOKEN_NAME
: requête dans lequel trouver le jeton court. La valeur par défaut estedge-cache-token
. Pour en savoir plus, consultez la section consacrée àSignedTokenOptions
.
Lorsque vous utilisez des HMAC à clé symétrique, dans la section
signedTokenOptions
, Ajoutez la valeurHMAC_SHA_256
àallowedSignatureAlgorithms
:allowedSignatureAlgorithms: - HMAC_SHA_256
Pour mettre à jour le service, importez votre configuration Media CDN à partir du fichier YAML. Utilisez le Commande
gcloud edge-cache services import
gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
Le processus d'activation de l'authentification à jeton unique est alors terminé.
Pour configurer l'authentification à double jeton, consultez les sections suivantes.
Configurer la règle de routage principale du fichier manifeste pour générer des jetons de longue durée
Configurez Media CDN pour générer des jetons de longue durée sur le route principale du fichier manifeste. Choisissez les cookies ou les paramètres de requête d'URL pour générer ces jetons.
Console
Modifiez la règle de routage principale du fichier manifeste afin que Media CDN puisse générer des jetons de longue durée sur la route:
- Sur la page Modifier la règle de routage, cliquez sur Configurations avancées.
- Dans le champ Type, sélectionnez Règle CDN.
- Développez la section Authentification à double jeton.
- Pour Action de signature, sélectionnez Générer un nouveau jeton de longue durée.
Pour Type de signature, sélectionnez l'une des options suivantes:
- via les cookies (pour le streaming HLS et DASH) : configure Media CDN pour qu'il renvoie un
Edge-Cache-Cookie
avec la réponse du fichier manifeste principal. - via les paramètres de requête de l'URL du fichier manifeste HLS (sans cookie): configure Media CDN pour manipuler le fichier manifeste principal HLS en en ajoutant un jeton de longue durée à chaque URL.
- via les cookies (pour le streaming HLS et DASH) : configure Media CDN pour qu'il renvoie un
Dans la section Générer un nouveau jeton de longue durée, procédez comme suit :
Pour spécifier un ensemble de clés pour les jetons de longue durée, cliquez sur Sélectionner un ensemble de clés, puis sélectionnez votre ensemble de clés de jetons de longue durée.
Vous pouvez également cliquer sur Créer une collection de clés pour en créer une qui dispose des clés nécessaires. Ensuite, sélectionnez-la.
Dans le champ Valeur TTL du jeton, indiquez, en secondes, la durée de vie maximale le jeton de longue durée.
Pour Type de signature, si vous avez sélectionné l'option via les cookies, dans la section Paramètres copiés, sélectionnez les paramètres que vous souhaitez que Media CDN copie du jeton de courte durée vers le jeton de longue durée. Pour utiliser l'authentification à double jeton, vous devez sélectionner
PathGlobs
(ou l'un de ses alias,acl
) oupaths
) ouURLPrefix
.Si vous avez sélectionné l'option via les paramètres de requête de l'URL du fichier manifeste HLS, Pour Paramètre de requête de jeton, conservez la valeur par défaut.
edge-cache-token
Pour enregistrer les modifications de la section Route action (Action de routage), cliquez sur Done (OK).
Pour enregistrer les modifications apportées à la règle de routage, cliquez sur Enregistrer.
Un message s'affiche pour vous demander si vous souhaitez créer les routes pour le contenu multimédia. des playlists et des segments automatiquement ou manuellement. Si vous sélectionnez l'icône automatique, une seule route est créée pour la signature des cookies et deux routes pour la signature sans cookie. Si vous sélectionnez le mode manuel passez à la section suivante.
gcloud et YAML
Modifiez la section addSignatures
de la règle de routage du fichier manifeste principal pour que
Media CDN peut générer des jetons de longue durée sur la route:
Cookies
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
Remplacez les éléments suivants :
LONG_KEYSET_NAME
: nom de votre collection de clés de jeton de longue duréeTOKEN_EXPIRATION_TIME
: heure d'expiration du jeton de longue durée (par exemple,86400s
pour un jeton d'une journée date/heure d'expiration
Cet exemple de code implémente les modifications suivantes :
addSignatures.actions: GENERATE_COOKIE
: configure Media CDN pour renvoyer unEdge-Cache-Cookie
avec la réponse du fichier manifeste principalcopiedParameters.PathGlobs
: configure Media CDN pour copier lePathGlobs
, du jeton de courte durée au jeton de longue durée, à partir d'un jeton d'accès. Pour utiliser l'authentification à double jeton, vous devez utiliser au choixcopiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Pour plus en savoir plus, consultezcopiedParameters
.Facultatif:
copiedParameters.SessionID
: configure Media CDN pour copier laSessionID
de la courte durée au jeton de longue durée
Lorsque l'action GENERATE_COOKIE
est appliquée, Media CDN
renvoie un en-tête Set-Cookie
semblable à celui-ci, avec l'en-tête principal
réponse du fichier manifeste:
Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
Paramètres de requête d'URL
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
tokenQueryParameter: LONG_TOKEN_NAME
Remplacez les éléments suivants :
LONG_KEYSET_NAME
: nom de votre collection de clés de longue duréeTOKEN_EXPIRATION_TIME
: expiration l'heure du jeton de longue durée (par exemple,86400s
pour une délai d'expiration d'un jour
Cet exemple de code implémente les modifications suivantes:
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS
: configure Media CDN pour manipuler l'adresse IP principale HLS en ajoutant un jeton de longue durée à chaque URI présent.copiedParameters.PathGlobs
: configure Media CDN pour copier lePathGlobs
, du jeton de courte durée au jeton de longue durée, à partir d'un jeton d'accès. Pour utiliser l'authentification à double jeton, vous devez utiliser l'une descopiedParameters.PathGlobs
oucopiedParameters.URLPrefix
. Pour plus en savoir plus, consultezcopiedParameters
.Facultatif:
copiedParameters.SessionID
: configure Media CDN pour copierSessionID
à partir du jeton de courte durée vers de longue durée.Facultatif:
LONG_TOKEN_NAME
: requête dans lequel placer le jeton long généré. La valeur par défaut estedge-cache-token
. Pour en savoir plus, consultez la section consacrée àtokenQueryParameter
.
Le fichier manifeste suivant montre le GENERATE_TOKEN_HLS_COOKIELESS
action appliquée:
#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 vérifie le jeton de courte durée, puis génère et stocke le jeton de longue durée dans le paramètre de requête LONG_TOKEN_NAME
.
Configurer la playlist de contenus multimédias et les routes de segments pour exiger des jetons de longue durée
Configurer la playlist de contenus multimédias et les routes de segments pour qu'elles exigent une longue durée de jetons.
Console
Cookies
Créez une règle de routage pour la playlist de contenus multimédias et la route des segments:
- Sur la page Modifier le service de mise en cache périphérique, dans la section Routage, cliquez sur la règle d'hôte ayant l'itinéraire principal du fichier manifeste.
- Cliquez sur Ajouter une règle de routage.
- Dans le volet Modifier la règle de routage, pour Priorité, définissez une valeur supérieure à celle du routage de fichier manifeste principal (par exemple,
2
). Plus la valeur est élevée, plus la priorité est faible. - Dans Description, fournissez une brève description qui peut aider à identifier la règle dans la liste des règles.
Définissez les champs suivants comme suggéré :
- Sélectionner une origine: identique à la règle de routage principale du fichier manifeste
- Ajouter une condition de correspondance: la même que pour la route principale du fichier manifeste règle
- Type: règle CDN
- Mode de requête signée: Exiger des jetons
- Sélectionner une collection de clés: comme pour les jetons de longue durée
- Algorithme de signature: identique à la règle de routage principale du fichier manifeste
Développez Authentification à double jeton.
Pour Action de signature, conservez la valeur par défaut Aucune.
Cliquez sur OK, puis sur Enregistrer.
Paramètres de requête d'URL
Créez une règle de routage pour la playlist multimédia.
- Sur la page Modifier le service de cache Edge, dans la section Routage, cliquez sur la règle d'hôte contenant le routage du fichier manifeste principal.
- Cliquez sur Ajouter une règle de routage.
- Dans le volet Modifier la règle de routage, définissez une valeur dans le champ Priorité.
supérieure à celle de la route principale du fichier manifeste,
Exemple :
2
. Plus la valeur est élevée, plus la priorité est faible. - Dans le champ Description, fournissez une brève description utile identifier la règle dans la liste des règles.
Définissez les champs suivants comme suggéré:
- Sélectionner une origine: la même que pour la route principale du fichier manifeste règle
- Ajouter une condition de correspondance: les mêmes que pour le fichier manifeste principal règle de routage
- Type: règle CDN
- Mode de requête signée : Exiger des jetons
- Sélectionner une collection de clés: comme pour les jetons de longue durée
- Algorithme de signature: identique à celui du fichier manifeste principal règle de routage
- Paramètre de requête de jeton: identique au paramètre pour les requêtes de longue durée jetons
Développez la section Authentification à double jeton.
Pour Action de signature, sélectionnez Propagate existing long-duration (Propagation existing longue-duration)/ jeton.
Cette option n'est activée qu'une fois que Media CDN a vérifié que le jeton de longue durée a été généré à l'aide de la méthode via les paramètres de requête d'URL du fichier manifeste HLS (sans cookie) de mots clés.
Pour Paramètre de requête de jeton, conservez la valeur par défaut.
edge-cache-token
Cliquez sur OK, puis sur Enregistrer.
Créez une règle de routage pour les segments multimédias.
Cet itinéraire est semblable à celui des playlists de contenus multimédias, avec les éléments suivants : principales différences:
- Pour Priorité, définissez une valeur supérieure à celle du média
règle de routage de la playlist, par exemple,
3
. - Dans le champ Description, fournissez une brève description utile identifier la règle dans la liste des règles.
- Dans la section Authentification à double jeton, par exemple Action de signature, conservez la valeur par défaut Aucune.
- Pour Priorité, définissez une valeur supérieure à celle du média
règle de routage de la playlist, par exemple,
gcloud et YAML
Modifiez le fichier YAML:
Cookies
Configurez la playlist de contenus multimédias et les segments de façon à exiger des cookies de longue durée:
- 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
Remplacez SEGMENTS_ROUTE_DESCRIPTION par un la description de l'itinéraire.
Cet exemple de code implémente les modifications suivantes:
priority: 2
: priorité de la route. Plus les valeurs sont élevées, plus les valeurs sont faibles leur priorité. Étant donné que l'itinéraire de vos playlists et segments multimédias correspond à n'importe quel nom de fichier se terminant par.m3u8
, la priorité de la route être inférieure à celle que vous avez précédemment créée pour le fichier manifeste principal.signedRequestMode: REQUIRE_TOKENS
: applique des jetons pour les contenus multimédias playlists et segments multimédias. Si vous utilisez un support statique les fichiers de description de la présentation, puis les collections de clés longues et courtes ; peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les noms longs et les collections de clés courtes doivent être identiques.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le cookie de longue durée fourni par un user-agent pour la playlist de contenus multimédias et de segments multimédias.
Paramètres de requête d'URL
Ajoutez deux configurations de route:
Configurer les routes du fichier manifeste multimédia HLS pour propager des fichiers de longue durée jetons:
- 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
Remplacez PLAYLIST_ROUTE_DESCRIPTION par un la description de l'itinéraire.
Cet exemple de code implémente les modifications suivantes:
priority: 2
: priorité de la route. Plus les valeurs sont élevées, de priorité inférieure. Parce que l'itinéraire de vos playlists multimédias correspond tout nom de fichier se terminant par.m3u8
, la priorité de la route doit être inférieure à celle que vous avez précédemment créée pour le fichier manifeste principal.signedRequestMode: REQUIRE_TOKENS
: applique des jetons pour les contenus multimédias vos playlists et segments multimédias. Si vous utilisez un support statique les fichiers de description de présentation (MPD), les collections de clés longues et courtes ; peuvent être différents. Si vous utilisez des fichiers MPD dynamiques, les ensembles de clés longs et courts doivent être identiques.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le cookie de longue durée fourni par un user-agent pour la playlist de contenus multimédias et de segments multimédias.addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS
: configure Media CDN pour copier le jeton de longue durée dans le support segmentent les URI dans les playlists de contenus multimédias.
Configurez les routes de segment pour exiger des jetons de longue durée:
- 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
Remplacez SEGMENTS_ROUTE_DESCRIPTION par un la description de l'itinéraire.
Cet exemple de code implémente les modifications suivantes :
priority: 3
: priorité de la route. Plus les valeurs sont élevées, de priorité inférieure. La priorité de cette route doit être inférieure à que vous avez créée précédemment pour les playlists de contenus multimédias.signedRequestMode: REQUIRE_TOKENS
: applique des jetons pour les contenus multimédias vos playlists et segments multimédias.signedRequestKeyset: LONG_KEYSET_NAME
: Media CDN utilise la collection de clés de longue durée pour valider le jeton signé de longue durée fourni par un user-agent pour les contenus multimédias de playlists et de segments multimédias.
Exemple de fichier de configuration
L'exemple de code suivant montre un fichier de configuration terminé:
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
Paramètres de requête d'URL
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_PRIMARY_PLAYLIST.m3u8" # HLS primary playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
signedTokenOptions:
tokenQueryParameter: SHORT_TOKEN_NAME
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
tokenQueryParameter: LONG_TOKEN_NAME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "PLAYLIST_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
addSignatures:
actions:
- PROPAGATE_TOKEN_HLS_COOKIELESS
- priority: 3
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/**.ts" # HLS segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
Générer des jetons de courte durée sur le serveur d'applications
Pour en savoir plus sur la génération de jetons, consultez Générer des jetons.
Appliquer des protections de contenu basées sur une défense en profondeur
Nous vous recommandons d'activer l'authentification de l'origine comme suit:
Pour Cloud Storage, utilisez les autorisations Identity and Access Management avec accès privé Buckets Cloud Storage.
Pour les fournisseurs de stockage compatibles avec AWS, utilisez AWS Signature version 4. L'utilisation de l'authentification de l'origine bloque les requêtes qui tentent de contourner Media CDN et accédez directement à votre origine.