כוונון הכללים של מדיניות האבטחה

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

כשמגדירים החרגות לכלל, אפשר להחריג את השדות הבאים מהבדיקה:

החרגת שדות של בקשות מהערכת כללים

כדי להגדיר החרגה של שדה בקשה לכלל, משייכים את ההגדרה לכלל מדיניות אבטחה.

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