בדף הזה מוסבר איך להגדיר כללים של מדיניות אבטחה ב-Cloud Armor לניהול בוטים. לפני שמגדירים את ניהול הבוטים, חשוב לקרוא את המאמר סקירה כללית על ניהול בוטים.
לפני שמתחילים
בסעיפים הבאים מוסבר על כל התפקידים וההרשאות בניהול הזהויות והרשאות הגישה (IAM) שנדרשים להגדרת מדיניות אבטחה ב-Cloud Armor. בתרחישי השימוש שמופיעים במסמך הזה, נדרשות רק ההרשאות compute.securityPolicies.create ו-compute.securityPolicies.update.
הגדרת הרשאות IAM למדיניות אבטחה של Cloud Armor
כדי לבצע את הפעולות הבאות, צריך את התפקיד 'אדמין אבטחה ב-Compute' (roles/compute.securityAdmin) בניהול הזהויות והגישה (IAM):
- הגדרה, שינוי, עדכון ומחיקה של כללי מדיניות האבטחה של Cloud Armor
- באמצעות השיטות הבאות של API:
SecurityPolicies insertSecurityPolicies deleteSecurityPolicies patchSecurityPolicies addRuleSecurityPolicies patchRuleSecurityPolicies removeRule
משתמש עם התפקיד 'אדמין של רשת מחשוב' (roles/compute.networkAdmin) יכול לבצע את הפעולות הבאות:
- הגדרת מדיניות אבטחה של Cloud Armor לשירות קצה עורפי
- באמצעות השיטות הבאות של API:
BackendServices setSecurityPolicy-
BackendServices list(gcloudבלבד)
משתמשים עם התפקיד 'אדמין אבטחה' (roles/iam.securityAdmin) ועם התפקיד 'אדמין של רשתות Compute' (roles/compute.networkAdmin) יכולים להציג מדיניות אבטחה של Cloud Armor באמצעות שיטות ה-API SecurityPolicies get, 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 getSecurityPolicies getRule |
אדמין אבטחה (roles/iam.securityAdmin) |
compute.securityPolicies.list |
SecurityPolicies list |
אדמין אבטחה (roles/iam.securityAdmin) |
שני התנאים הבאים:
|
BackendServices |
אדמין ברשת Compute (roles/compute.networkAdmin) |
compute.securityPolicies.update |
SecurityPolicies patchSecurityPolicies addRuleSecurityPolicies patchRuleSecurityPolicies removeRule |
אדמין אבטחת מחשוב (roles/compute.securityAdmin) |
שימוש באתגר ידני של reCAPTCHA כדי להבחין בין לקוחות אנושיים ללקוחות אוטומטיים
כדי להשתמש ב-reCAPTCHA עם Cloud Armor, צריך לשייך את מפתח האתר של reCAPTCHA WAF (מפתח reCAPTCHA) מסוג CHALLENGEPAGE למדיניות אבטחה. מידע נוסף על מפתחות reCAPTCHA זמין במאמר סקירה כללית על מפתחות reCAPTCHA.
כדי לשייך מפתח reCAPTCHA משלכם למדיניות אבטחה או לבטל את השיוך שלו, משתמשים בפקודה הבאה:
gcloud compute security-policies update SECURITY_POLICY \
--recaptcha-redirect-site-key SITE_KEY
מחליפים את מה שכתוב בשדות הבאים:
-
SECURITY_POLICY: השם של מדיניות האבטחה -
SITE_KEY: מפתח reCAPTCHACHALLENGEPAGE
קישור מפתח reCAPTCHA
בדוגמה הבאה, מפתח reCAPTCHA משויך למדיניות אבטחה. מפתח reCAPTCHA המשויך חל על כל הכללים שמשתמשים בתכונה של אתגר ידני במסגרת מדיניות האבטחה הנתונה.
gcloud compute security-policies update SECURITY_POLICY \
--recaptcha-redirect-site-key "SITE_KEY"
ביטול השיוך של מפתח reCAPTCHA
כדי לבטל את השיוך של מפתח reCAPTCHA למדיניות אבטחה, משתמשים בפקודה הבאה:
gcloud compute security-policies update SECURITY_POLICY \
--recaptcha-redirect-site-key ""
הפניית תנועה לבדיקת reCAPTCHA
אחרי שמקשרים את מפתח reCAPTCHA למדיניות האבטחה, אפשר ליצור כלל במדיניות הזו כדי להפנות תעבורת נתונים באופן פנימי לצורך בדיקת reCAPTCHA. כדי להפנות תנועה ב-CLI של gcloud, משתמשים בפורמט הבא:
gcloud compute security-policies rules create PRIORITY \
--security-policy SECURITY_POLICY \
{--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
--action redirect \
--redirect-type google-recaptcha
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: רמת העדיפות שבה רוצים ליצור את הכלל -
SECURITY_POLICY: השם של מדיניות האבטחה -
EXPRESSION: ביטוי בשפה של כללים מותאמים אישית שתואם לתנועה שרוצים לאכוף עליה בדיקת reCAPTCHA SRC_IP_RANGE: טווח כתובות IP. משתמשים בזה כדי לאכוף בדיקת reCAPTCHA על כל הבקשות מהטווח הזה.
בדוגמה הבאה נוצר כלל שמפנה תעבורה שמנסה להגיע אל /login.html לאתגר reCAPTCHA ידני:
gcloud compute security-policies rules create 1000 \
--security-policy SECURITY_POLICY \
--expression "request.path.matches(\"/login.html\")" \
--action redirect \
--redirect-type google-recaptcha
אכיפת בדיקה חלקה של reCAPTCHA
לפני שממשיכים, כדאי לעיין בסקירה הכללית על ניהול בוטים כדי להבין מהם התנאים המוקדמים לשימוש בטוקנים של פעולות או בטוקנים של סשנים ב-reCAPTCHA.
כדי לחלץ מאפיינים מטוקן פעולה של reCAPTCHA, אפשר להשתמש בפונקציה token.recaptcha_action.ATTRIBUTE. מחליפים את ATTRIBUTE במאפיין אסימון תקף בשפת הכללים של Cloud Armor.
באופן דומה, אפשר להשתמש ב-token.recaptcha_session.ATTRIBUTE כדי לחלץ מאפיינים מטוקן של סשן reCAPTCHA. למידע נוסף על התחביר של מאפייני טוקן reCAPTCHA שזמינים, אפשר לעיין במאמר העזר בנושא שפת הכללים.
טוקן פעולה יכול להגיע מאפליקציית אינטרנט, מאפליקציית iOS או מאפליקציה ל-Android, בעוד שטוקן לסשן יכול להגיע רק מאפליקציית אינטרנט. כל פלטפורמה דורשת מפתח reCAPTCHA נפרד. הביטויים token.recaptcha_action.ATTRIBUTE ו-token.recaptcha_session.ATTRIBUTE חלים על טוקנים מכל אחת מהפלטפורמות האלה. כדי להבחין בין טוקנים מפלטפורמות שונות ולמנוע גניבת טוקנים, מומלץ לשייך מפתחות reCAPTCHA כשמגדירים כללים שמשתמשים בביטויים האלה.
דוגמאות
בדוגמה הראשונה נוצר כלל שמאפשר טירגוט תנועה /login.html עם טוקן פעולה של reCAPTCHA שהניקוד שלו הוא 0.8 ומעלה.
gcloud compute security-policies rules create 1000 \
--security-policy SECURITY_POLICY \
--expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
--action allow
הדוגמה השנייה זהה לדוגמה הראשונה, אבל היא גם דורשת שהטוקן של הפעולה יונפק עם מפתח reCAPTCHA מסוג example-site-key-1 או example-site-key-2:
gcloud compute security-policies rules create 1000 \
--security-policy SECURITY_POLICY \
--expression "request.path.matches(\"/login.html\") && token.recaptcha_action.score >= 0.8" \
--recaptcha-action-site-keys "example-site-key-1,example-site-key-2" \
--action allow
בדוגמה השלישית נוצר כלל שמאפשר תנועה שמטרגטת את /login.html, עם טוקן סשן של reCAPTCHA שהונפק עם מפתח reCAPTCHA של example-site-key-3, ועם ציון שלא נמוך מ-0.8.
gcloud compute security-policies rules create 1000 \
--security-policy SECURITY_POLICY \
--expression "request.path.matches(\"/login.html\") && token.recaptcha_session.score >= 0.8" \
--recaptcha-session-site-keys "example-site-key-3" \
--action allow
הפניה (תגובה 302)
כדי ליצור כלל להפניית תנועה לכתובת URL שהוגדרה על ידי המשתמש, משתמשים בפורמט הבא ב-Google Cloud CLI:
gcloud compute security-policies rules create PRIORITY \
--security-policy SECURITY_POLICY \
{--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
--action redirect \
--redirect-type external-302 \
--redirect-target REDIRECT_URL
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: רמת העדיפות שבה רוצים ליצור את הכלל -
SECURITY_POLICY: השם של מדיניות האבטחה -
EXPRESSION: ביטוי בשפה של כללים מותאמים אישית שתואם לתנועה שרוצים לאכוף עליה בדיקת reCAPTCHA SRC_IP_RANGE: טווח כתובות IP. משתמשים בזה כדי לאכוף בדיקת reCAPTCHA על כל הבקשות מהטווח הזה.-
REDIRECT_URL: כתובת ה-URL שאליה רוצים להפנות את התנועה
בדוגמה הבאה נוצר כלל שמפנה תנועה שמגיעה מ-10.10.10.0/24 אל https://www.example.com.
gcloud compute security-policies rules create 1000 \ --security-policy SECURITY_POLICY \ --src-ip-ranges "10.10.10.0/24" \ --action redirect \ --redirect-type external-302 \ --redirect-target "https://www.example.com"
הוספת עיצוב לבקשה
כדי ליצור כלל שמאפשר תנועה אבל מוסיף כותרות מותאמות אישית וערכים סטטיים שהוגדרו על ידי המשתמש לפני שליחתם לשרתי קצה עורפיים מוגנים, משתמשים בפורמט הבא ב-CLI של gcloud:
gcloud compute security-policies rules create PRIORITY \
--security-policy SECURITY_POLICY \
{--expression EXPRESSION | --src-ip-ranges SRC_IP_RANGE} \
--action allow \
--request-headers-to-add HEADER_1=VALUE_1,HEADER_2=VALUE_2,...
מחליפים את מה שכתוב בשדות הבאים:
-
PRIORITY: העדיפות שבה רוצים ליצור את הכלל -
SECURITY_POLICY: השם של מדיניות האבטחה -
EXPRESSION: ביטוי בשפה של כללים מותאמים אישית שתואם לתנועה שרוצים לאכוף עליה בדיקת reCAPTCHA SRC_IP_RANGE: טווח כתובות IP. משתמשים בזה כדי לאכוף בדיקת reCAPTCHA על כל הבקשות מהטווח הזה.-
HEADER_#: השם של כותרת הבקשה שרוצים להוסיף לבקשה -
VALUE_#: הערך של כותרת הבקשה שרוצים להוסיף לבקשה
בדוגמה הבאה נוצר כלל שמאפשר תעבורה שמטרגטת את /login.html, בתנאי שבבקשה יש גם ציון של אסימון פעולה מסוג reCAPTCHA שהוא נמוך מ-0.2.
gcloud compute security-policies rules create 1000 \
--security-policy SECURITY_POLICY \
--expression "request.path.matches("/login.html") && token.recaptcha_action.score < 0.2" \
--action allow \
--request-headers-to-add "reCAPTCHA-Warning=high"