רישום ביומן לכל בקשה

יומנים לכל בקשה של Google Cloud Armor לשם מדיניות האבטחה, עדיפות כלל ההתאמה, הפעולה המשויכת ומידע קשור נרשמים כחלק מהרישום ביומן של מאזני עומסים חיצוניים של אפליקציות (ALB) ומאזני עומסי רשת חיצוניים לשרת proxy. כברירת מחדל, רישום ביומן של שירותים חדשים לקצה העורפי מושבת, לכן צריך להפעיל את הרישום ביומן כדי לתעד מידע מלא ביומן של Cloud Armor.

היומנים של Cloud Armor הם חלק מהיומנים של Cloud Load Balancing. כלומר, יצירת היומנים של Cloud Armor כפופה לתדירות הדגימה של היומנים שהוגדרה למאזן העומסים. אם תפחיתו את תדירות הדגימה של מאזן העומסים, יומני הבקשות של Cloud Armor יידגמו בתדירות המופחתת הזו. בנוסף, אם אתם משתמשים בהפניה לשירות בפרויקטים שונים, היומנים נוצרים בפרויקט המארח או בפרויקט השירות שכולל את ממשק הקצה ואת מפת URL של מאזן העומסים. לכן, אנחנו ממליצים שהאדמינים בפרויקט של ממשק המשתמש יתנו לאדמינים בפרויקט של הקצה העורפי הרשאות לקרוא יומנים ומדדים.

באמצעות רישום ביומן, אתם יכולים לראות כל בקשה שנבדקה על ידי מדיניות אבטחה של Cloud Armor, ואת התוצאה או הפעולה שבוצעה על סמך הכלל התואם בעל העדיפות הגבוהה ביותר. לדוגמה, כדי להציג בקשות שנדחו, אפשר להשתמש במסננים כמו jsonPayload.enforcedSecurityPolicy.outcome="DENY" או jsonPayload.statusDetails="denied_by_security_policy".

כדי להפעיל רישום ביומן של מאזן עומסים חיצוני של אפליקציות, קראו את הקטע רישום ביומן בדף "רישום ביומן ומעקב אחרי הביצועים של מאזן עומסים גלובלי חיצוני של אפליקציות (ALB)". במאזן עומסי רשת בשרת proxy חיצוני, אפשר להשתמש בפקודות של Google Cloud CLI שמפורטות בדף הקודם, רישום ביומן ומעקב אחרי מאזן עומסים חיצוני של אפליקציות (ALB). אי אפשר להפעיל רישום ביומן למאזן עומסי רשת חיצוני לשרת proxy באמצעות מסוף Google Cloud .

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

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

