כדי ליצור כללי מדיניות אבטחה של Cloud Armor, משתמשים בפקודה gcloud compute security-policies create.
משתמשים בדגל --type כדי לציין CLOUD_ARMOR (backend) או CLOUD_ARMOR_EDGE (edge). אם לא מציינים את הדגל,
Cloud Armor יוצר מדיניות אבטחה של קצה עורפי:
gcloud compute security-policies create NAME \
[--type=CLOUD_ARMOR|CLOUD_ARMOR_EDGE] \
[--file-format=FILE_FORMAT | --description=DESCRIPTION] \
[--file-name=FILE_NAME]
מחליפים את מה שכתוב בשדות הבאים:
-
NAME: השם של מדיניות האבטחה
-
FILE_FORMAT: הפורמט של הקובץ שצוין ב---file-name. מציינים yaml או json
-
DESCRIPTION: תיאור מדיניות האבטחה
-
FILE_NAME: השם של קובץ שמכיל ייצוא של מדיניות האבטחה בפורמט YAML או JSON
הפקודה הבאה מעדכנת מדיניות, מפעילה ניתוח של JSON ומשנה את רמת היומן ל-VERBOSE:
gcloud compute security-policies update my-policy \
--json-parsing=STANDARD \
--log-level=VERBOSE
כדי להוסיף כללים למדיניות אבטחה, משתמשים בפקודה gcloud
compute security-policies rules create PRIORITY.
gcloud compute security-policies rules create PRIORITY \
[--security-policy POLICY_NAME] \
[--description DESCRIPTION] \
--src-ip-ranges IP_RANGE,... | --expression EXPRESSION \
--action=[ allow | deny-403 | deny-404 | deny-502 ] \
[--preview]
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות של הכלל. סדר ההערכה של הכללים
POLICY_NAME: השם של מדיניות האבטחה
-
DESCRIPTION: תיאור הכלל
-
IP_RANGE,...: רשימה מופרדת בפסיקים של טווחי כתובות IP
-
EXPRESSION: ביטוי בשפת הכללים של Cloud Armor
לדוגמה, הפקודה הבאה מוסיפה כלל לחסימת תנועה מ-192.0.2.0/24 ומ-198.51.100.0/24. העדיפות של הכלל היא 1000:
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"
אם מוסיפים את הדגל --preview, הכלל נוסף למדיניות אבל לא נאכף, וכל תנועה שמפעילה את הכלל מתועדת בלבד.
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" \
--preview
משתמשים בדגל --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('cookie_name=cookie_value')" \
--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-403" \
--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-v422-stable')" \
--action "deny-403"
הפקודה הבאה מוסיפה כלל שמשתמש בביטוי שהוגדר מראש כדי לאפשר גישה מכל כתובות ה-IP ברשימת כתובות IP עם שם:
gcloud compute security-policies rules create 1000 \
--security-policy my-policy \
--expression "evaluatePreconfiguredWaf('sourceiplist-fastly')" \
--action "allow"