רשימת שמות 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.

מתחברים ל-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

68a800f9adbf4570.png

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

הגדרת סביבה בקצב עצמאי

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

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

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

  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.

מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להצטרף לתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

הפעלת Cloud Shell

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

ממסוף GCP, לוחצים על הסמל של 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. אימות הקצוות העורפיים

מוודאים שהמכונות הווירטואליות נוצרות בשני האזורים ושהן ניגשות לאתרי ה-HTTP שלהן.

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

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

  1. במסוף Cloud, לוחצים על תפריט הניווט ( mainmenu.png) > לחצו על 'שירותי רשת' > איזון עומסים ואז לוחצים על 'יצירת מאזן עומסים'.
  2. בקטע HTTP(S) Load Balancing, לוחצים על Start configuration (התחלת ההגדרה).

start_config.png

  1. בוחרים באפשרות From Internet to my VMs (מהאינטרנט למכונות הווירטואליות שלי) ולוחצים על Continue (המשך).
  2. מגדירים את השם כ-http-lb.

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

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

  1. לוחצים על Backend configuration (הגדרת קצה עורפי).
  2. לשירותים לקצה העורפי ול בקטגוריות קצה עורפי, לוחצים על 'יצירה או בחירה של שירותים לקצה העורפי' בקטגוריות קצה עורפי, לוחצים על 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. לוחצים על 'בדיקה' ו'סיום'.

8efe5b462a80071d.png

  1. סקירת השירותים לקצה העורפי וממשק הקצה.

30b06910bf7fae29.png

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

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

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

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