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, ולא כתובת ה-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 NamedIP