בדף הזה מוסבר איך לנהל את כללי מדיניות האבטחה של Google Cloud Armor ולסנן את התעבורה הנכנסת לאפליקציה. מדיניות האבטחה של Cloud Armor עוזרת להגן על אפליקציות ושירותים באינטרנט מפני התקפות מניעת שירות (DDoS) מבוזרות ואיומים אחרים באינטרנט. כדי לאכוף מצב אבטחה חזק, צריך לנהל את מדיניות האבטחה באמצעות יצירה, בדיקה ואיחוד. כדי ליצור או להציג כללי מדיניות אבטחה, אפשר לעיין במאמר יצירה והצגה של כללי מדיניות אבטחה ב-Cloud Armor.
ניהול מדיניות האבטחה
בקטעים הבאים מוסבר איך אפשר להציג, לעדכן, למחוק או לבדוק את מדיניות האבטחה.
הצגת רשימה של כללי מדיניות האבטחה
כדי להציג רשימה של כללי מדיניות האבטחה של Cloud Armor בפרויקט, פועלים לפי השלבים שמפורטים בקטע הזה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
כדי לראות מדיניות מסוימת, לוחצים על השם שלה ברשימת המדיניות.
gcloud
gcloud compute security-policies list
לדוגמה:
gcloud compute security-policies list
פלט:
NAME: my-policy REGION: us-central1
מידע נוסף זמין במאמר gcloud compute security-policies
list.
עדכון מדיניות האבטחה
בקטע הזה מוסבר איך לעדכן כללי מדיניות אבטחה של Cloud Armor. אפשר לשנות את תיאור המדיניות, לשנות את כלל ברירת המחדל, לשנות את שירות ה-Backend של היעד או להוסיף כללים.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
ברשימת המדיניות, מחפשים את שם המדיניות שרוצים לעדכן ולוחצים על תפריט של המדיניות הזו.
- כדי לעדכן את התיאור או את פעולת ברירת המחדל של הכלל, בוחרים באפשרות עריכה, מבצעים את השינויים ולוחצים על עדכון.
- כדי להוסיף כלל, לוחצים על הוספת כלל ופועלים לפי השלבים במאמר הוספת כללים למדיניות אבטחה.
- כדי להחליף את שירות ה-Backend של היעד, בוחרים באפשרות החלת המדיניות על היעד, לוחצים על הוספת יעד, בוחרים יעד ואז לוחצים על הוספה.
gcloud
כדי לעדכן מדיניות אבטחה, משתמשים בשלבים הבאים של Google Cloud CLI:
- כדי לעדכן כלל, אפשר לעיין במאמר בנושא עדכון כלל יחיד במדיניות אבטחה.
- כדי להוסיף כלל, ראו הוספת כללים למדיניות אבטחה.
- כדי למחוק כלל, אפשר לעיין במאמר בנושא מחיקת כללים ממדיניות אבטחה.
- כדי לעדכן כמה כללים בעדכון אטומי אחד, אפשר לעיין במאמר בנושא עדכון אטומי של כמה כללים במדיניות אבטחה.
- כדי לעדכן שדות שלא קשורים לכללים (כמו התיאור), אפשר לעיין במאמרים בנושא ייצוא מדיניות אבטחה וייבוא מדיניות אבטחה.
מחיקת מדיניות אבטחה
בקטע הזה מוסבר איך למחוק כללי מדיניות אבטחה של Cloud Armor. לפני שמוחקים את המדיניות, צריך להסיר ממנה את כל שירותי ה-Backend.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
מסמנים את התיבה לצד המדיניות שרוצים למחוק.
בפינה השמאלית העליונה של הדף, לוחצים על מחיקה.
gcloud
שימוש ב-gcloud compute security-policies delete NAME. מחליפים את NAME בשם מדיניות האבטחה:
gcloud compute security-policies delete NAME
בדיקת מדיניות אבטחה
מומלץ להפעיל את כל הכללים החדשים במצב תצוגה מקדימה, ואז לבדוק את יומני הבקשות כדי לוודא שהמדיניות והכללים פועלים כמו שצריך.
ניהול כללים של מדיניות אבטחה
בקטעים הבאים מוסבר איך אפשר להציג, להוסיף, לעדכן או למחוק כללים של מדיניות אבטחה.
הצגת הכללים במדיניות אבטחה
כדי לראות את רשימת הכללים במדיניות אבטחה של Cloud Armor, פועלים לפי השלבים שמפורטים בקטע הזה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה הספציפית. בדף פרטי המדיניות מוצגים כללי המדיניות בכרטיסייה כללים.
gcloud
משתמשים בפקודה gcloud הבאה כדי להציג רשימה של כל הכללים במדיניות אבטחה:
gcloud compute security-policies describe NAME \
כדי לראות רשימה של כל הכללים במדיניות אבטחה יחידה באזור מסוים, יחד עם תיאור של המדיניות, משתמשים בפקודה gcloud הבאה:
gcloud compute security-policies describe NAME \ --region REGION
כדי לתאר כלל, משתמשים בפקודה gcloud הבאה:
gcloud compute security-policies rules describe PRIORITY \
--security-policy POLICY_NAME
לדוגמה, הפקודה הבאה מתארת את הכלל עם עדיפות של 1000 במדיניות האבטחה my-policy:
gcloud compute security-policies rules describe 1000 \
--security-policy my-policy
פלט:
action: deny(403) description: block traffic from 192.0.2.0/24 and 198.51.100.0/24 kind: compute#securityPolicyRule match: srcIpRanges: - '192.0.2.0/24' - '198.51.100.0/24' preview: false priority: 1000
מידע נוסף זמין במאמר gcloud compute security-policies
describe.
הוספת כללים למדיניות אבטחה
כדי להוסיף כללים למדיניות אבטחה של Cloud Armor, פועלים לפי השלבים שמפורטים בקטע הזה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.
באמצע הדף, לוחצים על הכרטיסייה כללים.
לוחצים על הוספת כלל.
אופציונלי: מזינים תיאור של הכלל.
בוחרים את המצב:
- מצב בסיסי: מאפשר או דוחה תנועה על סמך כתובות IP או טווחי כתובות IP.
- מצב מתקדם: מאפשר או דוחה תנועה על סמך ביטויי כללים.
בשדה התאמה, מציינים את התנאים שהכלל חל עליהם:
מצב בסיסי: מזינים טווח אחד (1) עד 10 של כתובות IP להתאמה לכלל. אפשר להוסיף עד 10 טווחי כתובות IP. לגבי מגבלות, אפשר לעיין במאמר בנושא מכסות ומגבלות של Cloud Armor.
מצב מתקדם:
- כלי ליצירת תנאי התאמה (תצוגה מקדימה): אפשר להשתמש בכלי החזותי ליצירת ביטויים בלי לכתוב קוד CEL גולמי. לשלב ולקבץ תנאים, ולהחיל טרנספורמציות של מחרוזות. איך משתמשים בכלי ליצירת תנאי התאמה
- עורך תנאי ההתאמה: מזינים ביטוי להערכה מול בקשות נכנסות. מידע נוסף זמין במאמר בנושא הפניה לשפה של כללים מותאמים אישית.
הביטוי הבא תואם לבקשות מכתובת ה-IP
1.2.3.4שמכילות את המחרוזתexampleבכותרתUser-Agent:inIpRange(origin.ip, '1.2.3.4/32') && has(request.headers['user-agent']) && request.headers['user-agent'].contains('example')הביטוי הבא תואם לבקשות שכוללות קובץ Cookie עם ערך ספציפי:
has(request.headers['cookie']) && request.headers['cookie'].contains('cookie_name=cookie_value')הביטוי הבא תואם לבקשות מהאזור
AU:origin.region_code == 'AU'הביטוי הבא תואם לבקשות מהאזור
AUשלא נמצאות בטווח כתובות ה-IP שצוין:origin.region_code == "AU" && !inIpRange(origin.ip, '1.2.3.0/24')הביטוי הבא מתאים לבקשות אם ה-URI תואם לביטוי רגולרי:
request.path.matches('/example_path/')הביטוי הבא תואם לבקשות אם הכותרת
user-idמכילה ערך בקידוד Base64, שכשמפענחים אותו, הוא מכיל מחרוזת ספציפית:has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')הביטוי הבא משתמש בקבוצת ביטויים שהוגדרה מראש כדי להתאים להתקפות SQLi:
evaluatePreconfiguredWaf('sqli-stable')
ברשימה פעולה, בוחרים באפשרות אישור או דחייה.
אם מגדירים כלל דחייה, בוחרים הודעה של סטטוס דחייה.
כדי להפעיל את מצב התצוגה המקדימה של הכלל, בוחרים באפשרות הפעלה.
בשדה עדיפות מזינים מספר שלם חיובי.
לוחצים על הוספה.
gcloud
משתמשים בפקודה gcloud compute security-policies rules create
PRIORITY. מחליפים את PRIORITY בעדיפות של הכלל במדיניות:
gcloud compute security-policies rules create PRIORITY \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
לדוגמה, הפקודה הבאה מוסיפה כלל עם עדיפות של 1000 לחסימת תנועה מטווח כתובות ה-IP 192.0.2.0/24 ו-198.51.100.0/24:
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"
משתמשים בדגל --expression כדי לציין תנאי. הפקודה הבאה מוסיפה כלל שמאפשר תנועה מכתובת ה-IP 1.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('80=BLAH')" \
--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-502 \
--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
עדכון של כלל יחיד במדיניות אבטחה
בקטע הזה מוסבר איך לעדכן כלל יחיד בכללי מדיניות האבטחה של Cloud Armor. כדי לעדכן כמה כללים באופן אטומי, אפשר לעיין במאמר עדכון אטומי של כמה כללים במדיניות אבטחה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.
באמצע הדף, לוחצים על הכרטיסייה כללים.
לצד הכלל שרוצים לעדכן, לוחצים על עריכה. יופיע הדף עריכת הכלל.
מבצעים את השינויים הרצויים ולוחצים על עדכון.
gcloud
כדי לעדכן כלל, משתמשים בפקודה הבאה. אפשר לעדכן רק מדיניות אבטחה אחת בכל פעם:
gcloud compute security-policies rules update PRIORITY [ \
--security-policy POLICY_NAME \
--description DESCRIPTION \
--src-ip-ranges IP_RANGES | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
--preview
]
לדוגמה, הפקודה הבאה מעדכנת כלל עם עדיפות של 1111 כדי לאפשר תנועה מטווח כתובות ה-IP 192.0.2.0/24:
gcloud compute security-policies rules update 1111 \
--security-policy my-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
update.
כדי לעדכן את העדיפות של כלל, צריך להשתמש ב-API בארכיטקטורת REST. מידע נוסף זמין במאמר בנושא securityPolicies.patchRule.
שימוש בכלי ליצירת תנאי התאמה
הכלי ליצירת תנאי התאמה הוא ממשק חזותי במסוף Cloud de Confiance שעוזר ליצור ביטויי כללים מורכבים של Cloud Armor בלי לכתוב קוד בשפת הביטויים הנפוצה (CEL). במקום לכתוב קוד, אתם יכולים להשתמש בממשק המשתמש המובנה של הכלי ליצירת כללים כדי לשלב תנאים ולקבץ לוגיקה. כך תוכלו להימנע משגיאות תחביר ולראות בצורה טובה יותר את מבנה הכלל. הכלי ליצירת ביטויים תומך ברשימות שטוחות ובלוגיקה מקוננת של עד חמש רמות של ביטויים. אפשר להשתמש בכלי הזה כשמגדירים כללים כדי להגן על קצה עורפי מרובה עננים או על פריסות היברידיות, שבהן יכול להיות שיהיה צורך לבדוק מאפיינים ספציפיים של בקשות לפני ניתוב התנועה.
תכונות של הכלי להגדרת תנאים להתאמה
הכלי ליצירת תנאי התאמה כולל את התכונות הבאות:
- לוגיקה וקינון: אפשר לשלב כמה תנאים באמצעות האופרטורים
ANDו-OR. הכלי תומך בקיבוץ ובהטמעה של עד חמישה ביטויים. - טרנספורמציות של מחרוזות: במאפיינים מבוססי-מחרוזות (כמו
request.pathאוrequest.headers), אפשר להחיל טרנספורמציות כדי לנרמל את הנתונים לפני ההערכה. הטרנספורמציות הנתמכות כוללות:- אותיות קטנות ואותיות גדולות
- פענוח Base64
- פענוח כתובת URL ופענוח כתובת URL (Unicode)
- המרת UTF-8 ל-Unicode
- ניתוח דו-כיווני: מעבר בין כלי ליצירת תנאי התאמה ויזואלי לבין כלי לעריכת תנאי התאמה בטקסט גולמי. ממשק המשתמש מנתח קוד CEL גולמי לבלוקים חזותיים באופן אוטומטי.
- תמיכה בפונקציות: הכלי לבנייה מספק אמצעי בקרה בממשק המשתמש לביטויים מבוססי-פונקציות, כמו כללי WAF שהוגדרו מראש, קבוצות כתובות ו-Threat Intelligence.
מגבלות
הכלי ליצירת תנאי התאמה הוא ממשק ברירת המחדל ליצירת כללים מתקדמים. אם ביטוי מכיל לוגיקה לא נתמכת (למשל פקודות מאקרו לא מוכרות), הכלי להגדרת ביטויים מושבת. במקרים כאלה, צריך להשתמש בטקסט הגולמי בכלי לעריכת תנאי ההתאמה כדי לערוך את הכלל.
בנוסף, הזמינות של ביטויים מסוימים בכלי ליצירת כללים תלויה ברמת השירות של Google Cloud Armor Enterprise בפרויקט ובסוג של כללי מדיניות האבטחה.
עדכון אטומי של כמה כללים במדיניות אבטחה
אתם יכולים להשתמש בתכונה 'עדכון אטומי' כדי להחיל שינויים על כמה כללים בעדכון אחד. עדכונים של כלל יחיד עלולים לגרום להתנהגות לא צפויה כמו שגיאות, כי יכול להיות שיהיה חפיפה בין הכללים הישנים לחדשים למשך תקופה קצרה.
כדי לעדכן כמה כללים באופן אטומי, מייצאים את מדיניות האבטחה הנוכחית לקובץ JSON או YAML, ואז משנים אותה. משתמשים בקובץ ששיניתם כדי ליצור מדיניות אבטחה, ואז מחליפים את מדיניות האבטחה של שירותי הקצה העורפי.
gcloud
מייצאים את המדיניות לעדכון, כמו בדוגמה הבאה:
gcloud compute security-policies export my-policy \ --file-name my-file \ --file-format yamlהמדיניות המיוצאת תיראה בערך כמו בדוגמה הבאה:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 2 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyמשתמשים בכלי לעריכת טקסט כדי לשנות את המדיניות. לדוגמה, אפשר לשנות את העדיפויות של כללים קיימים ולהוסיף כלל:
description: my description fingerprint: PWfLGDWQDLY= id: '123' name: my-policy rules: - action: deny(404) description: my-rule-1 match: expr: expression: evaluatePreconfiguredWaf('xss-stable') versionedExpr: SRC_IPS_V1 preview: false priority: 1 - action: allow description: my-new-rule match: config: srcIpRanges: - '1.2.3.1' versionedExpr: SRC_IPS_V1 preview: false priority: 10 - action: allow description: my-rule-2 match: config: srcIpRanges: - '1.2.3.4' versionedExpr: SRC_IPS_V1 preview: false priority: 11 - action: deny description: default rule kind: compute#securityPolicyRule match: config: srcIpRanges: - '*' versionedExpr: SRC_IPS_V1 preview: false priority: 2147483647 selfLink: https://www.googleapis.com/compute/v1/projects/my-project/global/securityPolicies/my-policyיוצרים כללי מדיניות אבטחה חדשים ב-Cloud Armor ומציינים את שם הקובץ והפורמט ששונו, כמו בדוגמה הבאה:
gcloud compute security-policies create new-policy \ --file-name modified-policy \ --file-format yamlמסירים את מדיניות האבטחה הישנה משירות לקצה העורפי הרלוונטי, כמו בדוגמה הבאה:
gcloud compute backend-services update my-backend \ --security-policy ""מוסיפים את מדיניות האבטחה החדשה לשירות לקצה העורפי, כמו בדוגמה הבאה:
gcloud compute backend-services update my-backend \ --security-policy new-policyאם לא נעשה שימוש במדיניות הישנה, מוחקים אותה:
gcloud compute security-policies delete my-policy
מחיקת כללים ממדיניות אבטחה
כדי למחוק כללים ממדיניות אבטחה של Cloud Armor, פועלים לפי השלבים שבקטע הזה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.
באמצע הדף, בכרטיסייה Rules (כללים), מסמנים את תיבת הסימון לצד הכלל שרוצים למחוק.
לוחצים על מחיקה.
gcloud
כדי להסיר כלל, משתמשים בפקודה הבאה. אפשר לשנות רק מדיניות אבטחה אחת בכל פעם, אבל אפשר למחוק כמה כללים בבת אחת:
gcloud compute security-policies rules delete PRIORITY [...] [
--security-policy POLICY_NAME \
]
לדוגמה:
gcloud compute security-policies rules delete 1000 \
--security-policy my-policy
צירוף והסרה של מדיניות אבטחה
בקטעים הבאים מוסבר איך לצרף מדיניות אבטחה ולהסיר אותה.
צירוף מדיניות אבטחה לשירות קצה עורפי
כדי לצרף כללי מדיניות אבטחה של Cloud Armor לשירות קצה עורפי, פועלים לפי השלבים שמפורטים בקטע הזה. אפשר לצרף מדיניות אבטחה לכמה שירותי קצה עורפי, אבל לכל שירות קצה עורפי אפשר לצרף רק מדיניות אבטחה אחת מכל סוג.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.
באמצע הדף, לוחצים על הכרטיסייה יעדים.
לוחצים על החלת המדיניות על יעד חדש.
לוחצים על הוספת יעד.
ברשימה יעד, בוחרים יעד ולוחצים על הוספה.
gcloud
כשמצרפים מדיניות אבטחה לקצה העורפי לשירות קצה עורפי, משתמשים בפקודה gcloud compute backend-services ובדגל --security-policy:
gcloud compute backend-services update my-backend \
--security-policy my-policy
כשמצרפים מדיניות אבטחה של Edge לשירות קצה עורפי, משתמשים בפקודה gcloud compute backend-services ובדגל --edge-security-policy:
gcloud compute backend-services update my-backend \
--edge-security-policy my-policy
הסרת מדיניות אבטחה משירות קצה עורפי
כדי להסיר מדיניות אבטחה של Cloud Armor משירות לקצה העורפי, פועלים לפי השלבים שבקטע הזה.
המסוף
נכנסים לדף Cloud Armor policies במסוף Cloud de Confiance .
לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.
באמצע הדף, לוחצים על הכרטיסייה יעדים.
בוחרים את שירות ה-Backend שאליו המדיניות משויכת.
לוחצים על הסרה.
בהודעה הסרת יעד, לוחצים על הסרה.
gcloud
כדי להסיר מדיניות אבטחה של קצה עורפי, משתמשים בפקודה gcloud compute
backend-services ובדגל --security-policy:
gcloud compute backend-services update my-backend \
--security-policy ""
כדי להסיר מדיניות אבטחה של קצה הרשת, משתמשים בפקודה gcloud compute
backend-services ובדגל --edge-security-policy:
gcloud compute backend-services update my-backend \
--edge-security-policy ""