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

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

לפני שמתחילים

לפני שמגדירים מדיניות אבטחה, צריך לבצע את הפעולות הבאות:

  • חשוב להכיר את המושגים שקשורים למאזן עומסים חיצוני של אפליקציות (ALB).

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

הגדרת הרשאות IAM למדיניות אבטחה של Cloud Armor

כדי לבצע את הפעולות הבאות, צריך את התפקיד 'אדמין אבטחה ב-Compute' (roles/compute.securityAdmin) בניהול הזהויות והרשאות הגישה (IAM):

  • הגדרה, שינוי, עדכון ומחיקה של כללי מדיניות האבטחה של Cloud Armor
  • באמצעות השיטות הבאות של API:
    • SecurityPolicies insert
    • SecurityPolicies delete
    • SecurityPolicies patch
    • SecurityPolicies addRule
    • SecurityPolicies patchRule
    • SecurityPolicies removeRule

משתמש עם התפקיד 'אדמין של רשת מחשוב' (roles/compute.networkAdmin) יכול לבצע את הפעולות הבאות:

  • הגדרת מדיניות אבטחה של Cloud Armor לשירות קצה עורפי
  • באמצעות השיטות הבאות של API:
    • BackendServices setSecurityPolicy
    • BackendServices list (gcloud בלבד)

משתמשים עם התפקיד 'אדמין לענייני אבטחה' (roles/iam.securityAdmin) ועם התפקיד 'אדמין של רשתות Compute' (roles/compute.networkAdmin) יכולים להציג מדיניות אבטחה של Cloud Armor באמצעות שיטות ה-API‏ SecurityPoliciesget,‏ list ו-getRule.

הגדרת הרשאות IAM לתפקידים בהתאמה אישית

בטבלה הבאה מפורטות הרשאות הבסיס של תפקידי IAM, שיטות ה-API שמשויכות להן והתפקידים שמעניקים את ההרשאה הזו.

הרשאת IAM שיטות API תפקידים
compute.securityPolicies.create SecurityPolicies insert אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)
compute.securityPolicies.delete SecurityPolicies delete אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)
compute.securityPolicies.get SecurityPolicies get
SecurityPolicies getRule
אדמין לענייני אבטחה (roles/iam.securityAdmin)
compute.securityPolicies.list SecurityPolicies list אדמין לענייני אבטחה (roles/iam.securityAdmin)
שני התנאים הבאים:
  • compute.securityPolicies.use
  • compute.backendServices.
    setSecurityPolicy
BackendServices
setSecurityPolicy
אדמין של רשתות מחשוב (roles/compute.networkAdmin)
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)

יצירת מדיניות אבטחה

אפשר להגדיר מדיניות אבטחה, כללים וביטויים של Cloud Armor באמצעות מסוף Google Cloud , Google Cloud CLI או API בארכיטקטורת REST. כשמשתמשים ב-CLI של gcloud כדי ליצור מדיניות אבטחה, צריך להשתמש בדגל --type כדי לציין אם מדיניות האבטחה היא מדיניות אבטחה של קצה עורפי או מדיניות אבטחה של קצה.

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

ביטויים לדוגמה

אלה ביטויים לדוגמה. מידע נוסף על ביטויים מופיע במאמר בנושא הפניה לשפה של כללים בהתאמה אישית ב-Cloud Armor.

