כדי לצמצם את מספר ההתראות החיוביות השגויות, אתם יכולים לשנות את הכללים על ידי החרגת שדות של בקשות מההערכה.
כשמגדירים החרגות לכלל, אפשר להחריג את השדות הבאים מהבדיקה:
החרגת שדות של בקשות מהערכת כללים
כדי להגדיר החרגה של שדה בקשה לכלל, משייכים את ההגדרה לכלל מדיניות אבטחה.
בכללים האלה אין שימוש במזהי כללים. במקום זאת, אפשר להגדיר את הדגל --target-rule-set עם אחד מהערכים הבאים:
-
cel(--target-rule-set "cel"): החרגות חלות רק על כללי CEL מותאמים אישית בכלל מדיניות האבטחה הזה. *(--target-rule-set "*", החרגה גלובלית): החלת החרגות על כל הכללים שמצורפים למדיניות האבטחה הזו, כולל כללי CEL בהתאמה אישית וכללים שמשתמשים ב-evaluatePreconfiguredWaf().
בכללי מדיניות אבטחה לקצה העורפי (גם גלובליים וגם אזוריים), אפשר להגדיר עד 100 כללים מכל אחד מהסוגים הבאים לכל יעד (cel או *):
- Request headers
- קובצי Cookie של הבקשה
- פרמטרים של שאילתת בקשה
- מזהי URI של בקשות
- גופי בקשות
אלה האופרטורים של השדות שאפשר להשתמש בהם:
-
EQUALS: התאמה אם ערך השדה שווה לערך שצוין. -
STARTS_WITH: התאמה אם ערך השדה מתחיל בערך שצוין. -
ENDS_WITH: התאמה אם ערך השדה מסתיים בערך שצוין. -
CONTAINS: התאמה אם ערך השדה מכיל את הערך שצוין. -
EQUALS_ANY: התאמה אם ערך השדה הוא ערך כלשהו.
Request headers
כדי להחריג כותרות ספציפיות של בקשות מבדיקה במהלך הערכת הכללים, אתם יכולים להשתמש בשמות הכותרות בשדה ההחרגה.
כשכותרת בקשה תואמת להחרגה, כל רשומת הכותרת (גם השם וגם הערך) מוסרת מהמפה request.headers לפני הערכת הכלל.
דוגמה
בדוגמה הבאה מעדכנים את הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY, כדי להחריג מהערכת הכללים (cel) כותרות של בקשות שמתחילות ב-abc או מסתיימות ב-xyz:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-header-to-exclude "op=STARTS_WITH,val=abc" \
--request-header-to-exclude "op=ENDS_WITH,val=xyz"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה
קובצי Cookie של הבקשה
אפשר להחריג קובצי Cookie ספציפיים של בקשות מבדיקה במהלך הערכת הכללים, על ידי שימוש בשמות של קובצי ה-Cookie בשדה ההחרגה.
כשקובץ Cookie של בקשה תואם להחרגה, כל הרשומה של קובץ ה-Cookie (גם השם וגם הערך שלו) מוחרגת ממאפייני הבקשה לפני הערכת הכלל.
דוגמה
בדוגמה הבאה, הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY מעודכן כך שקובצי Cookie של בקשות שמתחילים ב-session_ לא ייכללו בהערכת הכללים (cel):
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-cookie-to-exclude "op=STARTS_WITH,val=session_"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה
פרמטרים של שאילתת בקשה
אתם יכולים להחריג פרמטרים ספציפיים של בקשות מבדיקה במהלך הערכת הכללים, על ידי שימוש בשמות הפרמטרים שלהם בשדה ההחרגה. הדגל --request-query-param-to-exclude חל גם על פרמטרים של שאילתות של כתובות URL וגם על פרמטרים מנותחים של גוף הבקשה (JSON, נתוני טפסים ו-GraphQL).
כשפרמטר תואם להחרגה, כל רשומת הפרמטר (גם המפתח וגם הערך) מוסרת מ-request.params לפני הערכת הכלל, כך ש-has(request.params.param_name) מוערך כ-false.
בגופי בקשות מנותחים, אפשר להשתמש בסימון נקודות כדי לטרגט שדות בתצוגת עץ ופריטים במערך:
- שדה ברמה העליונה:
val=user - שדה בתצוגת עץ:
val=user.name - פריט במערך:
val=items.0.name
דוגמה
בדוגמה הבאה, הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY מעודכן כך שפרמטר השאילתה של כתובת ה-URL bad-param, שדה ה-JSON בתצוגת עץ user.name ושדה הפריט במערך ה-JSON items.0.name לא ייכללו בהערכת הכללים (cel):
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-query-param-to-exclude "op=EQUALS,val=bad-param" \
--request-query-param-to-exclude "op=EQUALS,val=user.name" \
--request-query-param-to-exclude "op=EQUALS,val=items.0.name"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה
מזהי URI של בקשות
אתם יכולים להחריג מזהי URI משורת הבקשה (לא כולל נתונים של מחרוזת שאילתה) מבדיקה במהלך הערכת הכללים.
כשמחריגים URI, כל השדה של ה-URI מוחרג מהבדיקה.
דוגמה
בדוגמה הבאה מעדכנים את הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY, כדי להחריג מהערכת הכללים (cel) מזהי URI של בקשות שמכילים את /bad-path:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-uri-to-exclude "op=CONTAINS,val=/bad-path"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה
גופי בקשות
אתם יכולים להחריג ערכים ספציפיים של גוף הבקשה מבדיקה במהלך הערכת הכללים.
כשגוף הבקשה תואם להחרגה, המאפיין request.body מוחרג מהערכת הכלל.
דוגמה
בדוגמה הבאה, הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY מעודכן כך שגופי בקשות שמכילים את bad-body-value לא ייכללו בהערכת הכללים (cel):
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-body-to-exclude "op=CONTAINS,val=bad-body-value"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה
ערכי שדות
אם משתמשים באופרטור שדה שהוא לא EQUALS_ANY, צריך לציין ערך שדה.
בכותרות של בקשות, בקובצי Cookie של בקשות ובפרמטרים של שאילתות של בקשות, קבוצת התווים המותרת לערכי שדות כוללת את התווים הבאים:
-
!,#,$,%,&,*,+,-,.,^,_,`,|,~ - אותיות מ-
AעדZ(גם אותיות רישיות וגם אותיות קטנות) - תווי ספרות
0עד9
בגוף הבקשה, מערכת התווים המותרת לערכי שדות כוללת את כל תווי ה-ASCII שניתנים להדפסה, חוץ מ-', \`,(, and)`:
- רווח (
) ותווים מיוחדים:!, ", #, $, %, &, *, +,,, -, ., /, :, ;, <, =, >, ?, @, [, ], ^, _,`, {, |, }, ~ - אותיות מ-
AעדZ(גם אותיות רישיות וגם אותיות קטנות) - תווי ספרות
0עד9
כשמחילים החרגות על שדות הבקשה האלה, ערך השדה שהוגדר (val=) מושווה ללא תלות ברישיות (אחרי טרנספורמציה) לערכים הבאים, כדי לקבוע אילו ישויות להחריג מהבדיקה:
- כותרות של בקשות: התאמה לשם הכותרת (מפתח) כדי להחריג את כל הכותרת (גם השם וגם הערך).
- קובצי Cookie של הבקשה: התאמה לשם של קובץ ה-Cookie כדי להחריג את כל קובץ ה-Cookie (גם השם וגם הערך).
- פרמטרים של שאילתת בקשה: התאמה לשם הפרמטר או לנתיב JSON בתצוגת עץ (מפתח) כדי להחריג את הפרמטר כולו (גם המפתח וגם הערך).
- גופי בקשות: התאמה למחרוזת התוכן של גוף הבקשה כדי להחריג את כל המאפיין
request.body.
אין צורך לבצע קידוד נוסף אם רוצים להחריג תו ספציפי שלא נמצא במערכת התווים המותרת.
במזהי URI של בקשות, צריך לציין את ערך השדה בפורמט URI עם ההגבלות הבאות על הרכיבים:
| רכיב | הגבלה |
|---|---|
| Scheme | מותרת, אבל מוגבלת ל-http או ל-https |
| מארח | מותר (יכול להיות כתובת IP) |
| יציאה | מותר |
| נתיב | מותר |
| שאילתה | אסור |
| מקטע (fragment) | אסור |
כשמחילים החרגות על מזהי URI של בקשות, ערכי השדות שהוגדרו מושווים ללא תלות ברישיות (אחרי טרנספורמציה) למזהי ה-URI משורת הבקשה, לא כולל מחרוזת השאילתה. מזהי ה-URI משורת הבקשה יכולים להיות יחסיים או מוחלטים. חשוב לזכור את זה כשמגדירים החרגות לכתובות URI של בקשות.
הסרת החרגות
כדי להסיר החרגות של שדות בקשה מכלל של מדיניות אבטחה, משתמשים בפקודה remove-preconfig-waf-exclusion. כדי להסיר החרגות של שדות ספציפיים, אתם יכולים לציין את דגלי ההחרגה של השדות המתאימים, או להשמיט את דגלי השדות כדי להסיר את כל ההחרגות של קבוצת כללי היעד הזו (cel או *).
דוגמאות
בדוגמה הבאה מעדכנים את הכלל במדיניות האבטחה POLICY_NAME ב-PRIORITY כדי להסיר את ההחרגה של request headers שמתחילות ב-abc מהערכת הכללים (cel):
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel" \
--request-header-to-exclude "op=STARTS_WITH,val=abc"
בדוגמה הבאה, הדגלים של השדות מושמטים כדי להסיר את כל ההחרגות של שדות הבקשה שהוגדרו להערכת כללים (cel) בכלל ב-PRIORITY:
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \
--security-policy POLICY_NAME \
--target-rule-set "cel"
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל -
POLICY_NAME: השם של מדיניות האבטחה