אתם יכולים להגדיר מדיניות אבטחה ב-Google Cloud Armor כדי להגן על השירותים שלכם מפני התקפות מניעת שירות (DoS) והתקפות באינטרנט. המדיניות הזו משתמשת בתשתית הגלובלית של Google כדי לאבטח את האפליקציות שלכם ולשלוט בתנועה שעוברת דרך מאזני העומסים.
במאמר הזה מופיעות דוגמאות להגדרות של מדיניות אבטחה לסוגים שונים של מאזני עומסים.
הגדרת מדיניות אבטחה למאזני עומסים חיצוניים של אפליקציות
כדי להגדיר מדיניות אבטחה של Google Cloud Armor שתאפשר או תחסום תעבורת נתונים למאזן עומסים גלובלי חיצוני של אפליקציות (ALB) או למאזן עומסים קלאסי של אפליקציות (ALB), מבצעים את הפעולות הבאות :
- יוצרים כללי מדיניות אבטחה של Cloud Armor.
- מוסיפים כללים שמבוססים על כתובות IP, ביטויים מותאמים אישית או קבוצות ביטויים שהוגדרו מראש.
- מצרפים את מדיניות האבטחה לשירות קצה עורפי.
- מעדכנים את מדיניות האבטחה לפי הצורך.
בדוגמה הזו, יוצרים שני כללי מדיניות אבטחה של Cloud Armor ומחילים אותם על שירותי קצה עורפיים שונים.
בדוגמה, אלה כללי מדיניות האבטחה של Cloud Armor:
mobile-clients-policyחל על משתמשים חיצוניים בשירותיgames.-
internal-users-policyחל על צוותtest-networkבארגון שלכם.
אתם מחילים את mobile-clients-policy על השירות games, ששירות הקצה העורפי שלו נקרא games, ואתם מחילים את internal-users-policy על השירות הפנימי test של צוות הבדיקה, ששירות הקצה העורפי שלו נקרא test-network.
אם מופעי ה-Backend של שירות לקצה העורפי נמצאים בכמה אזורים, המדיניות חלה על מופעים בכל האזורים. בדוגמה הזו, התג mobile-clients-policy חל על מכונות 1, 2, 3 ו-4 באזור us-central ועל מכונות 5 ו-6 באזור us-east.
יצירת הדוגמה
כדי ליצור את הגדרת הדוגמה שמוסברת בקטע הקודם, צריך לפעול לפי השלבים שבקטע הזה.
המסוף
הגדרת מדיניות האבטחה למשתמשים חיצוניים:
נכנסים לדף Cloud Armor policies במסוף Google Cloud .
לוחצים על יצירת מדיניות.
בשדה שם מזינים
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/טווחים בלבד)).
- בשדה התאמה, מזינים
192.0.2.0/24. - בקטע פעולה, בוחרים באפשרות אישור.
- בשדה עדיפות מזינים
1000. - לוחצים על סיום.
- לוחצים על השלב הבא.
החלת המדיניות על יעדים:
- לוחצים על הוספת יעד.
- ברשימה יעד, בוחרים יעד.
- לוחצים על סיום.
- לוחצים על יצירת מדיניות.
אפשר להפעיל את התכונה 'הגנה דינמית' של Google Cloud Armor:
- כדי להפעיל את ההגנה הדינמית, לוחצים על הפעלה.
הגדרת מדיניות האבטחה למשתמשים פנימיים:
- לוחצים על יצירת מדיניות.
- בשדה שם מזינים
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/טווחים בלבד)).
- בשדה התאמה, מזינים
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 policies במסוף Google Cloud .
לוחצים על יצירת מדיניות.
בשדה Name, מזינים את שם המדיניות.
אופציונלי: מזינים תיאור של המדיניות.
בקטע סוג המדיניות בוחרים באפשרות מדיניות אבטחה של ה-Backend או מדיניות אבטחה של Edge.
בקטע פעולת ברירת מחדל של כלל, בוחרים באפשרות אישור כדי לאפשר גישה כברירת מחדל, או באפשרות דחייה כדי לדחות גישה כברירת מחדל.
כלל ברירת המחדל הוא כלל בעדיפות הכי נמוכה, והוא נכנס לתוקף רק אם אף כלל אחר לא חל.
אם מגדירים כלל Deny (דחייה), בוחרים סטטוס דחייה Response code (קוד תגובה). קוד הסטטוס הזה מוחזר על ידי Cloud Armor אם בקשה נדחית.
לוחצים על השלב הבא.
להוסיף עוד כללים:
- לוחצים על הוספת כלל.
- אופציונלי: מזינים תיאור לכלל.
בוחרים את המצב:
- מצב בסיסי: מאפשר או דוחה תנועה על סמך כתובות IP או טווחי כתובות IP.
- מצב מתקדם: מאפשר או דוחה תנועה על סמך ביטויי כללים.
בשדה התאמה, מציינים את התנאים שהכלל חל עליהם:
- מצב בסיסי: מזינים כתובות IP או טווחי כתובות IP שצריכים להתאים לכלל.
- מצב מתקדם: מזינים ביטוי להערכה מול בקשות נכנסות. מידע על מאפייני שפה של כללים מותאמים אישית
בקטע פעולה, בוחרים באפשרות אישור או דחייה.
כדי להפעיל את מצב התצוגה המקדימה, בוחרים באפשרות הפעלה. במצב תצוגה מקדימה, Cloud Armor מתעד את ההשפעה של הכלל בלי לאכוף אותו.
מזינים את העדיפות של הכלל (0 עד 2,147,483,646). סדר ההערכה של הכללים
לוחצים על סיום.
כדי להוסיף עוד כללים, לוחצים על הוספת כלל. אחרת, לוחצים על השלב הבא.
החלת המדיניות על יעדים:
- לוחצים על הוספת יעד.
- ברשימה יעד, בוחרים יעד.
- כדי להוסיף עוד יעדים, לוחצים על הוספת יעד.
- לוחצים על סיום.
- לוחצים על יצירת מדיניות.
gcloud
כדי ליצור כללי מדיניות אבטחה של Cloud Armor, משתמשים בפקודה
gcloud compute security-policies create.משתמשים בדגל
--typeכדי לצייןCLOUD_ARMOR(backend) אוCLOUD_ARMOR_EDGE(edge). אם לא מציינים את הדגל, Cloud Armor יוצר מדיניות אבטחה של קצה עורפי:gcloud compute security-policies create NAME \ [--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \ [--file-format=FILE_FORMAT | --description=DESCRIPTION] \ [--file-name=FILE_NAME]מחליפים את מה שכתוב בשדות הבאים:
-
NAME: השם של מדיניות האבטחה -
FILE_FORMAT: הפורמט של הקובץ שצוין ב---file-name. מצייניםyamlאוjson -
DESCRIPTION: תיאור מדיניות האבטחה -
FILE_NAME: השם של קובץ שמכיל ייצוא של מדיניות האבטחה בפורמט YAML או JSON
הפקודה הבאה מעדכנת מדיניות, מפעילה ניתוח של 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: העדיפות של הכלל. סדר ההערכה של הכללים POLICY_NAME: השם של מדיניות האבטחה-
DESCRIPTION: תיאור הכלל -
IP_RANGE,...: רשימה מופרדת בפסיקים של טווחי כתובות IP -
EXPRESSION: ביטוי בשפת הכללים של Cloud Armor
לדוגמה, הפקודה הבאה מוסיפה כלל לחסימת תנועה מ-
192.0.2.0/24ומ-198.51.100.0/24. העדיפות של הכלל היא 1000: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-v422-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מחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: השם של מדיניות האבטחה -
REGION: האזור שבו רוצים ליצור את מדיניות האבטחה
-
מצרפים את מדיניות האבטחה בהיקף אזורי לשירות לקצה העורפי בהיקף אזורי. מחליפים את
BACKEND_NAMEבשם של שירות לקצה העורפי הקיים שלכם בהיקף אזורי.gcloud compute backend-services update BACKEND_NAME \ --security-policy=POLICY_NAME \ --region=REGION
דוגמה: החלת מדיניות אבטחה בהיקף אזורי
בדוגמה הזו, אדמין אבטחה רוצה לעמוד בדרישת מיקום נתונים, שלפיה כל עומסי העבודה של ה-Backend וכללי ה-WAF צריכים להיות פרוסים באזור מסוים. נניח שכבר עמדתם בתנאים הבאים:
- יצרתם שירותים לקצה העורפי עם איזון עומסים בהיקף אזורי באזור.
- השבתתם כללי מדיניות קיימים לאבטחה בהיקף גלובלי בפריסה.
- יצרתם מדיניות אבטחה בהיקף אזורי וצירפתם אותה לאותו אזור (כמו בקטע הקודם).
אפשר להוסיף כללי WAF וכללים מתקדמים אחרים למדיניות באמצעות הפקודות הבאות:
מוסיפים כלל WAF למדיניות:
gcloud compute security-policies rules create 1000 --action=deny-404 \ --expression="evaluatePreconfiguredWaf('xss-v422-stable', ['owasp-crs-v042200-id941100-xss', 'owasp-crs-v042200-id941160-xss'])" \ --security-policy=POLICY_NAME \ --region=REGIONמחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: השם של מדיניות האבטחה -
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מחליפים את מה שכתוב בשדות הבאים:
-
POLICY_NAME: השם של מדיניות האבטחה -
REGION: האזור של מדיניות האבטחה
-