ניהול כללי מדיניות האבטחה של Cloud Armor

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

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

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

הצגת רשימה של כללי מדיניות האבטחה

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

המסוף

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

    כניסה למדיניות Cloud Armor

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

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 של היעד או להוסיף כללים.

המסוף

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

    כניסה למדיניות Cloud Armor

  2. ברשימת המדיניות, מחפשים את שם המדיניות שרוצים לעדכן ולוחצים על תפריט של המדיניות הזו.

    • כדי לעדכן את התיאור או את פעולת ברירת המחדל של הכלל, בוחרים באפשרות עריכה, מבצעים את השינויים ולוחצים על עדכון.
    • כדי להוסיף כלל, לוחצים על הוספת כלל ופועלים לפי השלבים במאמר הוספת כללים למדיניות אבטחה.
    • כדי להחליף את שירות ה-Backend של היעד, בוחרים באפשרות החלת המדיניות על היעד, לוחצים על הוספת יעד, בוחרים יעד ואז לוחצים על הוספה.

gcloud

כדי לעדכן מדיניות אבטחה, משתמשים בשלבים הבאים של Google Cloud CLI:

מחיקת מדיניות אבטחה

בקטע הזה מוסבר איך למחוק כללי מדיניות אבטחה של Cloud Armor. לפני שמוחקים את המדיניות, צריך להסיר ממנה את כל שירותי ה-Backend.

המסוף

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

    כניסה למדיניות Cloud Armor

  2. מסמנים את התיבה לצד המדיניות שרוצים למחוק.

  3. בפינה השמאלית העליונה של הדף, לוחצים על מחיקה.

gcloud

שימוש ב-gcloud compute security-policies delete NAME. מחליפים את NAME בשם מדיניות האבטחה:

gcloud compute security-policies delete NAME

בדיקת מדיניות אבטחה

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

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

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

הצגת הכללים במדיניות אבטחה

כדי לראות את רשימת הכללים במדיניות אבטחה של Cloud Armor, פועלים לפי השלבים שמפורטים בקטע הזה.

המסוף

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

    כניסה למדיניות Cloud Armor

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

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, פועלים לפי השלבים שמפורטים בקטע הזה.

המסוף

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

    כניסה למדיניות Cloud Armor

  2. לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.

  3. באמצע הדף, לוחצים על הכרטיסייה כללים.

  4. לוחצים על הוספת כלל.

  5. אופציונלי: מזינים תיאור של הכלל.

  6. בוחרים את המצב:

    • מצב בסיסי: מאפשר או דוחה תנועה על סמך כתובות IP או טווחי כתובות IP.
    • מצב מתקדם: מאפשר או דוחה תנועה על סמך ביטויי כללים.
  7. בשדה התאמה, מציינים את התנאים שהכלל חל עליהם:

    • מצב בסיסי: מזינים טווח אחד (1) עד 10 של כתובות IP להתאמה לכלל. אפשר להוסיף עד 10 טווחי כתובות IP. לגבי מגבלות, אפשר לעיין במאמר בנושא מכסות ומגבלות של Cloud Armor.

    • מצב מתקדם:

    • הביטוי הבא תואם לבקשות מכתובת ה-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')
        

  8. ברשימה פעולה, בוחרים באפשרות אישור או דחייה.

  9. אם מגדירים כלל דחייה, בוחרים הודעה של סטטוס דחייה.

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

  11. בשדה עדיפות מזינים מספר שלם חיובי.

  12. לוחצים על הוספה.

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

המסוף

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

    כניסה למדיניות Cloud Armor

  2. לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.

  3. באמצע הדף, לוחצים על הכרטיסייה כללים.

  4. לצד הכלל שרוצים לעדכן, לוחצים על עריכה. יופיע הדף עריכת הכלל.

  5. מבצעים את השינויים הרצויים ולוחצים על עדכון.

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

  1. מייצאים את המדיניות לעדכון, כמו בדוגמה הבאה:

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

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

    gcloud compute security-policies create new-policy \
        --file-name modified-policy \
        --file-format yaml
    
  4. מסירים את מדיניות האבטחה הישנה משירות לקצה העורפי הרלוונטי, כמו בדוגמה הבאה:

    gcloud compute backend-services update my-backend \
        --security-policy ""
    
  5. מוסיפים את מדיניות האבטחה החדשה לשירות לקצה העורפי, כמו בדוגמה הבאה:

    gcloud compute backend-services update my-backend \
        --security-policy new-policy
    
  6. אם לא נעשה שימוש במדיניות הישנה, מוחקים אותה:

    gcloud compute security-policies delete my-policy
    

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

כדי למחוק כללים ממדיניות אבטחה של Cloud Armor, פועלים לפי השלבים שבקטע הזה.

המסוף

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

    כניסה למדיניות Cloud Armor

  2. לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.

  3. באמצע הדף, בכרטיסייה Rules (כללים), מסמנים את תיבת הסימון לצד הכלל שרוצים למחוק.

  4. לוחצים על מחיקה.

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

המסוף

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

    כניסה למדיניות Cloud Armor

  2. לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.

  3. באמצע הדף, לוחצים על הכרטיסייה יעדים.

  4. לוחצים על החלת המדיניות על יעד חדש.

  5. לוחצים על הוספת יעד.

  6. ברשימה יעד, בוחרים יעד ולוחצים על הוספה.

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 משירות לקצה העורפי, פועלים לפי השלבים שבקטע הזה.

המסוף

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

    כניסה למדיניות Cloud Armor

  2. לוחצים על השם של מדיניות האבטחה כדי לפתוח את הדף פרטי המדיניות.

  3. באמצע הדף, לוחצים על הכרטיסייה יעדים.

  4. בוחרים את שירות ה-Backend שאליו המדיניות משויכת.

  5. לוחצים על הסרה.

  6. בהודעה הסרת יעד, לוחצים על הסרה.

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 ""