בדף הזה מתוארות הגדרות לדוגמה של מדיניות אבטחה לסוגים שונים של מאזני עומסים ומדיניות אבטחה.
הגדרת מדיניות אבטחה למאזני עומסים חיצוניים של אפליקציות
אלה השלבים ברמה גבוהה להגדרת מדיניות אבטחה ב-Google Cloud Armor כדי להפעיל כללים שמאפשרים או חוסמים תנועה למאזן עומסים חיצוני גלובלי של אפליקציות (ALB) או למאזן עומסים קלאסי של אפליקציות (ALB):
- יוצרים כללי מדיניות אבטחה של Cloud Armor.
- להוסיף כללים למדיניות האבטחה על סמך רשימות של כתובות IP, ביטויים מותאמים אישית או קבוצות ביטויים שהוגדרו מראש.
- מצרפים את מדיניות האבטחה לשירות קצה עורפי של מאזן עומסים גלובלי חיצוני של אפליקציות (ALB) או של מאזן עומסים קלאסי של אפליקציות (ALB) שרוצים לשלוט בגישה אליו.
- מעדכנים את מדיניות האבטחה לפי הצורך.
בדוגמה הבאה, יוצרים שני כללי מדיניות אבטחה של Cloud Armor ומחילים אותם על שירותי קצה עורפי שונים.
בדוגמה, אלה כללי מדיניות האבטחה של Cloud Armor:
mobile-clients-policyחל על משתמשים חיצוניים בשירותיgamesשלכם.-
internal-users-policyחל על צוותtest-networkבארגון שלכם.
אתם מחילים את mobile-clients-policy על השירות games, שהשירות לקצה העורפי שלו נקרא games, ואתם מחילים את internal-users-policy על השירות הפנימי test של צוות הבדיקה, שהשירות לקצה העורפי שלו נקרא test-network.
אם המופעים של הקצה העורפי בשירות לקצה העורפי נמצאים בכמה אזורים, מדיניות האבטחה של Cloud Armor שמשויכת לשירות חלה על מופעים בכל האזורים. בדוגמה הקודמת, מדיניות האבטחה mobile-clients-policy חלה על מכונות 1, 2, 3 ו-4 ב-us-central ועל מכונות 5 ו-6 ב-us-east.
יצירת הדוגמה
כדי ליצור את תצורת הדוגמה שמוסברת בקטע הקודם, פועלים לפי ההוראות הבאות.
המסוף
הגדרת מדיניות האבטחה למשתמשים חיצוניים:
נכנסים לדף Google Cloud Armor policies במסוף Google Cloud .
לוחצים על Create policies.
בשדה שם מזינים
mobile-clients-policy.בשדה Description (תיאור) מזינים
Policy for external users.בקטע פעולת ברירת מחדל של כלל, בוחרים באפשרות דחייה.
בקטע סטטוס דחייה, בוחרים באפשרות 404 (לא נמצא).
לוחצים על השלב הבא.
מוסיפים עוד כללים:
- לוחצים על הוספת כלל.
- בשדה Description (תיאור) מזינים
allow traffic from 192.0.2.0/24. - בקטע Mode (מצב), בוחרים באפשרות Basic mode (IP addresses/ranges only) (מצב בסיסי (כתובות IP או טווחי כתובות IP בלבד)).
- בשדה התאמה, מזינים
192.0.2.0/24. - בקטע פעולה, בוחרים באפשרות אישור.
- בשדה עדיפות מזינים
1000. - לוחצים על סיום.
- לוחצים על השלב הבא.
החלת המדיניות על יעדים:
- לוחצים על הוספת יעד.
- ברשימה יעד, בוחרים יעד.
- לוחצים על סיום.
- לוחצים על יצירת מדיניות.
אפשר גם להפעיל את התכונה 'הגנה דינמית' של Google Cloud Armor:
- כדי להפעיל את ההגנה הדינמית, מסמנים את התיבה הפעלה.
מגדירים את מדיניות האבטחה למשתמשים פנימיים:
- לוחצים על Create policies.
- בשדה שם מזינים
internal-users-policy. - בשדה Description (תיאור) מזינים
Policy for internal test users. - בקטע פעולת ברירת מחדל של כלל, בוחרים באפשרות דחייה.
- בשדה סטטוס הדחייה, בוחרים באפשרות 502 (שער שגוי).
- לוחצים על השלב הבא.
מוסיפים עוד כללים:
- לוחצים על הוספת כלל.
- בשדה Description (תיאור) מזינים
allow traffic from 198.51.100.0/24. - בקטע Mode (מצב), בוחרים באפשרות Basic mode (IP addresses/ranges only) (מצב בסיסי (כתובות IP או טווחי כתובות IP בלבד)).
- בשדה התאמה, מזינים
198.51.100.0/24. - בקטע פעולה, בוחרים באפשרות אישור.
- כדי להפעיל את האפשרות תצוגה מקדימה בלבד, מסמנים את תיבת הסימון הפעלה.
- בשדה עדיפות מזינים
1000. - לוחצים על סיום.
- לוחצים על השלב הבא.
החלת המדיניות על יעדים:
- לוחצים על הוספת יעד.
- ברשימה יעד, בוחרים יעד.
- לוחצים על סיום.
- לוחצים על יצירת מדיניות.
gcloud
יוצרים את כללי מדיניות האבטחה של Cloud Armor:
gcloud compute security-policies create mobile-clients-policy \ --description "policy for external users"gcloud compute security-policies create internal-users-policy \ --description "policy for internal test users"מעדכנים את כללי ברירת המחדל במדיניות האבטחה כדי לדחות תנועה:
gcloud compute security-policies rules update 2147483647 \ --security-policy mobile-clients-policy \ --action "deny-404"gcloud compute security-policies rules update 2147483647 \ --security-policy internal-users-policy \ --action "deny-502"הוספת כללים למדיניות האבטחה:
gcloud compute security-policies rules create 1000 \ --security-policy mobile-clients-policy \ --description "allow traffic from 192.0.2.0/24" \ --src-ip-ranges "192.0.2.0/24" \ --action "allow"gcloud compute security-policies rules create 1000 \ --security-policy internal-users-policy \ --description "allow traffic from 198.51.100.0/24" \ --src-ip-ranges "198.51.100.0/24" \ --action "allow"מצרפים את מדיניות האבטחה לשירותים לקצה העורפי:
gcloud compute backend-services update games \ --security-policy mobile-clients-policygcloud compute backend-services update test-network \ --security-policy internal-users-policyאופציונלי: מפעילים את ההגנה הדינמית:
gcloud compute security-policies update mobile-clients-policy \ --enable-layer7-ddos-defensegcloud compute security-policies update internal-users-policy \ --enable-layer7-ddos-defense
יצירת מדיניות אבטחה
אפשר להשתמש במסוף Google Cloud או ב-CLI של gcloud כדי ליצור מדיניות אבטחה. ההוראות בקטע הזה מניחות שאתם מגדירים מדיניות אבטחה שתחול על מאזן עומסים חיצוני גלובלי קיים של אפליקציות או על מאזן עומסים קלאסי של אפליקציות ושירות לקצה העורפי. דוגמה לאופן מילוי השדות מופיעה בקטע יצירת הדוגמה.
המסוף
יצירת כללי מדיניות אבטחה וכללים ב-Cloud Armor וצירוף כללי מדיניות אבטחה לשירות קצה עורפי:
נכנסים לדף Google Cloud Armor policies במסוף Google Cloud .
לוחצים על Create policies.
בשדה Name, מזינים את שם המדיניות.
אופציונלי: מזינים תיאור של המדיניות.
בקטע סוג המדיניות בוחרים באפשרות מדיניות אבטחה של ה-Backend או מדיניות אבטחה של Edge.
בקטע פעולת ברירת מחדל של כלל, בוחרים באפשרות אישור כדי להגדיר כלל ברירת מחדל שמאפשר גישה, או באפשרות דחייה כדי להגדיר כלל ברירת מחדל שאוסר גישה לכתובת IP או לטווח כתובות IP.
כלל ברירת המחדל הוא כלל בעדיפות הכי נמוכה, והוא נכנס לתוקף רק אם אף כלל אחר לא חל.
אם מגדירים כלל Deny, בוחרים הודעה לDeny status. זו הודעת השגיאה שמוצגת ב-Cloud Armor אם משתמש ללא גישה מנסה לקבל גישה.
לא משנה איזה סוג כלל מגדירים, לוחצים על השלב הבא.
מוסיפים עוד כללים:
- לוחצים על הוספת כלל.
- אופציונלי: מזינים תיאור לכלל.
בוחרים מצב:
- מצב בסיסי: מאפשר או דוחה תנועה על סמך כתובות IP או טווחי כתובות IP.
- מצב מתקדם: מאפשר או דוחה תנועה על סמך ביטויי כללים.
בשדה התאמה, מציינים את התנאים שבהם הכלל חל:
- מצב בסיסי: מזינים כתובות IP או טווחי כתובות IP שצריכים להתאים לכלל.
- מצב מתקדם: מזינים ביטוי או ביטויי משנה כדי לבצע הערכה של בקשות נכנסות. במאמר הגדרת מאפייני שפה של כללים מותאמים אישית מוסבר איך לכתוב את הביטויים.
בקטע פעולה, בוחרים באפשרות אישור או דחייה כדי לאשר או לדחות תנועה אם הכלל תואם.
כדי להפעיל את מצב התצוגה המקדימה, מסמנים את תיבת הסימון הפעלה. במצב תצוגה מקדימה, אפשר לראות איך הכלל מתנהג, אבל הכלל לא מופעל.
מזינים את העדיפות של הכלל. הערך יכול להיות כל מספר שלם חיובי בין 0 ל-2,147,483,646, כולל. מידע נוסף על סדר ההערכה מופיע במאמר סדר ההערכה של הכללים.
לוחצים על סיום.
כדי להוסיף עוד כללים, לוחצים על הוספת כלל וחוזרים על השלבים הקודמים. אחרת, לוחצים על השלב הבא.
החלת המדיניות על יעדים:
- לוחצים על הוספת יעד.
- ברשימה יעד, בוחרים יעד.
- כדי להוסיף עוד יעדים, לוחצים על הוספת יעד.
- לוחצים על סיום.
- לוחצים על יצירת מדיניות.
gcloud
כדי ליצור כללי מדיניות אבטחה חדשים ב-Cloud Armor, משתמשים בפקודה
gcloud compute security-policies create.בשדה
type, משתמשים ב-CLOUD_ARMORכדי ליצור מדיניות אבטחה של קצה העורפי או ב-CLOUD_ARMOR_EDGEכדי ליצור מדיניות אבטחה של קצה הרשת. הדגלtypeהוא אופציונלי. אם לא מציינים סוג, נוצרת כברירת מחדל מדיניות אבטחה של ה-Backend:gcloud compute security-policies create NAME \ [--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \ [--file-format=FILE_FORMAT | --description=DESCRIPTION] \ [--file-name=FILE_NAME]
מחליפים את מה שכתוב בשדות הבאים:
NAME: השם של מדיניות האבטחה-
DESCRIPTION: תיאור מדיניות האבטחה
הפקודה הבאה מעדכנת מדיניות שיצרתם קודם, מפעילה ניתוח של JSON ומשנה את רמת היומן ל-
VERBOSE:gcloud compute security-policies update my-policy \ --json-parsing=STANDARD \ --log-level=VERBOSEכדי להוסיף כללים למדיניות אבטחה, משתמשים בפקודה
gcloud compute security-policies rules create PRIORITY.gcloud compute security-policies rules create PRIORITY \ [--security-policy POLICY_NAME] \ [--description DESCRIPTION] \ --src-ip-ranges IP_RANGE,... | --expression EXPRESSION \ --action=[ allow | deny-403 | deny-404 | deny-502 ] \ [--preview]מחליפים את
PRIORITYבעדיפות שהוקצתה לכלל במדיניות. מידע על אופן הפעולה של עדיפות הכללים זמין במאמר סדר ההערכה של הכללים.לדוגמה, הפקודה הבאה מוסיפה כלל לחסימת תעבורה מטווח כתובות ה-IP
192.0.2.0/24ו-198.51.100.0/24. לכלל יש עדיפות 1000, והוא כלל במדיניות שנקראתmy-policy.gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \ --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \ --action "deny-403"אם מוסיפים את הדגל
--preview, הכלל נוסף למדיניות אבל לא נאכף, וכל תנועה שמפעילה את הכלל רק נרשמת ביומן.gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --description "block traffic from 192.0.2.0/24 and 198.51.100.0/24" \ --src-ip-ranges "192.0.2.0/24","198.51.100.0/24" \ --action "deny-403" \ --previewמשתמשים בדגל
--expressionכדי לציין תנאי בהתאמה אישית. מידע נוסף זמין במאמר בנושא הגדרת מאפייני שפה של כללים מותאמים אישית. הפקודה הבאה מוסיפה כלל שמאפשר תנועה מכתובת ה-IP1.2.3.4ומכילה את המחרוזתexampleבכותרת user-agent:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')" \ --action allow \ --description "Block User-Agent 'example'"הפקודה הבאה מוסיפה כלל לחסימת בקשות אם קובץ ה-Cookie של הבקשה מכיל ערך ספציפי:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')" \ --action "deny-403" \ --description "Cookie Block"הפקודה הבאה מוסיפה כלל לחסימת בקשות מהאזור
AU:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == 'AU'" \ --action "deny-403" \ --description "AU block"הפקודה הבאה מוסיפה כלל לחסימת בקשות מהאזור
AUשלא נמצאות בטווח כתובות ה-IP שצוין:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "origin.region_code == 'AU' && !inIpRange(origin.ip, '1.2.3.0/24')" \ --action "deny-403" \ --description "country and IP block"הפקודה הבאה מוסיפה כלל לחסימת בקשות עם URI שתואם לביטוי רגולרי:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "request.path.matches('/example_path/')" \ --action "deny-403" \ --description "regex block"הפקודה הבאה מוסיפה כלל לחסימת בקשות אם הערך המפוענח ב-Base64 של הכותרת
user-idמכיל ערך ספציפי:gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')" \ --action "deny-403" \ --description "country and IP block"הפקודה הבאה מוסיפה כלל שמשתמש בקבוצת ביטויים שהוגדרה מראש כדי לצמצם את הסיכון להתקפות SQLi:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredWaf('sqli-stable')" \ --action "deny-403"הפקודה הבאה מוסיפה כלל שמשתמש בביטוי שהוגדר מראש כדי לאפשר גישה מכל כתובות ה-IP ברשימת כתובות IP עם שם:
gcloud compute security-policies rules create 1000 \ --security-policy my-policy \ --expression "evaluatePreconfiguredWaf('sourceiplist-fastly')" \ --action "allow"
הגדרת מדיניות אבטחה למאזני עומסים חיצוניים אזוריים של אפליקציות (ALB)
בקטע הזה מוסבר איך להגדיר מדיניות אבטחה של Cloud Armor בהיקף אזורי למאזני עומסים חיצוניים אזוריים של אפליקציות.
הגנה על עומסי עבודה (workload) מאוזנים אזורית
כדי להגדיר מדיניות אבטחה להגנה על שירות קצה עורפי בהיקף אזורי:
יוצרים מדיניות אבטחה בהיקף אזורי.
gcloud compute security-policies create POLICY_NAME \ --type=CLOUD_ARMOR \ --region=REGION
מצרפים את מדיניות האבטחה בהיקף אזורי לשירות לקצה העורפי בהיקף אזורי. מחליפים את
BACKEND_NAMEבשם של שירות הקצה העורפי הקיים בהיקף אזורי.gcloud compute backend-services update BACKEND_NAME \ --security-policy=POLICY_NAME \ --region=REGION
החלת מדיניות אבטחה של Cloud Armor בהיקף אזורי
נניח שאתם אדמינים של אבטחה שרוצים לעמוד בדרישה של מיקום נתונים, שלפיה כל עומסי העבודה של ה-Backend וכללי ה-WAF צריכים להיות פרוסים באזור ספציפי. נניח שביצעתם את הפעולות הבאות מראש:
- יצרתם שירותים לקצה עורפי עם איזון עומסים בהיקף אזורי באזור.
- השבתתם כללי מדיניות קיימים לאבטחה בהיקף גלובלי בפריסה.
- יצרתם מדיניות אבטחה בהיקף אזורי וצירפתם אותה לאותו אזור (כמו בקטע הקודם).
אפשר להוסיף כללי WAF וכללים מתקדמים אחרים למדיניות, תוך עמידה בדרישה, באמצעות פקודות הדוגמה הבאות:
הוספת כלל WAF למדיניות:
gcloud compute security-policies rules create 1000 --action=deny-404 \ --expression="evaluatePreconfiguredWaf('xss-v33-stable', ['owasp-crs-v030301-id941100-xss', 'owasp-crs-v030301-id941160-xss'])" \ --security-policy=POLICY_NAME \ --region=REGIONמוסיפים כלל מתקדם למדיניות:
gcloud compute security-policies rules create 1000 --action=allow \ --expression="has(request.headers['cookie']) && request.headers['cookie'].contains('80=EXAMPLE')" \ --security-policy=POLICY_NAME \ --region=REGIONמוסיפים כלל להגבלת קצב של יצירת בקשות למדיניות:
gcloud compute security-policies rules create 1000 --action=throttle \ --src-ip-ranges="1.1.1.1/32" \ --rate-limit-threshold-count=1000 \ --rate-limit-threshold-interval-sec=120 \ --conform-action="allow" \ --exceed-action="deny-429" \ --enforce-on-key=IP \ --ban-duration-sec=999 \ --ban-threshold-count=5000 \ --ban-threshold-interval-sec=60 \ --security-policy=POLICY_NAME \ --region=REGION