ב-App Engine, אפשר ליצור חומת אש עם עד 1,000 כללים נפרדים עם עדיפות, שמאפשרים או מגבילים טווח של כתובות IP ורשתות משנה. האפליקציה תגיב רק לבקשות שמותרות על ידי חומת האש.
כדי ללמוד איך חומת האש של App Engine פועלת, ראו מידע נוסף על חומות אש.
לפני שמתחילים
כדי ליצור כללים בחומת האש של App Engine לאפליקציה, צריך להיות לכם אחד מתפקידי ה-IAM של App Engine הבאים, שכוללים את ההרשאות הנדרשות ליצירה או לשינוי של כללים בחומת האש:
- App Engine Admin
- עריכה
- בעלים
יצירת כללים לחומת האש
כדי ליצור כלל לחומת האש, משתמשים באחת מהשיטות הבאות. חוזרים על השלבים לכל כלל נוסף:
משתמשים בדף Firewall rules (כללי חומת אש) במסוף Google Cloud כדי ליצור כלל חומת אש:
-
נכנסים לדף Create a firewall rule במסוף Google Cloud :
-
מציינים את הפרטים של כלל חומת האש:
-
בשדה עדיפות מזינים מספר שלם כדי לציין את החשיבות היחסית של הכלל ולהגדיר את סדר הבדיקה של הכלל.
הערכים החוקיים הם
1עד2147483646. הכלל הראשון שעובר הערכה הוא כלל העדיפות1. עדיפות2147483647הוא הכלל האחרון שעובר הערכה והוא שמור לכלל `default`. -
בקטע פעולה במקרה של התאמה, מציינים אם לאפשר או לדחות בקשות שתואמות לכלל. כללים שהוגדרו ל
allowמעבירים את הבקשה לאפליקציה. כללים שהוגדרו לdenyמגיבים לבקשות עם שגיאת403 Forbidden. - בקטע טווח כתובות IP, מגדירים את טווח כתובות ה-IP שהכלל חל עליהן. צריך להגדיר את טווח כתובות ה-IP בסימון CIDR, והוא יכול לכלול מסכות של רשתות משנה. הטווח תומך ב-IPv4 וב-IPv6.
- אופציונלי: בשדה Description, מוסיפים תיאור של הכלל באורך של עד 100 תווים.
-
בשדה עדיפות מזינים מספר שלם כדי לציין את החשיבות היחסית של הכלל ולהגדיר את סדר הבדיקה של הכלל.
- לוחצים על שמירה כדי ליצור את הכלל.
-
בודקים את הכלל כדי לוודא שהעדיפות והפעולה מספקות את ההתנהגות הצפויה:
- לוחצים על בדיקת כתובת IP.
- מזינים את כתובת ה-IP שרוצים לאמת ולוחצים על בדיקה כדי לוודא שהכלל התואם מוערך בצורה נכונה.
מריצים את הפקודות הבאות של gcloud
app firewall-rules כדי ליצור כלל לחומת האש:
-
כדי ליצור כלל בחומת האש, מריצים את הפקודה הבאה:
כאשר:gcloud app firewall-rules create PRIORITY --action ALLOW_OR_DENY --source-range IP_RANGE --description DESCRIPTION
-
PRIORITY הוא מספר שלם בין
1ל-2147483646שמגדיר את החשיבות של הכלל ואת הסדר שבו הכלל מוערך. העדיפות1היא הכלל הראשון שעובר הערכה. העדיפות2147483647היא הכלל האחרון שמוערך והיא שמורה לכלל `default`. -
ALLOW_OR_DENY מציין אם לאשר או לדחות גישה לבקשות שתואמות לכלל. הערכים התקינים הם
allowאוdeny. כללים שהוגדרו לallowמעבירים את הבקשה לאפליקציה. כללים שהוגדרו לdenyמגיבים לבקשות עם שגיאת403 Forbidden. - ההגדרה IP_RANGE מגדירה את טווח כתובות ה-IP שהכלל חל עליהן. טווח כתובות ה-IP צריך להיות מוגדר בסימון CIDR, יכול לכלול מסכות של תת-רשתות ותומך ב-IPv4 וב-IPv6.
- DESCRIPTION הוא תיאור אופציונלי של הכלל, באורך של עד 100 תווים.
-
PRIORITY הוא מספר שלם בין
-
מריצים את הפקודה הבאה כדי לבדוק את הכלל ולוודא שהעדיפות והפעולה מספקות את ההתנהגות הצפויה:
כאשר IP_ADDRESS היא כתובת ה-IP שרוצים לבדוק ביחס לחומת האש.gcloud app firewall-rules test-ip IP_ADDRESS
-
מריצים את הפקודה הבאה כדי להציג רשימה של הכללים הקיימים:
gcloud app firewall-rules list
-
מריצים את הפקודה הבאה כדי למחוק כלל קיים:
כאשר PRIORITY הוא ערך העדיפות של הכלל שרוצים למחוק.gcloud app firewall-rules delete PRIORITY
- דוגמאות:
-
הדוגמאות הבאות יעזרו לכם ליצור את חומת האש:
-
מוסיפים כלל שמאפשר כתובת IPv6 ומסכת רשת משנה, ואז בודקים את הכלל כדי לוודא שהוא נבדק לפני הכללים האחרים:
gcloud app firewall-rules create 123 --source-range fe80::3636:3bff:fecc:8778/128 --action allow gcloud app firewall-rules test-ip fe80::3636:3bff:fecc:8778
-
מוסיפים כלל לדחיית כתובת IPv4 ומסכה של רשת משנה, ואז בודקים את הכלל כדי לוודא שהוא מוערך בצורה מתאימה:
gcloud app firewall-rules create 123456 --source-range "74.125.0.0/16" --action deny gcloud app firewall-rules test-ip 74.125.0.8
-
מעדכנים את כלל ברירת המחדל ואז בודקים אותו כדי לוודא שהוא מגביל את כל כתובות ה-IP שלא תואמות לכללים אחרים:
gcloud app firewall-rules update default --action deny gcloud app firewall-rules test-ip 123.456.7.89
-
כדי ליצור באופן פרוגרמטי כללים לחומת האש באפליקציית App Engine, אפשר להשתמש בשיטות
apps.firewall.ingressRules ב-Admin API.
כדי לבדוק כלל חומת אש ולוודא שהעדיפות והפעולה מספקות את ההתנהגות הצפויה, אפשר להשתמש בשיטה
apps.firewall.ingressRules.list ולציין את כתובת ה-IP שרוצים לבדוק בפרמטר matchingAddress.
הסבר על כללים לחומת אש ב-App Engine
חומת אש של App Engine מורכבת מרשימה מסודרת של כללים שיכולים לאפשר או לדחות גישה לאפליקציה מכתובת IP או מטווח כתובות IP שצוינו. הכלל חל על כל המשאבים של אפליקציית App Engine.
עדיפות של כלל חומת אש
כללי חומת האש מסודרים לפי חשיבות, שמוגדרת כערך מספרי בעדיפות של כל כלל. צריך לציין ערך עדיפות ייחודי לכל כלל, כי הוא מגדיר את החשיבות שלו ביחס לכללים האחרים בחומת האש. הערכים של סדר העדיפות של כלל נעים מהערך הכי חשוב של 1 ועד לערך הכי פחות חשוב של 2147483647.
כל חומת אש כוללת כלל default שנוצר באופן אוטומטי עם העדיפות 2147483647 וחל על כל טווח כתובות ה-IP של האפליקציה. הכלל default תמיד מוערך אחרי כל שאר הכללים בחומת האש, והוא חל על כל הבקשות בכל כתובות ה-IP.
חומת האש מעריכה קודם את הכלל עם העדיפות הכי גבוהה.
כל שאר הכללים בחומת האש מוערכים ברצף עד שנמצא כלל שתואם לטווח כתובות ה-IP של הבקשה. כשנמצא כלל תואם, החיבור מאושר או נדחה, וכל הכללים הנותרים בחומת האש נדלגים. אם אף אחד מהכללים שהוגדרו ידנית בחומת האש לא תואם לבקשה, המערכת מעריכה את הכלל default.
לדוגמה, אם יוצרים כלל עם עדיפות 1, הוא תמיד ייבדק ראשון. אם בקשה נכנסת תואמת לכלל עם עדיפות 1, רק הכלל הזה נבדק וכל הכללים האחרים בחומת האש מדלגים, כולל הכלל default.
בדוגמה של חומת האש שבהמשך מוצג איך שינוי של העדיפות של כלל יכול לשנות את ההתנהגות של חומת האש.
חומת אש לדוגמה
בדוגמה הזו, חברה הגדירה חומת אש כדי להעניק גישה לצוות ההנדסה ולרשת הארגונית הפנימית לאפליקציה שנמצאת בפיתוח. כללי חומת האש נוצרו עם פערים גדולים בין כל עדיפות כדי לאפשר צמיחה.
| עדיפות | פעולה | טווח כתובות IP | תיאור |
|---|---|---|---|
| 1000 | דחייה | 192.0.2.1 | דחיית הגישה של תוקף מסוג DoS. |
| 2000 | אישור | 198.51.100.2 | מאפשרת גישה למהנדס במשרד הלוויין. |
| 3000 | דחייה | 198.51.100.0/24 | הגישה לכל המבנים שאינם הנדסיים נחסמת. |
| 5,000 | אישור | 203.0.113.0/24 | מאפשרת גישה לרשת של הבניין הראשי. |
| 2147483647 | דחייה | * | פעולת ברירת מחדל |
אחרי שיוצרים את חומת האש, נניח שהבקשות הבאות מופנות לאפליקציה לדוגמה, ונציין את התגובה של האפליקציה:
- הבקשה מ-198.51.100.2 תואמת לכלל עם עדיפות 2000 ומותרת.
- הבקשה מכתובת 198.51.100.100 תואמת לכלל עם עדיפות 3000 ונדחית.
- הבקשה מכתובת 203.0.113.54 תואמת לכלל עם עדיפות 5000 ומותרת.
- הבקשה מכתובת 45.123.35.242 תואמת לכלל ברירת המחדל ונדחית.
פתרון של כללים סותרים
לדוגמה, נניח ששני סדרי העדיפויות בחומת האש של החברה הוחלפו. אם מחליפים בין הכללים בעדיפויות 2000 ו-3000, אפשר לראות את ההתנהגות הלא מכוונת.
| עדיפות | פעולה | טווח כתובות IP | תיאור |
|---|---|---|---|
| 1000 | דחייה | 192.0.2.1 | דחיית הגישה של תוקף מסוג DoS. |
| 2000 | דחייה | 198.51.100.0/24 | שלילת הגישה לכל המבנים שאינם הנדסיים. |
| 3000 | אישור | 198.51.100.2 | מאפשרת גישה למהנדס במשרד הלוויין. |
| 5,000 | אישור | 203.0.113.0/24 | מאפשרת גישה לרשת של הבניין הראשי. |
| 2147483647 | דחייה | * | פעולת ברירת מחדל |
המהנדס במשרד הלוויין לא יוכל לגשת לאפליקציה של החברה, כי העדיפות החדשה של הכלל אומרת שהוא אף פעם לא יוערך. כתובת ה-IP של המהנדס 198.51.100.2 תואמת לכלל שחוסם את כל מי שלא מהנדס בטווח 198.51.100.0/24 לפני הכלל שמאפשר גישה לכתובת ה-IP של המהנדס.
כדי לתקן את הבעיה, צריך להגדיר את העדיפות של הכלל שמאפשר גישה ל-198.51.100.2 כגבוהה יותר מהעדיפות של הכלל שחוסם גישה לטווח כתובות ה-IP 198.51.100.0/24.
המאמרים הבאים
כדי לוודא שהגדרתם את האפליקציה בצורה מאובטחת ושהגדרתם את רמות הגישה המתאימות, מומלץ לעיין במאמרים בנושא אבטחת אפליקציות ובקרת גישה.