רשומות היומן הבאות ב-Logs Explorer מיועדות לרישום ביומן של מדיניות האבטחה והכללים של Cloud Armor. הרשומות כוללות את המבנה הבא ב-jsonPayload. פרטי בקשת ה-HTTP מופיעים בהודעה httpRequest.

  • statusDetails: תיאור טקסטואלי של קוד התגובה.
    • ‫redirected_by_security_policy: הבקשה הופנתה על ידי כלל הפניה לכתובת אחרת, GOOGLE_RECAPTCHA או EXTERNAL_302.
    • ‫denied_by_security_policy: בקשה נדחתה על ידי מאזן העומסים בגלל מדיניות אבטחה של Cloud Armor.
    • ‫body_denied_by_security_policy: גוף הבקשה נדחה על ידי מאזן העומסים בגלל מדיניות האבטחה של Cloud Armor.
  • ‫enforcedSecurityPolicy: הכלל של מדיניות האבטחה שנאכף.
    • ‫name: השם של מדיניות האבטחה.
    • ‫priority: עדיפות מספרית של הכלל התואם במדיניות האבטחה.
    • adaptiveProtection: מידע על הכלל של Google Cloud Armor Adaptive Protection שנפרס באופן אוטומטי, אם רלוונטי.
      • ‫autoDeployAlertId: מזהה ההתראה של האירועים שזוהו על ידי ההגנה הדינמית.
    • ‫configuredAction: שם הפעולה שהוגדרה בכלל התואם – לדוגמה, ALLOW, DENY, GOOGLE_RECAPTCHA, EXTERNAL_302, THROTTLE (לכלל ויסות נתונים), RATE_BASED_BAN (לכלל חסימה שמבוסס על קצב).
    • ‫rateLimitAction: מידע על הפעולה של הגבלת קצב של יצירת בקשות כשמתקיים כלל ויסות או כלל חסימה שמבוסס על קצב.
      • ‫key: ערך המפתח של הגבלת קצב של יצירת בקשות (עד 36 בייטים). השדה הזה מושמט אם סוג המפתח הוא ALL, או אם סוג המפתח הוא HTTP-HEADER או HTTP-COOKIE והכותרת או קובץ ה-Cookie שצוינו לא קיימים בבקשה.
      • ‫outcome: הערכים האפשריים הם:
        • ‫"RATE_LIMIT_THRESHOLD_CONFORM" אם הוא נמוך מסף הגבלת הקצב שהוגדר.
        • ‫"RATE_LIMIT_THRESHOLD_EXCEED" אם חורגים מהסף שהוגדר להגבלת קצב של יצירת בקשות.
        • ‫"BAN_THRESHOLD_EXCEED" אם חורגים מסף החסימה שהוגדר.
    • ‫outcome: התוצאה של הפעולה שהוגדרה. לדוגמה: ACCEPT,‏ DENY,‏ REDIRECT,‏ EXEMPT.
    • ‫preconfiguredExprIds: המזהים של כל הביטויים של כללי WAF שהוגדרו מראש והפעילו את הכלל.
    • ‫ruleNumber: מזהה ייחודי וקבוע של הכלל במדיניות האבטחה, שנשאר אחרי שמגדירים אותו.
    • ‫rulesetId: השם או המזהה של קטגוריית הכללים המנוהלים שהופעלו (לדוגמה, google:sqli:stable).
    • ‫rulesetVersion: הגדרת הגרסה שנקבעה בכלל התואם (לדוגמה, stable או canary).
    • rulesetArtifact: המזהה הייחודי והאטום שתואם ל-Artifact Registry של גרסת המודל שמשמשת להערכה.
    • ‫threatIntelligence: מידע על רשימות כתובות ה-IP התואמות מ-Google Threat Intelligence, אם רלוונטי.
      • ‫categories: השמות של רשימות כתובות ה-IP התואמות.
    • ‫addressGroup: מידע על קבוצות הכתובות התואמות, אם רלוונטי.
      • ‫names: השמות של קבוצות הכתובות התואמות.
  • ‫previewSecurityPolicy: מאוכלס אם בקשה תואמת לכלל שהוגדר לתצוגה מקדימה (מופיע רק כשכלל תצוגה מקדימה היה מקבל עדיפות על פני הכלל שנאכף).
    • ‫name: השם של מדיניות האבטחה
    • ‫priority: עדיפות מספרית של הכלל התואם במדיניות האבטחה.
    • ‫configuredAction: שם הפעולה שהוגדרה בכלל התואם – לדוגמה, ALLOW,‏ DENY,‏ GOOGLE_RECAPTCHA,‏ EXTERNAL_302,‏ THROTTLE (לכלל ויסות נתונים), RATE_BASED_BAN (לכלל חסימה על סמך קצב).
    • ‫rateLimitAction: מידע על הפעולה של הגבלת קצב של יצירת בקשות כשמתקיים כלל ויסות או כלל חסימה שמבוסס על קצב.
      • ‫key: ערך המפתח של הגבלת קצב של יצירת בקשות (עד 36 בייטים). השדה הזה מושמט אם סוג המפתח הוא ALL, או אם סוג המפתח הוא HTTP-HEADER או HTTP-COOKIE והכותרת או קובץ ה-cookie שצוינו לא קיימים בבקשה.
      • ‫outcome: הערכים האפשריים הם:
        • ‫"RATE_LIMIT_THRESHOLD_CONFORM" אם הוא נמוך מסף הגבלת הקצב שהוגדר.
        • ‫"RATE_LIMIT_THRESHOLD_EXCEED" אם חורגים מהסף שהוגדר להגבלת קצב של יצירת בקשות.
        • ‫"BAN_THRESHOLD_EXCEED" אם חורגים מסף החסימה שהוגדר.
    • ‫outcome: התוצאה של הפעולה שהוגדרה. לדוגמה: ACCEPT,‏ DENY,‏ REDIRECT,‏ EXEMPT.
    • ‫preconfiguredExprIds: המזהים של כל הביטויים של כללי WAF שהוגדרו מראש והפעילו את הכלל.
    • ‫ruleNumber: מזהה ייחודי וקבוע של הכלל במדיניות האבטחה, שנשאר אחרי שמגדירים אותו.
    • ‫rulesetId: השם או המזהה של קטגוריית הכללים המנוהלים שהופעלו (לדוגמה, google:sqli:stable).
    • ‫rulesetVersion: הגדרת הגרסה שנקבעה בכלל התואם (לדוגמה, stable או canary).
    • rulesetArtifact: המזהה הייחודי והאטום שתואם ל-Artifact Registry של גרסת המודל שמשמשת להערכה.
    • ‫threatIntelligence: מידע על רשימות כתובות ה-IP התואמות מ-מודיעין איומי סייבר, אם רלוונטי.
      • ‫categories: השמות של רשימות כתובות ה-IP התואמות.
    • ‫addressGroup: מידע על קבוצות הכתובות התואמות, אם רלוונטי.
      • ‫names: השמות של קבוצות הכתובות התואמות.
  • ‫enforcedEdgeSecurityPolicy: הכלל של מדיניות האבטחה בקצה הרשת שנאכף.
    • ‫name: השם של מדיניות האבטחה.
    • ‫priority: העדיפות של הכלל התואם במדיניות האבטחה.
    • ‫configuredAction: שם הפעולה שהוגדרה בכלל התואם – לדוגמה, ALLOW, DENY.
    • ‫outcome: התוצאה של הפעולה שהוגדרה, לדוגמה ACCEPT, DENY.
  • ‫previewEdgeSecurityPolicy: מאוכלס אם בקשה תואמת לכלל מדיניות אבטחה של Edge שהוגדר לתצוגה מקדימה. רשומת היומן previewEdgeSecurityPolicy מופיעה רק כשכלל תצוגה מקדימה מקבל עדיפות על פני הכלל שנאכף.
    • ‫name: השם של מדיניות האבטחה.
    • ‫priority: עדיפות מספרית של הכלל התואם במדיניות האבטחה.
    • ‫configuredAction: שם הפעולה שהוגדרה בכלל התואם, לדוגמה ALLOW, DENY.
    • ‫outcome: התוצאה של הפעולה שהוגדרה, לדוגמה ACCEPT, DENY.
  • ‫evaluatedSecurityPolicies: רשימה של כללי התאמה לא סופיים שנבדקו בשביל המדיניות הזו (לדוגמה, התאמות של תצוגה מקדימה של מועמדים ושל מידע בלבד).
    • ‫ruleNumber: מזהה ייחודי וקבוע של הכלל במדיניות האבטחה, שנשאר אחרי שמגדירים אותו.
    • ‫rulesetId: השם או המזהה של קטגוריית הכללים המנוהלים שהופעלו (לדוגמה, google:sqli:stable).
    • ‫rulesetVersion: הגדרת הגרסה שנקבעה בכלל התואם (לדוגמה, stable או canary).
    • ‫rulesetArtifact: המזהה הייחודי והאטום שתואם ל-Artifact Registry של גרסת המודל שמשמשת להערכה.

