רשימת שמות dIP של Cloud Armor

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 נחסמת.

27243e72ee25ee16.png

כתובת 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 עם שמות. אפשר להפנות לרשימות לפי השמות שמופיעים בטבלה.

7e9c09a008e04656.png

אפשרות אחרת היא להשתמש ב-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

68a800f9adbf4570.png

5. הגדרה ודרישות

הגדרת סביבה בקצב אישי

  1. נכנסים אל Cloud Console ויוצרים פרויקט חדש או משתמשים בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או חשבון Google Workspace, אתם צריכים ליצור חשבון).

96a9c957bc475304.pngb9a10ebdf5b5a448.pnga1e3c01a38fa61c2.png

חשוב לזכור את מזהה הפרויקט, שהוא שם ייחודי בכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא יתאים לכם, מצטערים!). בהמשך ה-codelab הזה נתייחס אליו כאל PROJECT_ID.

  1. לאחר מכן, תצטרכו להפעיל את החיוב ב-Cloud Console כדי להשתמש במשאבים של Google Cloud.

העלות של התרגול הזה לא אמורה להיות גבוהה, ואולי לא תהיה עלות בכלל. חשוב לפעול לפי ההוראות בקטע 'ניקוי' שבו מוסבר איך להשבית משאבים כדי שלא תחויבו אחרי שתסיימו את המדריך הזה. משתמשים חדשים ב-Google Cloud זכאים לתוכנית תקופת ניסיון בחינם בשווי 300$.

מפעילים את Cloud Shell

אפשר להפעיל את Google Cloud מרחוק מהמחשב הנייד, אבל ב-Codelab הזה נשתמש ב-Google Cloud Shell, סביבת שורת פקודה שפועלת בענן.

ב-GCP Console, לוחצים על סמל Cloud Shell בסרגל הכלים שבפינה הימנית העליונה:

bce75f34b2c53987.png

הקצאת המשאבים והחיבור לסביבה יימשכו רק כמה רגעים. בסיום התהליך, אמור להופיע משהו כזה:

f6ef2b5f13479f3a.png

המכונה הווירטואלית הזו כוללת את כל הכלים שדרושים למפתחים. יש בה ספריית בית בנפח מתמיד של 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 שלהן.

  1. עדיין ב-Compute Engine, לוחצים על VM instances (מכונות וירטואליות) בתפריט הימני.
  2. שימו לב למופעים שמתחילים ב-us-east1-mig. המופעים האלה הם חלק מקבוצות של מופעי מכונה מנוהלים.
  3. לוחצים על כתובת ה-IP החיצונית של מופע של us-east1-mig. צריכות להופיע כתובת ה-IP של הלקוח (כתובת ה-IP שלכם) ושם המארח (מתחיל ב-us-east1-mig)

הגדרת מאזן העומסים מסוג HTTP

  1. ב-Cloud Console, לוחצים על תפריט הניווט ( mainmenu.png) > לוחצים על Network Services (שירותי רשת) > Load balancing (איזון עומסים), ואז לוחצים על Create load balancer (יצירת מאזן עומסים).
  2. בקטע HTTP(S) Load Balancing (איזון עומסים ב-HTTP(S)), לוחצים על Start configuration (התחלת ההגדרה).

start_config.png

  1. בוחרים באפשרות 'מהאינטרנט למכונות הווירטואליות שלי' ולוחצים על 'המשך'.
  2. מגדירים את השם ל-http-lb.

הגדרת הקצה העורפי

שירותי קצה עורפי מפנים תנועה נכנסת לקצה עורפי אחד או יותר שמצורפים אליהם. כל קצה עורפי מורכב מקבוצת מכונות וממטא-נתונים נוספים של קיבולת ההגשה.

  1. לוחצים על Backend configuration.
  2. בקטע Backend services & backend buckets (שירותי קצה עורפיים ודלי קצה עורפיים), לוחצים על Create (יצירה) או על Backend services & backend buckets (שירותי קצה עורפיים ודלי קצה עורפיים), ואז על Backend services (שירותי קצה עורפיים) ואז על Create a backend service (יצירת שירות קצה עורפי).
  3. סוג הבק-אנד הוא קבוצת מופעים
  4. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל: 18bf7a852f0759ee.png
  5. לוחצים על 'סיום'.
  6. בקטע 'בדיקת תקינות', בוחרים באפשרות 'יצירת בדיקת תקינות'. health_check.png
    1. מגדירים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל: d2f85af1e988532b.png
  7. לוחצים על 'שמירה והמשך'.
  8. לוחצים על Create (יצירה) כדי ליצור את שירות הקצה העורפי.

b00c217bf592f0.png

הגדרת הקצה הקדמי

כללי המארח והנתיב קובעים איך התנועה תנותב. לדוגמה, אפשר להפנות תנועה של סרטונים לעורף אחד ותנועה סטטית לעורף אחר. עם זאת, בשיעור ה-Lab הזה לא מגדירים את הכללים של המארח והנתיב.

  1. לוחצים על Frontend configuration.
  2. http-front-end
  3. מציינים את הערכים הבאים ומשאירים את הערכים האחרים בברירת המחדל שלהם 51ae16211e72142f.png
  4. לוחצים על 'סיום'.

8. בדיקה ויצירה של מאזן עומסים מסוג HTTP

  1. לוחצים על Review and finalize (בדיקה וסיום).

8efe5b462a80071d.png

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

30b06910bf7fae29.png

  1. לוחצים על 'יצירה'.
  2. מחכים כמה דקות עד שמאזן העומסים ייווצר.
  3. לוחצים על השם של מאזן העומסים (http-lb).
  4. שימו לב לכתובת ה-IPv4 של מאזן העומסים למשימה הבאה, שנקראת http-lb.

9. אימות של גישה לא מורשית מוצלחת

לפני שמטמיעים מדיניות של כתובות IP עם שמות, צריך לוודא שגישה לא מורשית למאזן העומסים של המעבדה ולאפליקציית האינטרנט הבאה בוצעה בהצלחה. הערה: אחרי שמטמיעים מדיניות של כתובות IP עם שמות, הגישה לאפליקציית האינטרנט מוגבלת לקבוצת הביטויים שהוקצתה.

  1. מזהים את כתובת ה-IP של מאזן העומסים שיצרתם בשלב הקודם (http-lb) ומדביקים אותה בדפדפן האינטרנט. הפלט יהיה דומה לזה שמופיע בצילום המסך שלמטה.

הערה: השלב הזה יימשך כמה דקות. אחרי שדף האינטרנט ייווצר, כתובת ה-IP של הלקוח תהיה מהקצה הקדמי של Google, ולא כתובת ה-IP של תחנת העבודה שלכם.

f93410e9568f1f32.png

בתחנת העבודה, מבצעים אימות דומה לזה שמופיע בהמשך

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 עם שמות

  1. מאז הטמעת מדיניות האבטחה, הגישה למאזן העומסים מתחנת העבודה שלכם לא מורשית.
  2. כדי לבצע אימות, פותחים חלון טרמינל בתחנת העבודה ומבצעים 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