הגדרת הגבלת קצב של יצירת בקשות באמצעות Google Cloud Armor
במאמר הזה מוסבר איך להחיל הגבלת קצב של יצירת בקשות הוגנת על לקוחות Cloud Service Mesh, כדי לעזור לכם לנהל את הצריכה ההוגנת של השירותים ולמנוע מלקוחות זדוניים או מלקוחות שמתנהגים בצורה לא תקינה להעמיס יתר על המידה על השירותים.
תהליך ההגדרה מחייב יצירה של מדיניות אבטחה של Cloud Armor ומדיניות נקודת קצה. אם אתם לא מכירים את מדיניות האבטחה של Cloud Armor, מומלץ לקרוא את סקירת מדיניות האבטחה.
איך פועלת הגבלת קצב של יצירת בקשות
הגבלת הקצב של יצירת הבקשות מגבילה את מספר הבקשות שהשירות יכול לקבל מלקוחות במרווח זמן מוגדר, כדי לשפר את הזמינות של השירות ולשתף את הקיבולת הזמינה בצורה הוגנת בין הלקוחות.
הסף, המרווח והפעולה של הבקשה ש-Cloud Armor מחיל על תעבורה נכנסת שחורגת מסף הגבלת הקצב ניתנים להגדרה על ידי המשתמש. לצורך הגבלת קצב של יצירת בקשות ב-Cloud Service Mesh, Cloud Armor משתמש בסוג מדיניות האבטחה CLOUD_ARMOR_INTERNAL_SERVICE, ובכללי מדיניות האבטחה נעשה שימוש בפעולה fairshare.
כל כלל מדיניות אבטחה ב-Cloud Armor מכיל כלל אחד או יותר. כל כלל מורכב מתנאי התאמה ומפעולה. כשבקשה עומדת בתנאי ההתאמה, Cloud Armor מחיל את הפעולה שהוגדרה על הבקשה.
כשמגדירים הגבלת קצב של יצירת בקשות, יוצרים כלל מדיניות אבטחה עם אחת מהפעולות להגבלת קצב של יצירת בקשות שצוינו קודם, ועם תנאי ההתאמה שמתאים לתרחיש השימוש (כולל התאמה לכל הבקשות הנכנסות עם הדגל --src-ip-ranges "*"). הכללים במדיניות נבדקים לפי סדר העדיפות. לכלל עם העדיפות המספרית הנמוכה ביותר יש את העדיפות הלוגית הגבוהה ביותר, והוא נבדק ראשון. Cloud Armor מבצע הגבלת קצב בצד השרת, כלומר השרת אוכף את הגבלת הקצב ולא מכשיר הלקוח.
לפעולות של הגבלת קצב יש שדות נוספים שמשמשים לכוונון מדויק של סף הגבלת הקצב. השדות הבאים משותפים לכל כללי הגבלת הקצב:
-
rate_limit_threshold_count: מספר הבקשות לכל מרווח זמן שהמשתמש הגדיר, שבמהלכו Cloud Armor צריך להחיל הגבלת קצב של יצירת בקשות. -
interval_sec: מרווח הזמן, בשניות, שלrate_limit_threshold_count. -
exceed_action: הפעולה שתתבצע בבקשות שחורגות מסף מגבלת קצב הבקשות. -
conform_action: הפעולה שתתבצע לגבי בקשות שלא חורגות מסף הגבלת הקצב.
הגבלת קצב של יצירת בקשות באמצעות Cloud Service Mesh
בקטע הזה מופיע תיאור כללי של השלבים שצריך לבצע כדי להגדיר הגבלת קצב של יצירת בקשות באמצעות Cloud Service Mesh.
קודם יוצרים מדיניות של נקודת קצה ומוודאים שהיא EndpointMatcher בוחרת את המופעים של Cloud Service Mesh כדי לאכוף מגבלות על קצב התעבורה הנכנסת. EndpointMatcher משתמש בתוויות של נקודות קצה כדי לזהות את המופעים שאליהם הוא מצורף.
לאחר מכן יוצרים מדיניות אבטחה של Cloud Armor עם הסוג CLOUD_ARMOR_INTERNAL_SERVICE. הפעולה היחידה שזמינה לסוג מדיניות האבטחה הזה היא fairshare. במדיניות הזו, יוצרים כלל ברירת מחדל עם הפעולה fairshare כדי להחיל הגבלת קצב של יצירת בקשות הוגנת על כל התעבורה שלא עומדת בכלל בעדיפות גבוהה יותר. אתם יכולים להוסיף כללים חדשים עם עדיפות גבוהה יותר כדי להחיל מגבלת קצב שונה על סוגים שונים של תעבורה. לדוגמה, אפשר להגדיר טווח כתובות IP ספציפי עם מגבלת קצב נמוכה או גבוהה יותר.
לבסוף, אחרי שיוצרים מדיניות אבטחה עם כלל אחד או יותר להגבלת קצב של יצירת בקשות, מצרפים אותה למדיניות של נקודת הקצה. אחרי שמצרפים את מדיניות האבטחה, Cloud Armor מחיל הגבלת קצב של יצירת הבקשות בצד השרת על כל התעבורה הנכנסת שתואמת לתנאי התאמה של כלל ושמתחברת למופעים של Service mesh שנבחרו על ידי EndpointMatcher.
ב-Cloud Service Mesh מוגדרת הגבלה גלובלית על קצב הבקשות בכל המקרים. כלומר, נפח התנועה הכולל בכל מופעי השרת מצטבר כדי לקבוע מתי לאכוף את מגבלת הקצב. כל לקוח ששולח בקשות לשירות כזה כפוף לאותו סף אכיפה ולאותה מדיניות. המשמעות היא שכאשר קצב התנועה הכולל חורג מהסף, חלק מהבקשות מושמטות.
כדי להגדיר הגבלת קצב באמצעות Cloud Service Mesh, ראו הגדרת הגבלת קצב באמצעות Google Cloud Armor עם Envoy.
מגבלות
כשמגדירים הגבלת קצב של יצירת בקשות באמצעות Cloud Armor, חשוב לשים לב למגבלות הבאות:
- המכסות ב-Cloud Armor מגבילות את מספר הכללים המותאמים אישית שאפשר ליצור. מומלץ לבדוק את המכסה לפני שיוצרים יותר מ-20 כללים מותאמים אישית.
- כל משאב של מדיניות נקודת קצה חייב להפנות למדיניות אבטחה אחרת. אי אפשר לצרף מדיניות אבטחה למדיניות חדשה של נקודת קצה אם היא כבר מוזכרת במדיניות קיימת של נקודת קצה.
- מדיניות אבטחה עם הפעולה
fairshareמוגבלת למפתחALLשל הגבלת קצב הבקשות. - כשפורסים כללי מדיניות אבטחה עם הפעולה
fairshare, Cloud Armor מתעלם מהשדהpreviewבמהלך אכיפת הכללים. - אם משתמשים בניתוב תנועת TCP, אי אפשר להגדיר מדיניות אבטחה של Cloud Armor.
בנוסף, מדיניות אבטחה של Cloud Armor עם הסוג CLOUD_ARMOR_INTERNAL_SERVICE מוגבלת למאפיינים הבאים של שפת ביטויים מותאמת אישית (CEL):
request.headersrequest.methodrequest.pathrequest.schemerequest.query
מידע נוסף על מאפייני CEL זמין במאמר בנושא הגדרת מאפייני שפה של כללים מותאמים אישית.