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

בדף הזה מוסבר איך להגדיר כללים של מדיניות אבטחה ב-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 אדמין לענייני אבטחה ב-Compute (roles/compute.securityAdmin)
compute.securityPolicies.delete SecurityPolicies delete אדמין לענייני אבטחה ב-Compute (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
אדמין של רשתות מחשוב (roles/compute.networkAdmin)
compute.securityPolicies.update SecurityPolicies patch
SecurityPolicies addRule
SecurityPolicies patchRule
SecurityPolicies 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: מפתח 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"

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