כדי ליצור כללי מדיניות אבטחה חדשים של Cloud Armor, משתמשים בפקודה gcloud compute security-policies create.
בשדה type, משתמשים ב-CLOUD_ARMOR כדי ליצור מדיניות אבטחה של קצה העורפי או ב-CLOUD_ARMOR_EDGE כדי ליצור מדיניות אבטחה של קצה הרשת. הדגל type הוא אופציונלי. אם לא מציינים סוג, המערכת יוצרת כברירת מחדל מדיניות אבטחה של ה-backend:
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
לדוגמה, הפקודה הבאה מוסיפה כלל לחסימת תעבורה מטווח כתובות ה-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"
אם מוסיפים את הדגל --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"