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

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

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

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

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

  • בודקים את שירותי הקצה העורפי הקיימים כדי לזהות את אלה שלא מצורף אליהם כלל מדיניות אבטחה. שירותי הקצה העורפי האלה והקצה העורפי המשויך להם לא מוגנים על ידי 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 אדמין אבטחת מחשוב (roles/compute.securityAdmin)
compute.securityPolicies.delete SecurityPolicies delete אדמין אבטחת מחשוב (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
אדמין ברשת Compute (roles/compute.networkAdmin)
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies removeRule
אדמין אבטחת מחשוב (roles/compute.securityAdmin)

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

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

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

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

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

אם אתם מגדירים כלל או ביטוי שמשתמשים בקודי מדינה או אזור מסוג ISO 3166-1 alpha-2, ‏ Cloud Armor מתייחס לכל קוד בנפרד. כללים וביטויים ב-Cloud Armor משתמשים באופן מפורש בקודי האזורים האלה כדי לאשר או לדחות בקשות.

  • הביטוי הבא תואם לבקשות מכתובת ה-IP‏ 1.2.3.4 ומכיל את המחרוזת example בכותרת סוכן המשתמש:

    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 and normalization

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

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

המסוף

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

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

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

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

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.

    • מצב מתקדם:

      • כלי ליצירת תנאי התאמה (תצוגה מקדימה): אפשר להשתמש בכלי החזותי ליצירת ביטויים בלי לכתוב קוד CEL גולמי. אפשר להוסיף תנאים, לקבץ אותם ולהחיל עליהם טרנספורמציות של מחרוזות. מידע נוסף מופיע במאמר בנושא שימוש בכלי ליצירת תנאי התאמה.
      • Match condition editor: מזינים ביטוי או ביטויי משנה להערכה מול בקשות נכנסות. מידע על אופן הכתיבה של הביטויים ועל קריאת הדוגמאות הבאות מופיע במאמר בנושא שפת כללים בהתאמה אישית.
    • הביטוי הבא תואם לבקשות מכתובת ה-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 בכותרת סוכן המשתמש:

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 שבו אפשר ליצור ביטויים מורכבים של Common Expression Language ‏ (CEL) בלי לכתוב קוד גולמי. הכלי ליצירת סוכנים ממחיש את הלוגיקה באמצעות ממשק משתמש מובנה, ותומך בקיבוץ, ברשימות רגילות ובלוגיקה עם רמות קינון עמוקות. הכלי הזה שימושי במיוחד כשמגדירים כללים להגנה על עורפי קצה (backend) מרובי עננים או על פריסות היברידיות, שבהן יכול להיות שיהיה צורך לבדוק מאפיינים ספציפיים של בקשות לפני ניתוב תנועה לנקודות קצה חיצוניות.

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

  • לוגיקה וקינון: אפשר לשלב כמה תנאים באמצעות האופרטורים AND ו-OR. הכלי תומך ברמה אחת של קיבוץ וסידור פנימי, עם עד חמישה ביטויים.
  • טרנספורמציות של מחרוזות: במאפיינים מבוססי-מחרוזות (כמו request.path או request.headers), אפשר להחיל טרנספורמציות כדי לנרמל את הנתונים לפני ההערכה. הטרנספורמציות הנתמכות כוללות:
    • אותיות קטנות ואותיות גדולות
    • פענוח Base64
    • פענוח כתובת URL ופענוח כתובת URL (Unicode)
    • המרת UTF-8 ל-Unicode
  • ניתוח דו-כיווני: אפשר לעבור בין הכלי הוויזואלי ליצירת תנאי התאמה לבין עורך תנאי ההתאמה של טקסט גולמי. ממשק המשתמש מנסה לנתח קוד CEL גולמי לבלוקים חזותיים באופן אוטומטי.
  • תמיכה בפונקציות: הכלי ליצירת כללים מספק אמצעי בקרה ספציפיים בממשק המשתמש לביטויים מבוססי-פונקציות, כמו כללי WAF שהוגדרו מראש, קבוצות כתובות ו-Threat Intelligence.

מגבלות

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

בנוסף, הזמינות של ביטויים מסוימים בכלי ליצירת כללים תלויה ברמת 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. נכנסים לדף Google Cloud Armor policies במסוף Cloud de Confiance .

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

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

  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

  1. בדף מדיניות אבטחה, לוחצים על שם מדיניות האבטחה. מוצג הדף פרטי המדיניות.
  2. באמצע הדף, לוחצים על הכרטיסייה יעדים.
  3. בוחרים את שירות ה-Backend של היעד שממנו רוצים להסיר את המדיניות.
  4. לוחצים על הסרה.
  5. בהודעה הסרת יעד, לוחצים על הסרה.

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