1. מבוא
רשימות של כתובות IP בעלות שם של Google Cloud Armor מאפשרות להפנות לרשימות של כתובות IP וטווחי IP שמנוהלים על ידי ספקי צד שלישי. אתם יכולים להגדיר רשימות של כתובות IP בעלות שם בתוך מדיניות אבטחה. אין צורך לציין באופן ידני כל כתובת IP או טווח IP בנפרד.
מה תלמדו
- היתרונות של רשימת כתובות IP עם שם של Cloud Armor
- יצירת מדיניות אבטחה של Cloud Armor
- פריסת רשימת כתובות IP בעלות שם של Cloud Armor
- יצירת מאזן עומסים גלובלי
- יצירה של קבוצת מכונות מנוהלות עם אפליקציית בדיקה לדוגמה
מה צריך להכין
- ניסיון עם מדיניות אבטחה ומאזני עומסים
2. התרת תנועה רק מספקי צד שלישי מורשים
תרחיש לדוגמה טיפוסי הוא ליצור רשימת היתרים שכוללת את כתובות ה-IP של שותף צד שלישי מורשה, כדי להבטיח שרק תנועה שמגיעה מהשותף הזה תוכל לגשת למאזן העומסים ולקצוות העורפיים.
לדוגמה, ספקי CDN צריכים לשלוף תוכן משרתי המקור במרווחי זמן קבועים כדי להפיץ אותו למטמון שלהם. שותפות עם Google מספקת קשר ישיר בין ספקי CDN לבין הקצה של רשת Google. משתמשי CDN ב-Google Cloud יכולים להשתמש בחיבור הישיר הזה במהלך שליפה של נתוני מקור. במקרה כזה, ייתכן שמשתמש ה-CDN ירצה ליצור מדיניות אבטחה שמאפשרת תנועה שמגיעה רק מספק ה-CDN הספציפי הזה.
בדוגמה הזו, ספק CDN מפרסם את רשימת כתובות ה-IP שלו 23.235.32.0/20, 43.249.72.0/22, ⋯, משתמש CDN מגדיר כלל אבטחה שמאפשר תנועה שמגיעה מכתובות ה-IP האלה בלבד. כתוצאה מכך, מותרות שתי נקודות גישה של ספק CDN (23.235.32.10 ו-43.249.72.10), ולכן התנועה שלהן מותרת. התנועה מנקודת הגישה הלא מורשית 198.51.100.1 חסומה.
כתובת IP בעלת שם ב-Google Cloud Armor
3. קל יותר לקבוע הגדרות אישיות ולנהל אותן בעזרת כללים מוגדרים מראש
ספקי CDN משתמשים לעיתים קרובות בכתובות IP ידועות ומשתמשי CDN רבים צריכים להשתמש בהן. הרשימות האלה משתנות עם הזמן, ככל שספקים מוסיפים, מסירים ומעדכנים את כתובות ה-IP.
השימוש ברשימת כתובות IP בעלת שם בכלל מדיניות אבטחה מפשט את תהליך ההגדרה והניהול של כתובות IP, כי Google Cloud Armor מסנכרן באופן אוטומטי מידע מספקי CDN על בסיס יומי. הפעולה הזו חוסכת לכם את הזמן שנדרש לניהול רשימת כתובות IP גדולה באופן ידני, ומפחיתה את הסיכון לשגיאות.
ספקים של רשימות של כתובות IP
הספקים של רשימת כתובות ה-IP בטבלה הבאה נתמכים ב-Google Cloud Armor. ספקי CDN שעובדים בשיתוף עם Google. הרשימות של כתובות ה-IP שלהם מתפרסמות דרך כתובות URL ציבוריות נפרדות.
השותפים האלה מספקים רשימות נפרדות של כתובות IPv4 וכתובות IPv6. מערכת Google Cloud Armor משתמשת בכתובות ה-URL שסופקו כדי לאחזר רשימות, ולאחר מכן ממירה את הרשימות לרשימות של כתובות IP בעלות שם. אתם מפנים לרשימות לפי השמות שבטבלה.
לחלופין, אפשר להשתמש ב-Cloud Shell כדי לקבל רשימה של רשימות מוגדרות מראש של כתובות IP.
מתחברים ל-Cloudshell ומגדירים את Projectid
gcloud config list project gcloud config set project [YOUR-PROJECT-ID] Perform setting your projectID: projectid=YOUR-PROJECT-ID echo $projectid
מ-Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
הפעולה הזו מחזירה:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
4. טופולוגיה של Codelab
5. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם אין לכם עדיין חשבון Gmail או חשבון Google Workspace, עליכם ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
הפעלת Cloud Shell
אומנם אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה משתמשים ב-Google Cloud Shell, סביבת שורת הפקודה שפועלת ב-Cloud.
ממסוף GCP, לוחצים על הסמל של Cloud Shell בסרגל הכלים שבפינה השמאלית העליונה:
נדרשים רק כמה דקות כדי להקצות את הסביבה ולהתחבר אליה. בסיום התהליך, אתם אמורים לראות משהו כזה:
למכונה הווירטואלית הזו נטען כל כלי הפיתוח הדרושים. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כל העבודה בשיעור ה-Lab הזה יכולה להתבצע באמצעות דפדפן בלבד.
6. יצירת רשת VPC
רשת VPC
מ-Cloud Shell
gcloud compute networks create
named-list-vpc
--subnet-mode custom
יצירת רשת משנה
מ-Cloud Shell
gcloud compute networks subnets create named-ip-subnet \ --network
named-list-vpc
--range 10.0.0.0/24 --region us-east1
יצירת כללים לחומת האש
מ-Cloud Shell
gcloud compute --project=$projectid firewall-rules create default-allow-http --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp:80 --source-ranges=0.0.0.0/0
gcloud compute --project=$projectid firewall-rules create default-allow-health-check --direction=INGRESS --priority=1000 --network=named-list-vpc --action=ALLOW --rules=tcp --source-ranges=130.211.0.0/22,35.191.0.0/16
יצירת מאזן העומסים
יוצרים את התבנית של המכונה
מ-Cloud Shell
gcloud beta compute --project=$projectid instance-templates create us-east1-template --machine-type=e2-medium --subnet=projects/$projectid/regions/us-east1/subnetworks/named-ip-subnet --network-tier=PREMIUM --metadata=startup-script-url=gs://cloud-training/gcpnet/httplb/startup.sh --maintenance-policy=MIGRATE --image=debian-10-buster-v20210217 --image-project=debian-cloud --boot-disk-size=10GB --boot-disk-type=pd-balanced --boot-disk-device-name=us-east1-template --no-shielded-secure-boot --no-shielded-vtpm --no-shielded-integrity-monitoring --reservation-affinity=any
יצירה של קבוצת המכונות המנוהלות
מ-Cloud Shell
gcloud compute --project=$projectid instance-groups managed create us-east1-mig --base-instance-name=us-east1-mig --template=us-east1-template --size=1 --zone=us-east1-b
7. אימות הקצוות העורפיים
מוודאים שהמכונות הווירטואליות נוצרות בשני האזורים ושהן ניגשות לאתרי ה-HTTP שלהן.
- עדיין ב-Compute Engine, לוחצים על VM instances בתפריט השמאלי
- שימו לב למכונות שמתחילים ב-us-east1-mig, המכונות האלה הן חלק מקבוצות המכונות המנוהלות.
- לוחצים על כתובת ה-IP החיצונית של מופע של us-east1-mig. אתם אמורים לראות את כתובת ה-IP של הלקוח (כתובת ה-IP שלכם), שם המארח (מתחיל ב-us-east1-mig)
הגדרת מאזן העומסים של HTTP
- במסוף Cloud, לוחצים על תפריט הניווט ( ) > לחצו על 'שירותי רשת' > איזון עומסים ואז לוחצים על 'יצירת מאזן עומסים'.
- בקטע HTTP(S) Load Balancing, לוחצים על Start configuration (התחלת ההגדרה).
- בוחרים באפשרות From Internet to my VMs (מהאינטרנט למכונות הווירטואליות שלי) ולוחצים על Continue (המשך).
- מגדירים את השם כ-http-lb.
הגדרת הקצה העורפי
שירותים לקצה העורפי מפנים את התנועה הנכנסת לקצה עורפי אחד או יותר. כל קצה עורפי מורכב מקבוצת מכונות וממטא-נתונים נוספים של קיבולת מילוי הבקשות.
- לוחצים על Backend configuration (הגדרת קצה עורפי).
- לשירותים לקצה העורפי ול בקטגוריות קצה עורפי, לוחצים על 'יצירה או בחירה של שירותים לקצה העורפי' בקטגוריות קצה עורפי, לוחצים על Backend services (שירותים לקצה העורפי), ואז לוחצים על Create a backend service (יצירת שירות לקצה העורפי).
- סוג הקצה העורפי הוא קבוצת מכונות
- מגדירים את הערכים הבאים, ומשאירים את כל שאר הערכים בברירות המחדל שלהם:
- לוחצים על 'סיום'.
- לבדיקת תקינות, בוחרים באפשרות 'יצירה של בדיקת תקינות'.
- מגדירים את הערכים הבאים, ומשאירים את כל שאר הערכים בברירות המחדל שלהם:
- לוחצים על 'שמירה והמשך'.
- לוחצים על Create כדי ליצור את השירות לקצה העורפי.
הגדרת הקצה הקדמי
כללי המארח וכללי הנתיב קובעים את האופן שבו התנועה תופנה. לדוגמה, תוכלו להפנות את התנועה בסרטונים לקצה עורפי אחד ותנועה סטטית תבצע קצה עורפי נוסף. עם זאת, לא תגדירו את כללי המארח והנתיב בשיעור ה-Lab הזה.
- לחץ על Frontend configuration.
- http-front-end
- מציינים את הערכים הבאים, ומשאירים את כל שאר הערכים בברירת המחדל שלהם:
- לוחצים על 'סיום'.
8. בדיקה ויצירה של מאזן העומסים של HTTP
- לוחצים על 'בדיקה' ו'סיום'.
- סקירת השירותים לקצה העורפי וממשק הקצה.
- לוחצים על Create.
- יש להמתין מספר דקות ליצירת מאזן העומסים
- לוחצים על השם של מאזן העומסים (http-lb).
- שימו לב לכתובת ה-IPv4 של מאזן העומסים בשביל המשימה הבאה, שנקראת http-lb.
9. אימות של גישה לא מורשית בהצלחה
לפני שמיישמים את המדיניות בנושא כתובת IP בעלת שם, צריך לאמת גישה לא מורשית בהצלחה למאזן של שיעור ה-Lab ולאפליקציית האינטרנט הבאה. הערה: לאחר יישום המדיניות בנושא כתובת IP בעלת שם, הגישה לאפליקציית האינטרנט מוגבלת לקבוצת הביטוי שהוקצה.
- עליך לזהות את כתובת ה-IP של מאזן העומסים שנוצרה בשלב הקודם (http-lb) ולהדביק אותה בדפדפן האינטרנט. הפלט יהיה דומה לפי צילום המסך שלמטה.
הערה: השלב הזה יימשך כמה דקות. אחרי שדף האינטרנט נוצר, כתובת ה-IP של הלקוח היא ממערכת הקצה של Google ולא כתובת ה-IP של תחנת העבודה.
בתחנת העבודה שלך מבצעים אימות דומה כמו שמתואר בהמשך
bash-3.2$ curl <load-balancer-IP>
10. פלט לדוגמה
bash-3.2$ curl <load-balancer-ip> <h1>HTTP Load Balancing Lab</h1><h2>Client IP</h2>Your IP address : 35.191.0.151<h2>Hostname</h2>Server Hostname: us-east1-mig-8nqq<h2>Server Location</h2>Region and Zone: us-east1-b
11. הגדרת רשימת כתובות IP בעלות שם
יצירת מדיניות חדשה של Cloud Amour לרשימת כתובות IP בעלות שם
מ-Cloud Shell
gcloud compute --project=$projectid security-policies create ca-policy
מ-Cloud Shell
gcloud compute --project=$projectid security-policies rules update 2147483647 --action=deny-403 --security-policy=ca-policy --description="Default rule, higher priority overrides it" --src-ip-ranges=\*
זיהוי של כתובות IP זמינות בשמות CDN.
מ-Cloud Shell
gcloud compute security-policies list-preconfigured-expression-sets \ --filter="id:sourceiplist"
הפעולה הזו מחזירה:
EXPRESSION_SET sourceiplist-fastly sourceiplist-cloudflare sourceiplist-imperva
מגדירים רשימה של כתובות IP בעלות שם מ-Cloud Shell על סמך קבוצת הביטויים הזמינים של ה-CDN
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('expression_set')" \ --action "allow"
דוגמה לשימוש ב-cloudflare
gcloud beta compute security-policies rules create 600 \ --security-policy ca-policy \ --expression "evaluatePreconfiguredExpr('sourceiplist-cloudflare')" \ --action "allow"
12. החלת מדיניות האבטחה של ה-CA
החלת מדיניות האבטחה של רשות האישורים ולהמתין מספר דקות להפצת המדיניות הגלובלית
gcloud compute backend-services update http-backend --security-policy ca-policy --global
13. אימות כתובת IP בעלת שם
- כי מדיניות האבטחה מיושמת, אין אישור לגישה למאזן העומסים מתחנת העבודה.
- כדי לאמת, פותחים חלון טרמינל, מתחנת העבודה ומבצעים קיפול (curl) לכתובת ה-IP של מאזן העומסים. פלט מה-curl יוביל להצגה של '403' שגיאה אסורה כי תחנת העבודה שלך לא מורשית עכשיו.
מתחנת העבודה שלך
bash-3.2$ curl <load-balancer-IP> <!doctype html><meta charset="utf-8"><meta name=viewport content="width=device-width, initial-scale=1"><title>403</title>403 Forbidden
לניקוי השלבים
gcloud -q compute backend-services update http-backend --security-policy "" --global gcloud -q compute --project=$projectid security-policies delete ca-policy gcloud -q compute forwarding-rules delete http-front-end --global gcloud -q compute target-http-proxies delete http-lb-target-proxy gcloud -q compute url-maps delete http-lb gcloud -q compute backend-services delete http-backend --global gcloud -q compute health-checks delete http-health-check gcloud -q compute --project=$projectid instance-groups managed delete us-east1-mig --zone=us-east1-b gcloud -q beta compute --project=$projectid instance-templates delete us-east1-template gcloud -q compute --project=$projectid firewall-rules delete default-allow-http gcloud -q compute --project=$projectid firewall-rules delete default-allow-health-check gcloud -q compute networks subnets delete named-ip-subnet --region us-east1 gcloud -q compute networks delete named-list-vpc
14. מעולה!
ברכות על השלמת ה-Codelab.
אילו נושאים דיברנו?
- היתרונות של רשימת כתובות IP עם שם של Cloud Armor
- יצירת מאזן עומסים גלובלי
- יצירה של קבוצת מכונות מנוהלות עם אפליקציית בדיקה לדוגמה
- יצירת מדיניות אבטחה של Cloud Armor
- פריסת רשימת כתובות IP בעלות שם של Cloud Armor
- אימות המדיניות בנושא שריון של Cloud IP בעל שם