בדף הזה מוסבר איך להגדיר את התכונה 'הגנה אדפטיבית' ב-Google Cloud Armor, שעוזרת להגן על השירותים שלכם מפני מתקפות מניעת שירות מבוזרות (DDoS) בשכבה 7 (L7) ומתקפות אינטרנט אחרות, באמצעות התשתית הגלובלית ומערכות האבטחה של Google. ההוראות בדף הזה יעזרו לכם לשפר את אסטרטגיות ההגנה של Adaptive Protection ולהתאים אישית את האופן שבו היא מגנה על האפליקציות שלכם. לפני שמתחילים, כדאי לעיין בסקירה הכללית של ההגנה הדינמית ובתרחישי השימוש בהגנה הדינמית כדי להבין את היכולות שלה.
לפני שמתחילים
בקטעים הבאים מוסבר על כל התפקידים וההרשאות של ניהול זהויות והרשאות גישה (IAM) שנדרשים להגדרת מדיניות אבטחה של Google Cloud Armor. במקרים לשימוש שמתוארים במסמך הזה, נדרשת רק ההרשאה 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) |
הפעלה של הגנה דינמית
כדי להפעיל הגנה דינמית במדיניות האבטחה: ההגנה הדינמית מופעלת על כל מדיניות אבטחה בנפרד.
המסוף
כדי להפעיל את ההגנה הדינמית במדיניות אבטחה:
נכנסים לדף Network Security במסוף Google Cloud .
בדף מדיניות, לוחצים על השם של מדיניות אבטחה.
לוחצים על Edit.
בקטע הגנה דינמית, בוחרים באפשרות הפעלה.
לוחצים על עדכון.
כדי להשבית את ההגנה הדינמית במדיניות אבטחה:
נכנסים לדף Network Security במסוף Google Cloud .
בדף מדיניות, לוחצים על השם של מדיניות אבטחה.
לוחצים על Edit.
בקטע הגנה דינמית, מבטלים את הסימון של הפעלה.
לוחצים על עדכון.
gcloud
כדי להפעיל את ההגנה הדינמית במדיניות אבטחה:
gcloud compute security-policies update MY-SECURITY-POLICY \
--enable-layer7-ddos-defense
כדי להשבית את ההגנה הדינמית במדיניות אבטחה:
gcloud compute security-policies update MY-SECURITY-POLICY \
--no-enable-layer7-ddos-defense
הגדרת מודלים עם רמת פירוט גבוהה
התכונה 'מודלים גרנולריים' מאפשרת להגדיר מארחים או נתיבים ספציפיים כיחידות הגרנולריות שהתכונה 'הגנה דינמית' מנתחת. בדוגמאות הבאות, יוצרים יחידות תעבורה מפורטות לכל מארח, מתאימים אישית יחידת תעבורה מפורטת ומגדירים את Adaptive Protection (הגנה דינמית) כך שתבצע פעולה כשתעבורת הנתונים חורגת מהשאילתות הבסיסיות לשנייה (QPS). מידע נוסף על מודלים גרנולריים זמין במאמר סקירה כללית על הגנה אדפטיבית.
הגדרה של יחידות תנועה ברמת פירוט גבוהה
בדוגמאות שבקטע הזה נעשה שימוש בפקודה add-layer7-ddos-defense-threshold-config עם חלק מהדגלים הבאים או עם כולם:
| דגל | תיאור |
|---|---|
--threshold-config-name |
השם של הגדרת הסף. |
--traffic-granularity-configs |
אפשרויות ההגדרה להפעלת Adaptive Protection כדי שיפעל ברמת הגרנולריות של השירות שצוין. |
--auto-deploy-impacted-baseline-threshold |
סף ההשפעה המשוערת של ההגנה האדפטיבית על תנועת הבסיס של כלל ההפחתה המוצע למתקפה שזוהתה. ההגנות האוטומטיות מופעלות רק אם לא חורגים מסף השימוש. |
--auto-deploy-expiration-sec |
משך הפעולות, אם יש כאלה, שמתבצעות על ידי הפריסה האוטומטית. |
--detection-load-threshold |
הסף לזיהוי מבוסס על העומס של שירות הקצה העורפי. |
--detection-absolute-qps |
הסף לזיהוי מבוסס על QPS מוחלט. |
--detection-relative-to-baseline-qps |
סף הזיהוי מבוסס על QPS ביחס לממוצע של תנועת הבסיס. |
בדוגמה הראשונה, מגדירים את ההגנה הדינמית לזיהוי התקפות ולהצעת אמצעי הגנה עצמאיים לכל מארח מאחורי השירות לקצה העורפי, בלי לבטל את ספי החסימה שמוגדרים כברירת מחדל.
gcloud
- יוצרים מדיניות אבטחה בשם
POLICY_NAME, או משתמשים במדיניות אבטחה קיימת. - אם ההגנה הדינמית עדיין לא מופעלת, משתמשים בפקודה הבאה כדי להפעיל אותה במדיניות:
gcloud compute security-policies update POLICY_NAME
--enable-layer7-ddos-defense - החלת מדיניות האבטחה על שירות קצה עורפי עם כמה מארחים.
- משתמשים בפקודה
add-layer7-ddos-defense-threshold-configהבאה עם הדגל--traffic-granularity-configsכדי להגדיר יחידת תנועה גרנולרית:gcloud compute security-policies add-layer7-ddos-defense-threshold-config POLICY_NAME
--threshold-config-name=per-host-config
--traffic-granularity-configs=type=HTTP_HEADER_HOST;enableEachUniqueValue=true
בדוגמה השנייה, מגדירים ספי גילוי ופריסה אוטומטית שונים לחלק מיחידות התנועה הגרנולריות שהוגדרו בדוגמה הראשונה, או לכולן.
gcloud
- אם הפריסה האוטומטית של ההגנה הדינמית לא מופעלת, יוצרים כלל placeholder.
- הפקודה הבאה מתאימה אישית את סף הפריסה האוטומטית ליחידת תנועה גרנולרית עם
HTTP_HEADER_HOSTשלHOSTועםHTTP_PATHשלPATH. משתמשים בפקודה הזו לכל יחידת תעבורת נתונים מפורטת שרוצים להתאים אישית, ומחליפים את המשתנים לפי הצורך לכל מארח ונתיב כתובת ה-URL:gcloud compute security-policies add-layer7-ddos-defense-threshold-config
POLICY_NAME
--threshold-config-name=my-host-config
--auto-deploy-impacted-baseline-threshold=0.01
--auto-deploy-expiration-sec=3600
--traffic-granularity-configs=type=HTTP_HEADER_HOST;value=HOST,type=HTTP_PATH;value=PATH
זיהוי מקרים שבהם נפח ההתקפות חורג מהממוצע של קצב השאילתות לשנייה (QPS) של קו הבסיס
בדוגמה הבאה, אתם מגדירים את ההגנה האדפטיבית כך שתזהה מתקפה רק אם נפח המתקפה חורג מהממוצע הבסיסי של QPS ביותר מ-50%, ורק אם העומס על שירות ה-Backend הוא יותר מ-90% מהקיבולת שלו.
gcloud
- יוצרים מדיניות אבטחה בשם
POLICY_NAME, או משתמשים במדיניות אבטחה קיימת. אם ההגנה הדינמית עדיין לא מופעלת, משתמשים בפקודה הבאה כדי להפעיל אותה במדיניות:
gcloud compute security-policies update POLICY_NAME \ --enable-layer7-ddos-defense
החלת מדיניות האבטחה על שירות קצה עורפי.
כדי להגדיר הגנה דינמית עם ספי זיהוי מותאמים אישית, משתמשים בפקודה הבאה:
gcloud compute security-policies add-layer7-ddos-defense-threshold-config POLICY_NAME \ --threshold-config-name=my-customized-thresholds \ --detection-load-threshold=0.9 \ --detection-relative-to-baseline-qps=1.5