צפייה ביומנים

אפשר לראות את היומנים של מדיניות האבטחה של Cloud Armor רק במסוףGoogle Cloud .

המסוף

  1. במסוף Google Cloud , נכנסים לדף Cloud Armor policies.

    כניסה לדף Cloud Armor policies

  2. לוחצים על פעולות.

  3. לוחצים על הצגת יומנים.

התאמה בין התגובות לרשומות ביומן

כדי לקשר בין בקשה של לקוח לבין רשומה ביומן ספציפית במאזני עומסים גלובליים חיצוניים של אפליקציות (ALB) ובמאזני עומסים קלאסיים של אפליקציות, אפשר להגדיר כותרת תגובה בהתאמה אישית בשירות לקצה העורפי, שכוללת את המשתנה {cloud_trace_id}, כמו בדוגמה הבאה:

--custom-response-header='X-Cloud-Trace-Id:{cloud_trace_id}'

מאזן העומסים מאכלס את המשתנה הזה במזהה המעקב ההקסדצימלי בן 32 התווים, שחולץ מבקשת ה-HTTP או נוצר בשבילה, ומחזיר את הכותרת ללקוח, גם כש-Cloud Armor דוחה את הבקשה.

ב-Cloud Logging, מזהה המעקב הזה מתועד בשדה trace ברמה העליונה של רשומת היומן של מאזן העומסים, בפורמט projects/PROJECT_ID/traces/TRACE_ID. אפשר לסנן לפי הערך הזה של trace ב-Logs Explorer כדי לאתר את רשומת היומן של בקשה ספציפית שאושרה או נחסמה. להוראות מפורטות, קראו את המאמר זיהוי בקשות חסומות ביומנים וקישור שלהן.

