בדף הזה מוסבר איך להגדיר כללים של מדיניות אבטחה ב-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 |
אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin) |
compute.securityPolicies.delete |
SecurityPolicies delete |
אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin) |
compute.securityPolicies.get |
SecurityPolicies getSecurityPolicies getRule |
אדמין לענייני אבטחה (roles/iam.securityAdmin) |
compute.securityPolicies.list |
SecurityPolicies list |
אדמין לענייני אבטחה (roles/iam.securityAdmin) |
שני התנאים הבאים:
|
BackendServices |
אדמין של רשתות מחשוב (roles/compute.networkAdmin) |
compute.securityPolicies.update |
SecurityPolicies patchSecurityPolicies addRuleSecurityPolicies patchRuleSecurityPolicies removeRule |
אדמין לענייני אבטחה ב-Compute (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"