1. מבוא
כללי מדיניות האבטחה של Google Cloud Armor Edge מאפשרים להגביל את הגישה לאובייקטים שנשמרו במטמון ב-Google Cloud CDN וב-Google Cloud Storage. דוגמאות לסיבות אפשריות לכך: לוודא שהמשתמשים שלכם לא ניגשים לאובייקטים בקטגוריות אחסון מאזורים גיאוגרפיים מוגבלים או לוודא שהפצת המדיה שלכם מסוננת לפי אזורים גיאוגרפיים שבהם יש לכם רישיון לכך.
בשיעור ה-Lab הזה ניצור קטגוריית GCS, נעלה תמונה, נקשר אותה למאזן עומסים ואז נפעיל מדיניות Cloud CDN ו-Edge Security.
מה תלמדו
- איך להגדיר קטגוריה של Cloud Storage עם תוכן שאפשר לשמור במטמון
- איך יוצרים מדיניות אבטחה של Edge כדי להגן על התוכן
- איך לוודא שמדיניות האבטחה של Edge פועלת כצפוי
מה צריך להכין
- רשתות בסיסיות וידע על HTTP
- ידע בסיסי בשורת הפקודה Unix/Linux
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Google Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון.
- Project name הוא השם המוצג של המשתתפים בפרויקט. זו מחרוזת תווים שלא נעשה בה שימוש ב-Google APIs, ואפשר לעדכן אותה בכל שלב.
- Project ID חייב להיות ייחודי בכל הפרויקטים ב-Google Cloud ואי אפשר לשנות אותו (אי אפשר לשנות אותו אחרי שמגדירים אותו). מסוף Cloud יוצר מחרוזת ייחודית באופן אוטומטי; בדרך כלל לא מעניין אותך מה זה. ברוב ה-Codelabs תצטרכו להפנות אל מזהה הפרויקט (ובדרך כלל הוא מזוהה כ-
PROJECT_ID
), כך שאם הוא לא מוצא חן בעיניכם, תוכלו ליצור פרויקט אקראי אחר או לנסות בעצמכם ולבדוק אם הוא זמין. ואז המכשיר 'קפוא' לאחר יצירת הפרויקט. - יש ערך שלישי, Project Number, שחלק מממשקי ה-API משתמשים בו. מידע נוסף על כל שלושת הערכים האלה זמין במסמכי התיעוד.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים או בממשקי API של Cloud. מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. כדי להשבית את המשאבים ולא לצבור חיובים מעבר למדריך הזה, פועלים לפי ההנחיות למחיקת המשאבים. בסוף ה-Codelab. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.
לפני שמתחילים
ב-Inside Cloud Shell, מוודאים שמזהה הפרויקט מוגדר
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] PROJECT_ID=[YOUR-PROJECT-NAME] echo $PROJECT_ID
הפעלת ממשקי API
הפעלת כל השירותים הנחוצים
gcloud services enable compute.googleapis.com gcloud services enable logging.googleapis.com gcloud services enable monitoring.googleapis.com
3. יצירת קטגוריה של Cloud Storage
במסוף Cloud, עוברים אל Navigation menu > Cloud Storage > דפדפן. לוחצים על יצירת מקבץ תמונות:
כללים למתן שמות לקטגוריות:
- שם הקטגוריה לא יכול לכלול מידע רגיש, כי מרחב השמות של הקטגוריות זמין וגלוי לכולם.
- שמות של קטגוריות יכולים לכלול רק אותיות קטנות, ספרות, מקפים (-), קווים תחתונים (_) ונקודות (.). שמות שמכילים נקודות מחייבים אימות.
- שמות של קטגוריות צריכים להתחיל ולהסתיים בספרה או באות.
- שמות של קטגוריות צריכים להכיל 3 עד 63 תווים. שמות שמכילים נקודות יכולים להכיל עד 222 תווים, אבל כל רכיב שמופרד באמצעות נקודות יכול להיות באורך של עד 63 תווים.
- אי אפשר לייצג שמות של קטגוריות ככתובות IP בסימון עם נקודה עשרונית (לדוגמה, 192.168.5.4).
- שמות של קטגוריות לא יכולים להתחיל בקידומת 'goog'.
- שמות של קטגוריות לא יכולים להכיל את המילה 'google' או סגור את שגיאות האיות של "google".
- כמו כן, לצורך תאימות DNS ותאימות עתידית, אין להשתמש בקווים תחתונים (_) או בנקודה שקרובה לנקודה או למקף אחרים. לדוגמה, '..' או '-'. או '.-' אינם חוקיים בשמות DNS.
לוחצים על המשך.
Location type: אזור
מיקום: בחירת אזור רחוק מכם
לוחצים על המשך.
סוג האחסון (storage class) שמוגדר כברירת מחדל: Standard
לוחצים על המשך.
מבטלים את הסימון של התיבה Enforce public access prevention on this bucket בקטע Prevent public access (מניעת גישה ציבורית).
בוחרים באפשרות Fine Grained בקטע 'בקרת גישה'.
לוחצים על המשך.
אחרי שמגדירים את הקטגוריה, לוחצים על CREATE:
זהו, יצרתם קטגוריה של Cloud Storage!
4. העלאת אובייקט לקטגוריה
עכשיו מעלים אובייקט לקטגוריה.
קודם כול, מורידים את התמונה הזו למכונה זמנית ב-Cloud Shell. בדוגמה הבאה נעשה שימוש בתמונת Google מדף הבית של Google.
מ-Cloud Shell
wget --output-document google.png https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png
משתמשים בפקודה gsutil cp כדי להעלות את התמונה מהמיקום שבו שמרתם אותה אל הקטגוריה שיצרתם:
מ-Cloud Shell
gsutil cp google.png gs://YOUR-BUCKET-NAME
עכשיו מסירים את התמונה שהורדתם:
מ-Cloud Shell
rm google.png
מאתרים את האובייקט, לוחצים על שלוש הנקודות בצד שמאל ועורכים את ההרשאות ל'גלוי לכולם'.
5. יצירת מאזן עומסים
בשלב הבא ניצור מאזן עומסים של HTTP.
עוברים אל Networking >>. שירותי רשת >> איזון עומסים >> יצירת מאזן עומסים >> מאזן עומסים של HTTP >> אינטרנט למכונות הווירטואליות שלי >> מאזן עומסים קלאסי של HTTP(S)
קודם כול, יוצרים שם למאזן העומסים שרוצים ליצור.
יצירת קטגוריית קצה עורפי
יוצרים קטגוריית קצה עורפי חדשה שהיא הקטגוריה שיצרתם כרגע, ובוחרים באפשרות Enabled CDN ו-Cache Static Content (תוכן סטטי במטמון). לוחצים על Create.
יצירת כללי מארח ונתיב
בצד שמאל, עוברים לקטע 'כללי מארח ונתיב'. אנחנו נשתמש בכלל פשוט של מארח/נתיב ונשלח כל בקשה לקטגוריה.
יצירת תצורה של הקצה הקדמי
בחירת התצורה של הקצה הקדמי. לתצורה של הקצה הקדמי, נשתמש ב-HTTP (אם כי בעזרת HTTPS יפעל גם אם יש לך אישור) ובכתובת IP זמנית, ונוודא שבחרת את הרשת ברמת הפרימיום.
לוחצים על 'יצירה'
אחזור כתובת IP של מאזן עומסים
כדי לראות את כתובת ה-IP של מאזן העומסים מהמסוף, לוחצים על השם של מאזן העומסים ברשימת מאזני העומסים בפרויקט.
שליחת שאילתה למאזן העומסים
אחרי מספר דקות, מנסים לשלוח שאילתה למאזן העומסים לגבי האובייקט שהעליתם. צריך את כתובת ה-IP של מאזן העומסים ואת שם התמונה. מבנה הפקודה הוא:
מטרמינל
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
פלט
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtoILI76KVsvBvdVGvSfzaxys1m3zYqCepBrmJxAI48ni24cWCRIdNu-53PX3DS6iycxp6xwFbMpwtcHHZQUQmEBxAgng < Expires: Mon, 13 Dec 2021 22:58:26 GMT < Date: Mon, 13 Dec 2021 21:58:26 GMT < Cache-Control: public, max-age=3600 < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer
מוודאים שהתוכן מוצג מ-CDN באמצעות CDN או מעקב איזון עומסים. יחס ההיטלים אמור להיות קרוב ל-100%. אם צריך להריץ כמה שאילתות, אפשר לבצע את הפעולות הבאות
מטרמינל
#for i in `seq 1 50`; do curl http://%loadbalncer-IP%/google.png; done
אישור התוכן שמוצג על ידי Cloud CDN
מוודאים שאתם מציגים תנועה מ-CDN באמצעות מעבר אל שירותי רשת >> CDN
6. מחיקת האובייקט מ-GCS
עכשיו כשהמטמון מאוכלס, עכשיו נמחק את האובייקט מהקטגוריה כדי לחזק את העובדה שאנחנו מחילים את המדיניות על המטמון ולא על הקצה העורפי.
עוברים אל Cloud Storage >> %bucket name% >> אובייקטים
בוחרים את התמונה ומוחקים אותה.
7. יצירת מדיניות אבטחה של Edge למטמון ה-CDN
מנווטים אל אבטחת רשת >> Cloud Armor ותוכלו ללחוץ על 'יצירת מדיניות'
צריך לבחור אחת מהאפשרויות הבאות
סוג המדיניות: מדיניות אבטחת Edge
פעולת ברירת מחדל: דחייה
מחילים את המדיניות על קטגוריית הקצה העורפי.
8. אימות מדיניות האבטחה של Edge
עכשיו, אחרי שיצרנו מדיניות אבטחה של Edge לפני קטגוריית הקצה העורפי שלנו, אפשר לוודא שהיא פועלת כצפוי.
בדיקת מדיניות האבטחה
אחרי כמה דקות, תהיה לך אפשרות לבדוק שמדיניות Cloud Armor פועלת. משורת הפקודה, הרצת הפקודה הבאה תחזיר את השגיאה 403
מטרמינל
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
פלט
curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 403 Forbidden < X-GUploader-UploadID: ADPycdtS6FtJOGIsiWYDrAAE8VFeQuNutcvbGoQe2t8EZxsuspVtmCjyiTv_P3CNktroHMOGFXkTCfG-Jj-rUO60ZGPpEbpqcw < Content-Type: application/xml; charset=UTF-8 < Content-Length: 111 < Date: Mon, 13 Dec 2021 23:09:35 GMT < Expires: Mon, 13 Dec 2021 23:09:35 GMT < Cache-Control: private, max-age=0 < Server: UploadServer <
בדיקת היומנים
בשלב הבא אפשר לבדוק את היומנים כדי לראות את מדיניות אבטחת הקצה. עוברים אל פעולות >> רישום ביומן >> Logs Explorer
מזינים את קטע הקוד הבא בשאילתה ולוחצים על 'הפעלה'
resource.type:(http_load_balancer) AND jsonPayload.enforcedEdgeSecurityPolicy.name:(%SECURITY_POLICY_NAME%)
שימו לב לתגובה 403 ולמדיניות האבטחה הנאכפת
הסרה של מדיניות האבטחה
מסירים את מדיניות האבטחה ושולחים שאילתות על האובייקט מהמטמון.
מנווטים אל אבטחת רשת >> Cloud Armor >> %POLICY NAME% >> יעדים ומסירים את קטגוריית היעד.
אישור המדיניות שהוסרה
אחרי שיחלפו כמה דקות, תוכלו לשלוח Curl נוסף למשאב שבקטגוריית האחסון. הפעם תקבלו תשובות 200.
מטרמינל
curl -svo /dev/null http://LOAD_BALANCER_IP/google.png
פלט
armanrye-macbookpro% curl -svo /dev/null http://34.98.81.123/google.png * Trying 34.98.81.123... * TCP_NODELAY set * Connected to 34.98.81.123 (34.98.81.123) port 80 (#0) > GET /google.png HTTP/1.1 > Host: YOUR_IP > User-Agent: curl/7.64.1 > Accept: */* > < HTTP/1.1 200 OK < X-GUploader-UploadID: ADPycdtI7f49P3MSuZSZ8vl6RwfwmnIDJ59EeSKp7UPvLPawdaiRHXiNWLtseQTxUxceWOvSLvpYmT3pWVkV4qeIP7M < Date: Mon, 13 Dec 2021 23:06:46 GMT < Last-Modified: Mon, 13 Dec 2021 21:45:57 GMT < ETag: "8f9327db2597fa57d2f42b4a6c5a9855" < x-goog-generation: 1639431957957903 < x-goog-metageneration: 2 < x-goog-stored-content-encoding: identity < x-goog-stored-content-length: 5969 < Content-Type: image/png < x-goog-hash: crc32c=TeiHTA== < x-goog-hash: md5=j5Mn2yWX+lfS9CtKbFqYVQ== < x-goog-storage-class: STANDARD < Accept-Ranges: bytes < Content-Length: 5969 < Server: UploadServer < Age: 1621 < Cache-Control: public,max-age=3600 < { [775 bytes data] * Connection #0 to host 34.98.81.123 left intact * Closing connection 0
מעולה! השלמת את שיעור ה-Lab הזה בנושא מדיניות האבטחה של Cloud Armor Edge.
. ©2020 Google LLC כל הזכויות שמורות. Google והלוגו של Google הם סימנים מסחריים רשומים של Google LLC. שמות של חברות ומוצרים אחרים עשויים להיות סימנים מסחריים של החברות, בהתאמה, שאליהן הם משויכים.
9. ניקוי שיעור Lab
מנווטים אל אבטחת רשת >> Cloud Armor >> %POLICY NAME% ובחר באפשרות 'מחיקה'
עוברים אל Cloud Storage, בוחרים את הקטגוריה שיצרתם ולוחצים על Delete.
עוברים אל Networking >>. שירותי רשת >> איזון עומסים. בוחרים את מאזן העומסים שיצרתם ולוחצים על Delete.
10. מעולה!
השלמת את ההגנה על מטמון Edge באמצעות Cloud Armor Codelab!
אילו נושאים דיברנו?
- איך מגדירים קטגוריה של אחסון בענן ומאזן עומסים בענן משויך
- איך יוצרים מדיניות אבטחה של Cloud Armor Edge
- איך לוודא שמדיניות האבטחה של Edge פועלת כמצופה.
השלבים הבאים
- כדאי לנסות להגדיר מדיניות אבטחה של Edge עם היט טעינה מהמטמון ממשאב של מנוע מחשוב.