בקשה לרישום נתונים ביומן

כשמשתמשים ב-jsonPayload עם Cloud Armor, יש לו את השדה הנוסף הבא:

  • ‫securityPolicyRequestData: נתונים שקשורים לבקשה בזמן שהיא מעובדת על ידי מדיניות אבטחה, בלי קשר לכלל שתואם בסופו של דבר.
    • ‫recaptchaActionToken: נתונים שקשורים לאסימון פעולה של reCAPTCHA.
      • ‫score: ציון הלגיטימיות של המשתמש שמוטמע בטוקן הפעולה של reCAPTCHA. השדה הזה מופיע רק כשמצורף לבקשה אסימון פעולה של reCAPTCHA, והוא פוענח בהצלחה על סמך כלל של מדיניות אבטחה. מידע נוסף זמין במאמר אכיפת בדיקת reCAPTCHA.
    • ‫recaptchaSessionToken: נתונים שקשורים לטוקן לסשן של reCAPTCHA.
      • ‫score: ציון לגיטימיות של משתמש שמוטמע בטוקן לסשן של reCAPTCHA. השדה הזה מופיע רק אם טוקן לסשן של reCAPTCHA מצורף לבקשה והוא פוענח בהצלחה על סמך כלל של מדיניות אבטחה.
    • ‫userIpInfo: הנתונים שקשורים לשימוש בכתובת ה-IP של המשתמש.
      • source: שדה שבדרך כלל מכיל את הכותרת שממנה נפתרה כתובת ה-IP של המשתמש.
      • ‫ipAddress: כתובת ה-IP שפוענחה מהשדה source.
    • ‫remoteIpInfo: הנתונים שקשורים לכתובת ה-IP של הלקוח ששלח את הבקשה.
      • ‫ipAddress: כתובת ה-IP של הלקוח ששלח את הבקשה.
      • ‫region_code: קוד המדינה או קוד האזור בן שתי האותיות של כתובת ה-IP.
      • ‫asn: מספר המערכת האוטונומית (ASN) בן חמש הספרות שתואם לכתובת ה-IP.
    • ‫tlsJa4Fingerprint: טביעת אצבע של JA4 TTL/SSL אם הלקוח מתחבר באמצעות HTTPS, ‏HTTP/2 או HTTP/3. מוצג רק אם טביעת האצבע זמינה ויש מדיניות אבטחה שמעריכה את הבקשה (לא משנה אם ביטוי במדיניות תואם לבקשה).
    • ‫tlsJa3Fingerprint: טביעת אצבע של JA3 TTL/SSL אם הלקוח מתחבר באמצעות HTTPS, ‏HTTP/2 או HTTP/3. מוצג רק אם טביעת האצבע זמינה ויש מדיניות אבטחה שמעריכה את הבקשה (לא משנה אם ביטוי במדיניות תואם לבקשה).

דוגמאות ליומנים

בדוגמה הבאה מוצגים פרטי יומן של כלל ויסות שחוסם בקשה:

jsonPayload: {
 enforcedSecurityPolicy: {
  priority: 100
  name: "sample-prod-policy"
  configuredAction: "THROTTLE"
  outcome: "DENY"
  rateLimitAction: {
    key:"sample-key"
    outcome:"RATE_LIMIT_THRESHOLD_EXCEED"
  }
 }
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:16:48.185763Z"

הדוגמה הבאה מציגה פרטי יומן של כלל חסימה מבוסס-קצב שחוסם בקשה:

jsonPayload: {
 @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
 enforcedSecurityPolicy: {
  priority: 150
  name: "sample-prod-policy"
  outcome: "DENY"
  configuredAction: "RATE_BASED_BAN"
  rateLimitAction: {
    key:"sample-key"
    outcome:"BAN_THRESHOLD_EXCEED"
  }
 }
 statusDetails: "denied_by_security_policy"
}
httpRequest: {8}
resource: {2}
timestamp: "2021-03-17T19:27:17.393244Z"

המאמרים הבאים