אם אתם מגדירים כלל או ביטוי שמשתמשים בקודי מדינה או אזור לפי תקן ISO 3166-1 alpha 2, מערכת Cloud Armor מתייחסת לכל קוד בנפרד. הכללים והביטויים של 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')
    

    אפשרות אחרת היא להתאים לטווח כתובות ה-IP של כותרת מותאמת אישית של כתובת IP של לקוח באמצעות המאפיין origin.user_ip:

    inIpRange(origin.user_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('/path/[0-9]+/target_file.html')
    
  • הביטוי הבא תואם לבקשות אם הערך המפוענח ב-Base64 של הכותרת user-id מכיל ערך ספציפי:

    has(request.headers['user-id']) && request.headers['user-id'].base64Decode().contains('myValue')
    
  • הביטוי הבא משתמש בקבוצת ביטויים שהוגדרה מראש כדי להתאים לביטויים של מתקפות SQLi:

    evaluatePreconfiguredWaf('sqli-stable')
    

פרצת אבטחה מסוג Path Traversal ונירמול

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

כשכותבים כללים שמשתמשים ב-startsWith, ב-endsWith או ב-contains כדי להתאים ל-request.path, מומלץ להשתמש ב-lower וב-urlDecode כדי לבצע נורמליזציה של הנתיב לפני ההתאמה. כך אפשר למנוע עקיפות שמשתמשות בקידוד של כתובות URL או בשינויים באותיות רישיות.

לדוגמה, אם רוצים לחסום את הגישה לספרייה /admin, אפשר להשתמש בביטוי הבא:

request.path.lower().urlDecode().startsWith('/admin')

הכלל הזה חוסם בקשות ל-/admin, ל-/Admin, ל-/a%64min ולגרסאות אחרות.

כשכותבים כללים שמשתמשים ב-matches כדי להתאים ל-request.path, מומלץ להביא בחשבון גם לוכסנים הפוכים בביטוי הרגולרי.

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

request.path.matches(r'^/\\*admin')

אפשר גם לשלב את הפקודה הזו עם urlDecode כדי לטפל גם בקידוד כתובות URL וגם במעקפים של קו נטוי הפוך:

request.path.urlDecode().matches(r'^/\\*admin')

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

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

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

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

המסוף

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

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

המסוף

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

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

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

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

gcloud

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

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

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

המסוף

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

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

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

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

gcloud

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

gcloud compute security-policies delete NAME

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

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

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

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

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

במאמר הזה מוסבר איך להציג את הכללים במדיניות אבטחה של Cloud Armor.

המסוף

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

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

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

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 במסוף Google Cloud .

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

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

  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/')
        
      • הביטוי הבא תואם לבקשות אם הערך המפוענח ב-Base64 של הכותרת user-id מכיל ערך ספציפי:

        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

לדוגמה, הפקודה הבאה מוסיפה כלל לחסימת תנועה מטווח כתובות ה-IP‏ 192.0.2.0/24 ו-198.51.100.0/24. הכלל הוא בעדיפות 1000 והוא כלל במדיניות שנקראת my-policy:

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 במסוף Google Cloud .

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

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

  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.

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

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

כדי לעדכן כמה כללים באופן אטומי, מייצאים את מדיניות האבטחה הנוכחית לקובץ 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. נכנסים לדף Google Cloud Armor policies במסוף Google Cloud .

    מעבר אל כללי המדיניות של Google Cloud Armor

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

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

  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 במסוף Google Cloud .

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

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

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

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

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

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

gcloud

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

gcloud compute backend-services update my-backend \
    --security-policy my-policy

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

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

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

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

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

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

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

gcloud

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

gcloud compute backend-services update my-backend \
    --security-policy ""

כדי להסיר מדיניות אבטחה של Edge, משתמשים בפקודה gcloud compute backend-services ובדגל --edge-security-policy:

gcloud compute backend-services update my-backend \
    --edge-security-policy ""

צירוף מדיניות אבטחה לקטגוריית קצה עורפי

במאמר הזה מוסבר איך לצרף מדיניות אבטחה של Cloud Armor edge לקטגוריית קצה עורפי. אפשר לצרף מדיניות אבטחה של קצה ליותר מדלי קצה עורפי אחד.

המסוף

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

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

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

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

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

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

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

gcloud

כשמצרפים מדיניות אבטחה של קצה העורף לקטגוריית קצה עורף, משתמשים בפקודה cloud compute backend-buckets ובדגל --edge-security-policy:

gcloud compute backend-services update my-bucket \
    --edge-security-policy my-edge-policy

הסרת מדיניות אבטחה מקטגוריית קצה עורפי

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

המסוף

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

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

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

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

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

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

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

gcloud

כדי להסיר מדיניות אבטחה של קצה מקטגוריית backend, משתמשים בפקודה cloud compute backend-buckets ובדגל --edge-security-policy:

gcloud compute backend-services update my-bucket \
    --edge-security-policy ""

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

בקטעים הבאים מוסבר איך לייבא ולייצא מדיניות אבטחה כקובצי YAML או JSON.

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

אפשר לייצא כללי מדיניות אבטחה של Cloud Armor כקובץ YAML או JSON באמצעות Google Cloud CLI. התכונה הזו מספקת את היתרונות הבאים:

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

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

gcloud

  1. בפקודה הבאה, NAME הוא השם של מדיניות האבטחה. הפורמטים התקינים של הקבצים הם YAML ו-JSON. אם לא תציינו את פורמט הקובץ, Cloud Armor ישתמש ב-YAML כברירת מחדל.

    gcloud compute security-policies export NAME \
        --file-name FILE_NAME  \
        --file-format FILE_FORMAT
    

    בדוגמה הבאה מיוצאת מדיניות האבטחה my-policy לקובץ my-file בפורמט YAML:

    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: allow
      description: default rule
      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. אפשר לשנות את הקובץ המיוצא באמצעות כל כלי לעריכת טקסט, ואז לייבא אותו בחזרה אל Google Cloud באמצעות הפקודה import.

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

אפשר לייבא כללי מדיניות אבטחה של Cloud Armor מקובץ YAML או JSON באמצעות Google Cloud CLI. אי אפשר להשתמש בפקודה import כדי לעדכן את הכללים של מדיניות קיימת. במקום זאת, צריך לעדכן את הכללים אחד-אחד באמצעות התהליך עדכון של כלל יחיד במדיניות אבטחה, או את כולם בבת אחת באמצעות התהליך עדכון אטומי של כמה כללים במדיניות אבטחה.

gcloud

כדי לייבא כללי מדיניות אבטחה, משתמשים בפקודה gcloud compute security-policies import NAME. מחליפים את NAME בשם של מדיניות האבטחה שרוצים לייבא. אם לא תציינו את פורמט הקובץ, המערכת תניח את הפורמט הנכון על סמך מבנה הקובץ. אם המבנה לא תקין, תופיע שגיאה.

gcloud compute security-policies import NAME \
    --file-name FILE_NAME  \
   [--file-format FILE_FORMAT]

לדוגמה, הפקודה הבאה מעדכנת את המדיניות my-policy על ידי ייבוא הקובץ my-file.

gcloud compute security-policies import my-policy \
    --file-name my-file \
    --file-format json

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

רשימת כללים שמוגדרים מראש

מציגה רשימה של כללים שהוגדרו מראש כדי לראות את כללי ההגנה על האפליקציות והחתימות המוגדרים מראש, כמו OWASP Core Rule Set ש-Cloud Armor מספק. הכללים המוגדרים מראש האלה מכילים כמה חתימות מובנות ש-Cloud Armor משתמש בהן כדי להעריך בקשות נכנסות. כדי להוסיף את הכללים שהוגדרו מראש לכללים חדשים או קיימים, צריך להשתמש בהפניה לשפה של כללים מותאמים אישית.

מידע נוסף מופיע במאמר בנושא כללים שהוגדרו מראש.

gcloud

  1. מריצים את הפקודה gcloud compute security-policies list-preconfigured-expression-sets:

    gcloud compute security-policies list-preconfigured-expression-sets
    

    בדוגמה הבאה אפשר לראות את הפורמט של הפלט מהפקודה:

    EXPRESSION_SET
    expression-set-1
       RULE_ID                SENSITIVITY
       expression-set-1-id-1  sensitivity-value-1
       expression-set-1-id-2  sensitivity-value-2
    expression-set-2
       alias-1
       RULE_ID                SENSITIVITY
       expression-set-2-id-1  sensitivity-value-1
       expression-set-2-id-2  sensitivity-value-2
    

    בדוגמה הבאה מוצג פלט לדוגמה של הפקודה. הערה: הפלט בפועל יכלול את כל הכללים שמפורטים במאמר התאמה של כללי WAF ב-Cloud Armor.

    gcloud compute security-policies list-preconfigured-expression-sets
    
    EXPRESSION_SET
    sqli-canary
        RULE_ID                          SENSITIVITY
        owasp-crs-v030001-id942110-sqli  2
        owasp-crs-v030001-id942120-sqli  2
        …
    xss-canary
        RULE_ID                         SENSITIVITY
        owasp-crs-v030001-id941110-xss  1
        owasp-crs-v030001-id941120-xss  1
    …
    sourceiplist-fastly
    sourceiplist-cloudflare
    sourceiplist-imperva
    

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