כדי ליצור בקשה חתומה, צריך ליצור מחרוזת שכוללת פרמטרים שמתארים את התוכן שרוצים להגן עליו ואת תוקף הערך החתום. לאחר מכן כוללים את המחרוזת המורכבת בבקשה. לאחר מכן, מערכת Media CDN מאמתת שהבקשה החתומה שלכם תקפה לפני שהיא מבצעת פעולה כלשהי.
דרישות לבקשה חתומה
בקשות חתומות צריכות לעמוד בדרישות הבאות:
שיטת HTTP
GET,HEADאוOPTIONS. אין תמיכה בשיטות אחרות.להגדיר שעת תפוגה בעתיד. בגלל הבדלים פוטנציאליים בסנכרון השעון, וגם בגלל תנאי הרשת של הלקוח (לדוגמה, ניתוקים וניסיונות חוזרים), מומלץ להגדיר חותמות זמן של לפחות דקה אחת בעתיד, או לפחות באורך של שידור הווידאו, לפי הגדול מביניהם.
יש חתימה שאפשר לאמת באמצעות מפתח או סוד ב-
EdgeCacheKeyset.
אי אפשר לחתום על שיטות HTTP אחרות, כמו בקשות POST, PUT או DELETE.
אם אתם צריכים להנפיק כתובות URL חתומות להעלאות שפונות למשתמשים, תוכלו לעיין במשאבי העזרה של Cloud Storage בנושא כתובות URL חתומות.
הגדרת בקשות חתומות
בקטעים הבאים מוסבר איך להגדיר, לחתום ולאמת בקשות חתומות.
יצירת מפתחות
יוצרים את המפתחות שמשמשים את Media CDN לחתימה על בקשות.
יצירת קבוצת מפתחות
יוצרים את קבוצת המפתחות שמשמשת את Media CDN לבקשות חתומות.
דרישה של בקשות חתומות
כדי לאפשר רק לבקשות חתומות לגשת למשאב, אפשר לצרף רשימה של מפתחות לנתיב ולהגדיר את signedRequestMode לאחת מהאפשרויות הבאות:
REQUIRE_SIGNATURESלבקשות חתומות שלא משתמשות בטוקנים.
REQUIRE_TOKENSלבקשות חתומות באמצעות טוקנים.
הפעלת בקשות חתומות במסלול מסוים מחייבת שכל הבקשות יהיו חתומות או יכללו טוקן. בקשות ללא חתימה תקינה (למשל שם מפתח לא תקין, חתימה או טוקן שפג תוקפם, חתימה לא תואמת וכו') נכשלות.
EdgeCacheKeyset יכול להכיל כמה מפתחות כדי לאפשר החלפת מפתחות. בקשות תקפות שנחתמו באמצעות מפתח כלשהו מהרשימה מתקבלות, והמערכת מנסה את המפתחות לפי הסדר. מידע נוסף על רוטציית מפתחות זמין במאמר בנושא רוטציה של סודות.
כשהערך של signedRequestMode מוגדר כ-REQUIRE_SIGNATURES או כ-REQUIRE_TOKENS, Media CDN מאמת גם פגיעות במטמון וגם החמצות במטמון. הבקשות האלה כוללות את כל הבקשות למקור.
הנה דוגמה להגדרת Media CDN שמחייבת בקשות חתומות ב-PathMatcher (מסלול) נתון:
gcloud edge-cache services describe prod-media-service
... routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC signedRequestMode: REQUIRE_SIGNATURES signedRequestKeyset: prod-vod-keyset
למידע על יצירת טוקנים לבקשות חתומות, ראו יצירת טוקנים.
כדי להשבית את חתימת הבקשה, אפשר להגדיר את signedRequestMode ל-DISABLED
ולמחוק את ההפניה אל signedRequestKeyset.
אימות בקשות במקור
כשמגדירים נתיב עם מצב חתימה של REQUIRE_SIGNATURES, Media CDN מאמת שלכל בקשה תואמת יש חתימה תקפה. היעדר חתימה נחשב לחתימה לא חוקית בנתיבים האלה.
כדי למנוע מקרים שבהם החתימה מוגדרת בצורה שגויה, ומשתמש מנסה לגשת ישירות למקור, מומלץ לוודא שהבקשות נחתמות גם במקור. גישה של הגנה לעומק להגנה על תוכן עוזרת למנוע גישה לא מורשית והורדה של תוכן ששילמתם עליו וקיבלתם רישיון להשתמש בו.
בשיטות חתימה שמבוססות על כתובת URL, שבהן החתימה היא חלק מפרמטרים של שאילתה או מוטמעת כרכיב של נתיב כתובת ה-URL, החתימה והפרמטרים שקשורים אליה מוסרים מכתובת ה-URL לפני שהבקשה נשלחת למקור. כך נמנעות בעיות בניווט כשהמקור מטפל בבקשה. כדי לאמת את הבקשות האלה, אפשר לבדוק את כותרת הבקשה x-client-request-url, שכוללת את כתובת ה-URL המקורית (החתומות) של בקשת הלקוח לפני ההסרה של הרכיבים החתומים.
כדי לאמת בקשות בשרת המקור, משתמשים באותו קוד אימות כחלק מנקודות הקצה של חתימת הבקשות. כך אפשר גם לצמצם את הסיכון לחוסר התאמה בין מפתחות ולבעיות שנובעות מרוטציית מפתחות.
ביצוע רוטציה למפתחות
מומלץ לבצע רוטציה או לעדכן את הסודות שמשמשים את Media CDN באופן קבוע. מומלץ לבצע רוטציה של המפתחות כל 30 עד 60 יום, אבל זה לא חובה.
המאמרים הבאים
מידע נוסף על הפעלה של יומני Media CDN וגישה אליהם, כולל איך לסנן את היומנים ולבצע בהם שאילתות, אפשר למצוא במאמר Logging.
הוראות להגדרת Media CDN וקטגוריה פרטית של Cloud Storage מופיעות במאמר קישוריות ומסננים של מקורות.