כדי לאכוף אימות באמצעות שני אסימונים כשצופים ניגשים למשאב סטרימינג, צריך להגדיר נתיבים נפרדים. מסלול הוא הגדרה שתואמת לבקשות ל-Media CDN ומפנה תנועת HTTP למקור. Media CDN תומך בנתיבים למשאבי HTTP Live Streaming (HLS) או Dynamic Adaptive Streaming over HTTP (DASH). מידע נוסף על מסלולים ב-Media CDN זמין במאמר הגדרת מסלולי שירות.
בסטרימינג ב-HLS, Media CDN תומך באימות באמצעות שני אסימונים דרך קובצי Cookie ופרמטרים של שאילתות בכתובות URL (ללא קובצי Cookie). בסטרימינג של DASH, Media CDN תומך רק באימות כפול של טוקנים שמבוסס על קובצי Cookie.
בדף הזה מוסבר איך להגדיר נתיבים ב-Media CDN כדי להגן על התוכן באמצעות אימות דו-אסימוני.
לפני שמתחילים
צריך לבצע את הפעולות הבאות:
עבור טוקנים לזמן קצר, בוחרים באחד מאלגוריתמי החתימה הבאים:
- חתימות Ed25519
- קודים של אימות הודעות (HMAC) מבוססי-גיבוב עם מפתח סימטרי
אפשר להפעיל אלגוריתמים סימטריים של חתימת HMAC רק עבור מסלולים שהוגדרו ליצירת טוקנים חדשים לטווח ארוך. מומלץ להשתמש בחתימות Ed25519 כדי להשיג ביצועים ואבטחה אופטימליים, וב-HMAC עם מפתח סימטרי רק כשצריך לצורך תאימות ל-CDN אחרים.
כוללים את המפתחות הנדרשים במשאב
EdgeCacheKeyset.צריך לחתום על טוקנים או לאמת אותם באמצעות מפתחות במשאב
EdgeCacheKeyset. ערכת המפתחות צריכה לכלול את המפתחות הנכונים לאלגוריתם החתימה שנבחר. בטבלה הבאה מתוארים כל אלגוריתמי החתימה והמפתחות הנדרשים שלהם.אלגוריתם חתימה המקשים הנדרשים בערכת המקשים Ed25519 מפתחות ציבוריים HMAC-SHA1 אימות מפתחות משותפים HMAC-SHA256 אימות מפתחות משותפים מומלץ ליצור שני מערכי מפתחות נפרדים, אחד לטוקנים לטווח קצר ואחד לטוקנים לטווח ארוך.
עם זאת, אם אתם משתמשים ב-DASH ובקובצי תיאור דינמי של מצגת מדיה (MPD), אתם צריכים להשתמש באותו סט מפתחות גם לטוקנים ארוכי טווח וגם לטוקנים קצרי טווח.
עבור אסימונים לטווח ארוך, בוחרים באחד מפורמטי האסימונים הבאים:
- קובצי Cookie
- פרמטרים של שאילתות בכתובות URL
הגדרת טוקנים לטווח קצר
בהתאם לאלגוריתם החתימה שבו רוצים להשתמש, מגדירים טוקנים לפרק זמן קצר באחת מהאפשרויות הבאות.
חתימת Ed25519
יוצרים מפתח פרטי:
openssl genpkey -algorithm ed25519 -outform PEM -out SSL_KEY_NAME.private.keyמחליפים את
SSL_KEY_NAMEבשם המפתח.יוצרים מפתח ציבורי מהמפתח הפרטי:
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])"יוצרים קבוצת מפתחות חדשה עם מפתח ציבורי יחיד:
המסוף
נכנסים לדף Media CDN במסוף Google Cloud .
לוחצים על הכרטיסייה Keysets (קבוצות מפתחות).
לוחצים על Create keyset.
בשדה Name, מזינים שם ייחודי לערכת המפתחות.
אופציונלי: בשדה Description, מזינים תיאור לערכת המפתחות.
אופציונלי: לוחצים על הוספת תווית, ואז מזינים זוג אחד או יותר של מפתח/ערך עבור קבוצת המפתחות.
לוחצים על Add public key (הוספת מפתח ציבורי) ומבצעים את הפעולות הבאות:
- בשדה ID (מזהה), מזינים מזהה אלפאנומרי.
- בוחרים באפשרות Enter the value (הזנת הערך) ומציינים את הערך המקודד ב-base64 של המפתח הציבורי Ed25519.
לוחצים על Create keyset.
gcloud
משתמשים בפקודה
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'
מחליפים את מה שכתוב בשדות הבאים:
-
SHORT_KEYSET_NAME: שם ייחודי של קבוצת מפתחות, לדוגמהprod-vod-keyset -
SSL_PUBLIC_KEY_NAME: השם של המפתח הציבורי של SSL -
SSL_PUBLIC_KEY_VALUE: הערך של המפתח הציבורי של SSL
כדי לבדוק את המקשים שמשויכים לערכת המקשים, משתמשים בפקודה
gcloud edge-cache keysets describe.gcloud edge-cache keysets describe prod-vod-keyset
הפלט אמור להיראות כך:
name: prod-vod-keyset description: "Keyset for prod.example.com" publicKeys: - id: "key-20200918" value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w" - id: "key-20200808" value: "Lw7LDSaDUrbDdqpPA6JEmMF5BA5GPtd7sAjvsnh7uDA="
Terraform
מפתח סימטרי HMAC
אם זו הפעם הראשונה שאתם משתמשים ב-Secret Manager, אתם צריכים להגדיר את Secret Manager.
הוספה של גרסת סוד בפורמט בינארי.
מקצים לחשבון השירות של Media CDN את התפקיד 'גישה ל-Secret Manager' (
roles/secretmanager.secretAccessor):המסוף
נכנסים לדף Secret Manager במסוף Google Cloud .
מסמנים את התיבה לצד השם של הסוד.
לוחצים על הצגת חלונית המידע.
בחלונית המידע, לוחצים על Add principal.
בשדה New principals (חשבונות משתמשים חדשים), מזינים את חשבון השירות של Media CDN בפורמט הבא:
service-PROJECT_NUMBER@gcp-sa-mediaedgefill.iam.gserviceaccount.com
מחליפים את
PROJECT_NUMBERבמספר הפרויקט.בשדה Select a role (בחירת תפקיד), בוחרים באפשרות Secret Manager (ניהול סודות) ואז באפשרות Secret Manager Secret Accessor (גישה לסודות ב-Secret Manager).
gcloud
משתמשים בפקודה
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"
מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_NUMBER: מספר הפרויקט -
SECRET_ID: מזהה הסוד
ניגשים לגרסאות הסודיות ומעתיקים את הנתיבים הסודיים, כולל מספרי הגרסאות.
יוצרים קבוצת מפתחות חדשה עם הסודות המשותפים במפתח משותף לאימות:
המסוף
נכנסים לדף Media CDN במסוף Google Cloud .
לוחצים על הכרטיסייה Keysets (קבוצות מפתחות).
לוחצים על Create keyset.
בשדה Name, מזינים שם ייחודי לערכת המפתחות.
אופציונלי: בשדה Description, מזינים תיאור לערכת המפתחות.
אופציונלי: לוחצים על הוספת תווית, ואז מזינים זוג אחד או יותר של מפתח/ערך עבור קבוצת המפתחות.
כדי לציין מפתח משותף לאימות, לוחצים על הוספת מפתח משותף לאימות ואז מבצעים את הפעולות הבאות:
בקטע Secret, בוחרים סוד מהרשימה, מזינים סוד באופן ידני על ידי ציון מזהה המשאב שלו, או יוצרים סוד חדש ואז בוחרים אותו.
בקטע Secret version, בוחרים גרסה מהרשימה או יוצרים גרסה חדשה של הסוד ואז בוחרים אותה.
לוחצים על Create keyset.
gcloud
משתמשים בפקודה
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'
מחליפים את מה שכתוב בשדות הבאים:
-
SHORT_KEYSET_NAME: שם ייחודי ל-keyset, לדוגמהprod-vod-keyset -
PROJECT_NUMBER: מזהה הפרויקט -
SECRET_ID: מזהה המשאב של הסוד -
KEY_VERSION: גרסת הסוד שרוצים להשתמש בה
הגדרת טוקנים לטווח ארוך
Google-owned and managed keys מוגדרים לפי קבוצת מקשים. כלומר, לשני מערכי מפתחות שונים יש ערכיGoogle-owned and managed keysשונים. Google-owned and managed keys מתחלפים באופן קבוע.
כדי להגדיר טוקנים לטווח ארוך, אפשר להשתמש באחת מהאפשרויות הבאות:
המסוף
בקטע Keys, בוחרים באפשרות Use Google-owned and managed key for dual-token authentication.
gcloud ו-YAML
אפשר לבחור באחת מהאפשרויות הבאות:
יצירת מפתח חתימה בניהול של Google:
gcloud edge-cache keysets create LONG_KEYSET_NAME \ --public-key='id=google-managed-key,managed=true'מחליפים את
LONG_KEYSET_NAMEבשם של מפתח, לדוגמה,prod-vod-keyset-long.כדי לשנות קבוצת מפתחות קיימת:
מייצאים את קבוצת המפתחות לקובץ YAML. משתמשים בפקודה
gcloud edge-cache keysets export.gcloud edge-cache keysets export LONG_KEYSET_NAME \ --destination=prod-vod-keyset-long.yamlבעורך טקסט או בכלי לניהול הגדרות, עורכים את ההגדרה של קבוצת המפתחות כך שתיראה כמו ההגדרה הבאה:
name: projects/my-project/locations/global/edgeCacheKeysets/LONG_KEYSET_NAME publicKeys: - id: some-key value: MC4CAQAwBQYDK2VwBCIEINV2iYugIWBuvGBJUQ_Ab69E4v4zcVqvgYHw-iZxGzcd - id: google-managed-key managed: trueמייבאים את קבוצת המפתחות הערוכה. משתמשים בפקודה
gcloud edge-cache keysets import:gcloud edge-cache keysets import LONG_KEYSET_NAME \ --source=prod-vod-keyset-long.yaml
אפשר לכלול עוד מפתחות ציבוריים בערכת המפתחות של טוקן עם משך שימוש ארוך. ה-keyset יכול להכיל עד שלושה מפתחות ציבוריים. בפועל, המשמעות היא שקבוצת המפתחות יכולה לכלול שני מפתחות בניהול המשתמשים ומפתח אחד מסוגGoogle-owned and managed key.
ב-Media CDN תמיד נעשה שימוש ב- Google-owned and managed keyכדי ליצור אסימונים. אפשר להשתמש במפתחות שמנוהלים על ידי המשתמש רק לצורך אימות.
הוספה של מפתחות ציבוריים נוספים שימושית כדי לאפשר לאפליקציית הנגן שלכם לגשת לפלייליסטים של מדיה ולפלחי מדיה באמצעות בקשות חתומות שנוצרות על ידי המפתחות הפרטיים שלכם.
הגדרת החלפת טוקנים
בקטע הזה מוסבר איך להגדיר החלפת טוקנים על ידי יצירת כמה מסלולים. מסלול מאפשר לכם לבצע אופטימיזציה של ההתנהגות על סמך סוג התוכן, מאפייני הלקוח ודרישות הרענון שלכם. בדוגמאות הבאות, אנחנו משתמשים בנתיבים כדי להגדיר החלפת טוקנים לכל חלק בבקשה למדיה.
הגדרת הנתיב הראשי של קובץ המניפסט כך שיידרשו אסימונים לפרק זמן קצר
מגדירים את Media CDN כך שיידרשו אסימונים לפרק זמן קצר במסלול המניפסט הראשי.
המסוף
מפעילים אימות באמצעות טוקן לזמן קצר בנתיב הראשי של המניפסט:
נכנסים לדף Media CDN במסוף Google Cloud .
כדי לפתוח את הדף פרטים של שירות מסוים, לוחצים על שם השירות.
כדי לעבור למצב עריכה, לוחצים על הלחצן עריכה.
כדי לעבור לקטע ניתוב, לוחצים על הבא.
מרחיבים את כלל המארח שאליו רוצים להוסיף את כלל המסלול של המניפסט הראשי.
לוחצים על הוספת כלל ניתוב.
לחלופין, כדי לערוך כלל ניתוב, לוחצים על עריכה בשורה הרלוונטית.
בחלונית עריכת כלל ניתוב, בשדה עדיפות, מגדירים ערך – לדוגמה,
1.בקטע תיאור, מזינים תיאור קצר שיעזור לזהות את הכלל ברשימת הכללים.
בקטע התאמה, לוחצים על הוספת תנאי התאמה. לאחר מכן, מבצעים את הפעולות הבאות:
- בקטע סוג התאמה, בוחרים באפשרות התאמה לתבנית נתיב.
- בקטע Path match (התאמת נתיב), מציינים את השמות או את תבניות הנתיבים של קובץ הפלייליסט הראשי של HLS (M3U8) או של מניפסט DASH (MPD). מידע נוסף זמין במאמר בנושא התאמת נתיבים.
לוחצים על הגדרות מתקדמות.
בקטע פעולת ניתוב, לוחצים על הוספת פריט.
בשדה Type (סוג), בוחרים באפשרות CDN policy (מדיניות CDN).
בקטע בקשה חתומה, באפשרות מצב בקשה חתומה, בוחרים באפשרות נדרשים טוקנים.
בקטע Signed request keyset:
כדי לציין את קבוצת המפתחות של טוקנים לפרק זמן קצר, לוחצים על בחירת קבוצת מפתחות ובוחרים את קבוצת המפתחות של טוקנים לפרק זמן קצר.
לחלופין, כדי ליצור קבוצת מקשים חדשה עם המקשים שאתם צריכים, לוחצים על יצירת קבוצת מקשים חדשה. ואז בוחרים אותה.
בקטע Signature algorithm (אלגוריתם חתימה), בוחרים באפשרות Ed25519 using public keys (שימוש ב-Ed25519 עם מפתחות ציבוריים).
בקטע פרמטר שאילתה של טוקן, משאירים את ערך ברירת המחדל,
edge-cache-token.לחלופין, אם אתם מתכננים להשתמש בפרמטרים של שאילתת כתובת URL של מניפסט HLS במקום בקובצי Cookie לאימות, צריך לציין את הפרמטר שבו יישמרו אסימוני הבקשה.
בקטע Max time to live, מציינים בשניות את אורך החיים המקסימלי של אסימונים של בקשות נכנסות.
כדי לשמור את השינויים בקטע פעולת ניתוב, לוחצים על סיום.
כדי לשמור את השינויים בכלל הניתוב, לוחצים על שמירה.
gcloud ו-YAML
מייצאים את ההגדרה של Media CDN לקובץ YAML. משתמשים בפקודה
gcloud edge-cache services export.gcloud edge-cache services export SERVICE_NAME \ --destination=FILENAME.yamlמחליפים את מה שכתוב בשדות הבאים:
-
SERVICE_NAME: השם של השירות -
FILENAME: השם של קובץ ה-YAML
-
כדי להפעיל אימות באמצעות טוקן לזמן קצר בכלל הניתוב של המניפסט הראשי, מציינים הגדרה של
signedTokensOptionsבקטעcdnPolicyשל הניתוב בקובץ ה-YAML.pathMatchers: - name: "ROUTE_NAME" routeRules: - priority: 1 description: "ROUTE_DESCRIPTION" origin: "ORIGIN_NAME" matchRules: - pathTemplateMatch: "/MANIFEST_OR_PLAYLIST" routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_TOKENS signedRequestKeyset: SHORT_KEYSET_NAME signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME signedTokenOptions: tokenQueryParameter: SHORT_TOKEN_NAMEמחליפים את מה שכתוב בשדות הבאים:
-
ROUTE_NAME: השם של כלל הניתוב -
ROUTE_DESCRIPTION: תיאור של כלל הניתוב -
ORIGIN_NAME: שם המקור -
MANIFEST_OR_PLAYLIST: השם של רשימת ההשמעה הראשית (M3U8) בפורמט HLS או של קובץ המניפסט (MPD) בפורמט DASH. מידע נוסף זמין במאמר בנושא התאמת נתיבים. -
SHORT_KEYSET_NAME: השם של קבוצת המפתחות שבה רוצים להשתמש עבור אסימונים לטווח קצר -
SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME: זמן התפוגה של בקשות חתומות, לדוגמה600s. מידע נוסף זמין במאמרsignedRequestMaximumExpirationTtl. - אופציונלי:
SHORT_TOKEN_NAME: פרמטר השאילתה שבו נמצא הטוקן הקצר. ערך ברירת המחדל הואedge-cache-token. מידע נוסף זמין במאמרSignedTokenOptions.
כשמשתמשים ב-HMAC עם מפתח סימטרי, בקטע
signedTokenOptionsמוסיפים אתallowedSignatureAlgorithmsעם הערך שלו בתורHMAC_SHA_256:allowedSignatureAlgorithms: - HMAC_SHA_256-
כדי לעדכן את השירות, מייבאים את ההגדרה של Media CDN מקובץ ה-YAML. משתמשים בפקודה
gcloud edge-cache services import.gcloud edge-cache services import SERVICE_NAME \ --source=FILENAME.yaml
כך משלימים את תהליך ההפעלה של אימות באמצעות טוקן יחיד.
כדי להגדיר אימות באמצעות שני אסימונים, עוברים לקטעים הבאים.
הגדרת כלל הניתוב הראשי של קובץ המניפסט ליצירת טוקנים לטווח ארוך
מגדירים את Media CDN כך שיפיק טוקנים לפרקי זמן ארוכים בנתיב המניפסט הראשי. כדי ליצור את הטוקנים האלה, צריך לבחור אם להשתמש בקובצי Cookie או בפרמטרים של שאילתות בכתובות URL.
המסוף
משנים את כלל הנתיב הראשי במניפסט כך ש-Media CDN יוכל ליצור טוקנים ארוכי טווח בנתיב:
- בדף עריכת כלל ניתוב, לוחצים על הגדרות מתקדמות.
- בשדה Type (סוג), בוחרים באפשרות CDN policy (מדיניות CDN).
- מרחיבים את האפשרות אימות באמצעות שני טוקנים.
- בקטע Signature action (פעולת חתימה), בוחרים באפשרות Generate new long-duration token (יצירת טוקן חדש לטווח ארוך).
בקטע סוג החתימה, בוחרים באחת מהאפשרויות הבאות:
- באמצעות קובצי Cookie (לסטרימינג ב-HLS וב-DASH): מגדיר את Media CDN להחזרת
Edge-Cache-Cookieעם תגובת המניפסט הראשית. - באמצעות פרמטרים של שאילתות בכתובת URL של מניפסט HLS (ללא קובצי Cookie): המערכת מגדירה את Media CDN כך שתבצע מניפולציה במניפסט הראשי של HLS על ידי הוספת טוקן ארוך טווח לכל כתובת URL.
- באמצעות קובצי Cookie (לסטרימינג ב-HLS וב-DASH): מגדיר את Media CDN להחזרת
בקטע Generate new long-duration token (יצירת טוקן חדש לטווח ארוך):
כדי לציין קבוצת מפתחות לטוקנים לטווח ארוך, לוחצים על Select a keyset (בחירת קבוצת מפתחות) ובוחרים את קבוצת המפתחות של הטוקנים לטווח ארוך.
לחלופין, לוחצים על Create new keyset (יצירת ערכת מקשים חדשה) כדי ליצור ערכת מקשים חדשה עם המקשים שאתם צריכים. ואז בוחרים אותה.
בקטע Token TTL (משך החיים של האסימון), מציינים בשניות את משך החיים המקסימלי של האסימון לטווח ארוך.
בקטע Signature type, אם בחרתם באפשרות via cookies, בקטע Copied parameters בוחרים את הפרמטרים שרוצים ש-Media CDN יעתיק מהאסימון לטווח קצר לאסימון לטווח ארוך. כדי להשתמש באימות באמצעות שני אסימונים, צריך לבחור באפשרות
PathGlobs(או באחד מהכינויים שלה,aclאוpaths) או באפשרותURLPrefix.אם בחרתם באפשרות via HLS manifest URL query parameters (באמצעות פרמטרים של שאילתות בכתובות URL של מניפסט HLS), בקטע Token query parameter (פרמטר של שאילתת טוקן), משאירים את ערך ברירת המחדל,
edge-cache-token.
כדי לשמור את השינויים בקטע פעולת ניתוב, לוחצים על סיום.
כדי לשמור את השינויים בכלל הניתוב, לוחצים על שמירה.
מופיעה הודעה שבה נשאלים אם רוצים ליצור את הנתיבים לפלייליסטים ולפלחים של מדיה באופן אוטומטי או ידני. אם בוחרים באפשרות האוטומטית, נוצר נתיב חדש אחד לחתימת קובצי ה-Cookie ושני נתיבים לחתימה ללא קובצי Cookie. אם בוחרים באפשרות הידנית, ממשיכים לקטע הבא.
gcloud ו-YAML
משנים את הקטע addSignatures של כלל הנתיב במניפסט הראשי כדי שמערכת Media CDN תוכל ליצור טוקנים ארוכי טווח בנתיב:
קובצי Cookie
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
מחליפים את מה שכתוב בשדות הבאים:
LONG_KEYSET_NAME: השם של קבוצת מפתחות האסימון לטווח ארוך
TOKEN_EXPIRATION_TIME: תאריך התפוגה של האסימון לטווח ארוך, לדוגמה,86400sלתאריך תפוגה של יום אחד
בדוגמה הזו של הקוד מוטמעים השינויים הבאים:
addSignatures.actions: GENERATE_COOKIE: הגדרה של Media CDN להחזרתEdge-Cache-Cookieעם תגובת המניפסט הראשית
copiedParameters.PathGlobs: מגדיר את Media CDN להעתקתPathGlobsמהאסימון לטווח קצר לאסימון לטווח ארוך. כדי להשתמש באימות באמצעות שני אסימונים, צריך להשתמש ב-copiedParameters.PathGlobsאו ב-copiedParameters.URLPrefix. מידע נוסף זמין במאמרcopiedParameters.אופציונלי:
copiedParameters.SessionID: מגדיר את Media CDN להעתקתSessionIDמהאסימון לטווח קצר לאסימון לטווח ארוך
כשמחילים את הפעולה GENERATE_COOKIE, Media CDN מחזיר כותרת Set-Cookie שדומה לכותרת הבאה עם התגובה של המניפסט הראשי:
Set-Cookie: Edge-Cache-Cookie=PathGlobs=PATHS~SessionID=SESSION_ID~Expires=EXPIRATION~_GO=Generated~Signature=SIGNATURE
פרמטרים של שאילתות בכתובות URL
addSignatures:
actions:
- GENERATE_TOKEN_HLS_COOKIELESS
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
tokenQueryParameter: LONG_TOKEN_NAME
מחליפים את מה שכתוב בשדות הבאים:
LONG_KEYSET_NAME: השם של קבוצת המפתחות לטווח ארוך
TOKEN_EXPIRATION_TIME: זמן התפוגה של האסימון לטווח ארוך, לדוגמה,86400sלתקופת תפוגה של יום אחד.
בדוגמה הזו של הקוד מוטמעים השינויים הבאים:
addSignatures.actions: GENERATE_TOKEN_HLS_COOKIELESS: הגדרה של Media CDN כך שישנה את מניפסט ה-HLS הראשי על ידי הוספת טוקן עם משך ארוך לכל URI שמופיע בו.
copiedParameters.PathGlobs: מגדיר את Media CDN להעתקתPathGlobsמהאסימון לטווח קצר לאסימון לטווח ארוך. כדי להשתמש באימות באמצעות שני אסימונים, צריך להשתמש באחד מהמספריםcopiedParameters.PathGlobsאוcopiedParameters.URLPrefix. מידע נוסף זמין במאמרcopiedParameters.אופציונלי:
copiedParameters.SessionID: מגדיר את Media CDN להעתקתSessionIDמהאסימון לטווח קצר לאסימון לטווח ארוך.אופציונלי:
LONG_TOKEN_NAME: פרמטר השאילתה שבו צריך להציב את הטוקן הארוך שנוצר. ערך ברירת המחדל הואedge-cache-token. מידע נוסף זמין במאמרtokenQueryParameter.
בדוגמה הבאה מוצג קובץ מניפסט עם הפעולה GENERATE_TOKEN_HLS_COOKIELESS:
#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 מאמת את האסימון לטווח קצר, ואז יוצר אסימון לטווח ארוך ומאחסן אותו בפרמטר LONG_TOKEN_NAME של השאילתה.
הגדרת פלייליסטים של מדיה ומסלולי מקטעים כך שיידרשו טוקנים ארוכי טווח
מגדירים את המסלולים של פלייליסט המדיה ושל פלחים כך שיידרשו אסימונים ארוכי טווח.
המסוף
קובצי Cookie
יוצרים כלל מסלול לפלייליסט של המדיה ולמסלול של הפלחים:
- בדף Edit Edge Cache service (עריכת שירות Edge Cache), בקטע Routing (ניתוב), לוחצים על כלל המארח שכולל את נתיב המניפסט הראשי.
- לוחצים על הוספת כלל ניתוב.
- בחלונית עריכת כלל ניתוב, בשדה עדיפות, מגדירים ערך שגדול מזה של מסלול המניפסט הראשי – לדוגמה,
2. ערכים גבוהים יותר מציינים עדיפות נמוכה יותר. - בקטע תיאור, מזינים תיאור קצר שיעזור לזהות את הכלל ברשימת הכללים.
מגדירים את השדות הבאים לפי ההצעה:
- בחירת מקור: כמו בכלל הנתיב של המניפסט הראשי
- הוספת תנאי התאמה: זהה לכלל של נתיב המניפסט הראשי
- סוג: מדיניות CDN
- מצב בקשה חתומה: נדרשים אסימונים
- בחירת קבוצת מפתחות: זהה לטוקנים לטווח ארוך
- אלגוריתם חתימה: זהה לזה של כלל הנתיב במניפסט הראשי
מרחיבים את האפשרות אימות באמצעות שני טוקנים.
בקטע פעולת חתימה, משאירים את ערך ברירת המחדל ללא.
לוחצים על סיום ואז על שמירה.
פרמטרים של שאילתות בכתובות URL
יוצרים כלל ניתוב לפלייליסט של המדיה.
- בדף Edit Edge Cache service (עריכת שירות Edge Cache), בקטע Routing (ניתוב), לוחצים על כלל המארח שכולל את נתיב המניפסט הראשי.
- לוחצים על הוספת כלל ניתוב.
- בחלונית עריכת כלל ניתוב, בשדה עדיפות, מגדירים ערך שגדול מהערך של מסלול המניפסט הראשי – לדוגמה,
2. ערכים גבוהים יותר מציינים עדיפות נמוכה יותר. - בקטע תיאור, מוסיפים תיאור קצר שיעזור לזהות את הכלל ברשימת הכללים.
מגדירים את השדות הבאים לפי ההצעה:
- בחירת מקור: זהה לכלל של נתיב המניפסט הראשי
- הוספת תנאי התאמה: זהה לכלל הניתוב של המניפסט הראשי
- סוג: מדיניות CDN
- מצב בקשה חתומה: נדרשים אסימונים
- בחירת קבוצת מפתחות: זהה לטוקנים לטווח ארוך
- אלגוריתם החתימה: זהה לזה של כלל הניתוב במניפסט הראשי
- פרמטר של שאילתת טוקן: זהה לפרמטר של טוקנים לטווח ארוך
מרחיבים את האפשרות אימות באמצעות שני טוקנים.
בקטע פעולת חתימה, בוחרים באפשרות הפצת טוקן קיים עם משך זמן ארוך.
האפשרות הזו מופעלת רק אחרי ש-Media CDN מאמת שהטוקן לטווח ארוך נוצר באמצעות סוג החתימה via HLS manifest URL query parameters (cookieless).
בקטע פרמטר שאילתה של טוקן, משאירים את ערך ברירת המחדל,
edge-cache-token.לוחצים על סיום ואז על שמירה.
יוצרים כלל ניתוב לפלחי מדיה.
המסלול הזה דומה למסלול של פלייליסטים של מדיה, עם ההבדלים העיקריים הבאים:
- בקטע עדיפות, מגדירים ערך שגדול מהערך של כלל המסלול של רשימת השירים – לדוגמה,
3. - בקטע תיאור, מוסיפים תיאור קצר שיעזור לזהות את הכלל ברשימת הכללים.
- בקטע Dual-token authentication (אימות באמצעות שני אסימונים), בשדה Signature action (פעולת חתימה), משאירים את ערך ברירת המחדל None (ללא).
- בקטע עדיפות, מגדירים ערך שגדול מהערך של כלל המסלול של רשימת השירים – לדוגמה,
gcloud ו-YAML
עורכים את קובץ ה-YAML:
קובצי Cookie
מגדירים את הפלייליסט והקטעים של המדיה כך שיידרשו קובצי Cookie לטווח ארוך:
- 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
מחליפים את SEGMENTS_ROUTE_DESCRIPTION בתיאור של המסלול.
בדוגמה הזו של הקוד מוטמעים השינויים הבאים:
-
priority: 2: העדיפות של המסלול. ערכים גבוהים יותר מציינים עדיפות נמוכה יותר. מכיוון שהנתיב של פלייליסטים של מדיה וקטעי מדיה תואם לכל שם קובץ שמסתיים ב-.m3u8, העדיפות של הנתיב צריכה להיות נמוכה יותר מהנתיב שיצרתם קודם למניפסט הראשי. -
signedRequestMode: REQUIRE_TOKENS: אוכף שימוש באסימונים עבור פלייליסטים של מדיה וקטעי מדיה. אם אתם משתמשים בקובצי תיאור של הצגת מדיה סטטית (MPD), יכול להיות שערכי ה-keysets הארוכים והקצרים יהיו שונים. אם אתם משתמשים בקובצי MPD דינמיים, קבוצות המפתחות הארוכות והקצרות צריכות להיות זהות. -
signedRequestKeyset: LONG_KEYSET_NAME: Media CDN משתמש במערך המפתחות לטווח ארוך כדי לאמת את קובץ ה-Cookie לטווח ארוך שסוכן משתמש מספק לבקשות של פלייליסטים של מדיה ושל פלחים של מדיה.
פרמטרים של שאילתות בכתובות URL
מוסיפים שתי הגדרות של מסלולים:
מגדירים את נתיבי המניפסט של מדיה HLS להפצת טוקנים לטווח ארוך:
- 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מחליפים את PLAYLIST_ROUTE_DESCRIPTION בתיאור של המסלול.
בדוגמה הזו של הקוד מוטמעים השינויים הבאים:
-
priority: 2: העדיפות של המסלול. ערכים גבוהים יותר מציינים עדיפות נמוכה יותר. מכיוון שהנתיב של פלייליסטים של מדיה תואם לכל שם קובץ שמסתיים ב-.m3u8, העדיפות של הנתיב צריכה להיות נמוכה מהנתיב שיצרתם קודם למניפסט הראשי. -
signedRequestMode: REQUIRE_TOKENS: אוכף שימוש באסימונים עבור פלייליסטים של מדיה וקטעי מדיה. אם אתם משתמשים בקובצי תיאור של הצגת מדיה סטטית (MPD), יכול להיות שקבוצות המפתחות הארוכות והקצרות יהיו שונות. אם אתם משתמשים בקובצי MPD דינמיים, קבוצות המקשים הארוכות והקצרות צריכות להיות זהות. -
signedRequestKeyset: LONG_KEYSET_NAME: Media CDN משתמש במערך המפתחות לטווח ארוך כדי לאמת את הקובץ ה-Cookie לטווח ארוך שסוכן משתמש מספק לבקשות של פלייליסטים של מדיה ושל פלחים של מדיה. -
addSignatures.actions: PROPAGATE_TOKEN_HLS_COOKIELESS: מגדיר את Media CDN להעתקת האסימון לטווח ארוך אל מזהי ה-URI של פלחי המדיה ברשימות ההשמעה של המדיה.
-
מגדירים את המסלולים של פלחי הקהל כך שיידרשו אסימונים עם משך שימוש ארוך:
- 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מחליפים את SEGMENTS_ROUTE_DESCRIPTION בתיאור של המסלול.
בדוגמה הזו של הקוד מוטמעים השינויים הבאים:
-
priority: 3: העדיפות של המסלול. ערכים גבוהים יותר מציינים עדיפות נמוכה יותר. העדיפות של המסלול הזה צריכה להיות נמוכה יותר מהמסלול שיצרתם קודם לרשימות ההשמעה של המדיה. -
signedRequestMode: REQUIRE_TOKENS: אוכף שימוש באסימונים עבור פלייליסטים של מדיה וקטעי מדיה. -
signedRequestKeyset: LONG_KEYSET_NAME: Media CDN משתמש במערך המפתחות לטווח ארוך כדי לאמת את האסימון החתום לטווח ארוך שסוכן משתמש מספק לבקשות של רשימת השמעה של מדיה ושל פלח מדיה.
-
קובץ תצורה לדוגמה
בדוגמת הקוד הבאה מוצג קובץ הגדרות מלא:
קובצי Cookie
name: SERVICE_NAME
routing:
hostRules:
- hosts:
- DOMAIN_NAME
pathMatcher: routes
pathMatchers:
- name: "ROUTE_NAME"
routeRules:
- priority: 1
description: "ROUTE_DESCRIPTION"
origin: "ORIGIN_NAME"
matchRules:
- pathTemplateMatch: "/HLS_MASTER_PLAYLIST.m3u8" # HLS primary playlists
- pathTemplateMatch: "/DASH_MANIFESTS.mpd" # DASH manifests
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: SHORT_KEYSET_NAME
signedRequestMaximumExpirationTtl: SIGNED_REQUEST_MAXIMUM_EXPIRATION_TIME
addSignatures:
actions:
- GENERATE_COOKIE
keyset: LONG_KEYSET_NAME
tokenTtl: TOKEN_EXPIRATION_TIME
copiedParameters:
- PathGlobs
- SessionID
- priority: 2
description: "SEGMENTS_ROUTE_DESCRIPTION"
origin: "ORIGN_NAME"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS media playlists
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: CACHE_ALL_STATIC
signedRequestMode: REQUIRE_TOKENS
signedRequestKeyset: LONG_KEYSET_NAME
פרמטרים של שאילתות בכתובות 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
יצירת טוקנים לטווח קצר בשרת האפליקציה
מידע על יצירת אסימונים זמין במאמר יצירת אסימונים.
החלת אמצעי הגנה מקיפים על התוכן
מומלץ להפעיל אימות מקור באופן הבא:
ב-Cloud Storage, משתמשים בהרשאות של ניהול זהויות והרשאות גישה (IAM) עם קטגוריות פרטיות של Cloud Storage.
בספקי אחסון שתואמים ל-AWS, צריך להשתמש בגרסה 4 של חתימת AWS. אימות המקור חוסם בקשות שמנסות לעקוף את Media CDN ולגשת ישירות למקור.