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 עם שמות שהוגדרו מראש.
מתחברים ל-Cloud Shell ומגדירים את 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 Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או Google Workspace, אתם צריכים ליצור חשבון).



חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.
- לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.
העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי אפילו לא תצטרכו לשלם בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' כדי להשבית את המשאבים, וכך לא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.
מפעילים את Cloud Shell
אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-codelab הזה תשתמשו ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.
ב-GCP Console, לוחצים על סמל 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. אימות ה-backends
מוודאים שנוצרות מכונות וירטואליות בשני האזורים ושיש גישה לאתרי ה-HTTP שלהן.
- עדיין ב-Compute Engine, לוחצים על VM instances (מכונות וירטואליות) בתפריט הימני.
- שימו לב למופעים שמתחילים ב-us-east1-mig. המופעים האלה הם חלק מקבוצות מופעי מכונה מנוהלים.
- לוחצים על כתובת ה-IP החיצונית של מופע של us-east1-mig. אמורה להופיע כתובת ה-IP של הלקוח (כתובת ה-IP שלכם), שם המארח (מתחיל ב-us-east1-mig)
הגדרת מאזן העומסים של HTTP
- ב-Cloud Console, לוחצים על תפריט הניווט (
) > לוחצים על Network Services (שירותי רשת) > Load balancing (איזון עומסים), ואז לוחצים על Create load balancer (יצירת מאזן עומסים). - בקטע HTTP(S) Load Balancing (איזון עומסים ב-HTTP(S)), לוחצים על Start configuration (התחלת ההגדרה).

- בוחרים באפשרות 'מהאינטרנט למכונות הווירטואליות שלי' ולוחצים על 'המשך'.
- מגדירים את השם ל-http-lb.
הגדרת הקצה העורפי
שירותים לקצה העורפי מפנים תנועה נכנסת לקצה עורפי אחד או יותר שמצורפים אליהם. כל קצה עורפי מורכב מקבוצת מכונות וממטא-נתונים נוספים של קיבולת ההגשה.
- לוחצים על Backend configuration.
- בקטע Backend services & backend buckets (שירותי קצה עורפיים ודלי קצה עורפיים), לוחצים על Create (יצירה) או על Backend services & backend buckets (שירותי קצה עורפיים ודלי קצה עורפיים), ואז על Backend services (שירותי קצה עורפיים) ואז על Create a backend service (יצירת שירות קצה עורפי).
- סוג הבק-אנד הוא קבוצת מופעים
- מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

- לוחצים על 'סיום'.
- בקטע 'בדיקת תקינות', בוחרים באפשרות 'יצירת בדיקת תקינות'.

- מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:

- מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל:
- לוחצים על 'שמירה והמשך'.
- לוחצים על Create כדי ליצור את שירות לקצה העורפי.

הגדרת הקצה הקדמי
הכללים לגבי המארח והנתיב קובעים לאן התנועה תופנה. לדוגמה, אפשר להפנות תנועה של סרטונים לעורף אחד ותנועה סטטית לעורף אחר. עם זאת, בשיעור ה-Lab הזה לא מגדירים את הכללים של המארח והנתיב.
- לוחצים על Frontend configuration.
- http-front-end
- מציינים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל

- לוחצים על 'סיום'.
8. בדיקה ויצירה של מאזן עומסים מסוג HTTP
- לוחצים על Review and finalize (בדיקה וסיום).

- בודקים את שירותי הקצה העורפי ואת הקצה הקדמי.

- לוחצים על 'יצירה'.
- מחכים כמה דקות עד שמאזן העומסים ייווצר.
- לוחצים על השם של מאזן העומסים (http-lb).
- שימו לב לכתובת ה-IPv4 של מאזן העומסים למשימה הבאה, שנקראת http-lb.
9. אימות של גישה לא מורשית
לפני שמטמיעים מדיניות של כתובות IP עם שמות, צריך לוודא שהגישה הלא מורשית למאזן העומסים של המעבדה ולאפליקציית האינטרנט הבאה הצליחה. הערה: אחרי שמטמיעים מדיניות של כתובות IP עם שמות, הגישה לאפליקציית האינטרנט מוגבלת לקבוצת הביטויים שהוקצתה.
- מזהים את כתובת ה-IP של מאזן העומסים שיצרתם בשלב הקודם (http-lb) ומדביקים אותה בדפדפן האינטרנט. הפלט יהיה דומה לזה שמופיע בצילום המסך שלמטה.
הערה: השלב הזה יימשך כמה דקות. אחרי שדף האינטרנט נוצר, כתובת ה-IP של הלקוח היא מ-Google Front End, ולא מכתובת ה-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 Armor לרשימת כתובות 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
מגדירים מ-Cloud Shell רשימה של כתובות IP עם שמות על סמך קבוצת הביטויים הזמינה ב-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' Forbidden (אסורה), כי תחנת העבודה שלכם לא מורשית יותר.
מתחנת העבודה
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 Armor של כתובות IP עם שמות