הגדרת ניהול הבוטים

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

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

בסעיפים הבאים מוסבר על כל התפקידים וההרשאות בניהול הזהויות והרשאות הגישה (IAM) שנדרשים להגדרת מדיניות אבטחה ב-Cloud Armor. בתרחישי השימוש שמופיעים במסמך הזה, נדרשות רק ההרשאות compute.securityPolicies.create ו-compute.securityPolicies.update.

הגדרת הרשאות 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)

שימוש באתגר ידני של 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: מפתח reCAPTCHA CHALLENGEPAGE

קישור מפתח 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"

המאמרים הבאים