יצירת כללים לחומת האש ב-App Engine

ב-App Engine, אפשר ליצור חומת אש עם עד 1,000 כללים נפרדים עם עדיפות, שמאפשרים או מגבילים טווח של כתובות IP ורשתות משנה. האפליקציה תגיב רק לבקשות שמותרות על ידי חומת האש.

כדי ללמוד איך חומת האש של App Engine פועלת, ראו מידע נוסף על חומות אש.

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

כדי ליצור כללים בחומת האש של App Engine לאפליקציה, צריך להיות לכם אחד מתפקידי ה-IAM של App Engine הבאים, שכוללים את ההרשאות הנדרשות ליצירה או לשינוי של כללים בחומת האש:

  • App Engine Admin
  • עריכה
  • בעלים

יצירת כללים לחומת האש

אפשר ליצור כלל לחומת האש באחת מהשיטות הבאות. חוזרים על השלבים האלה לכל כלל נוסף:

Console

בדף Firewall rules במסוף Google Cloud יוצרים כלל לחומת האש:

  1. נכנסים לדף Create a firewall rule במסוף Google Cloud :

    כניסה לדף יצירת כלל חומת אש

  2. מציינים את הפרטים של כלל חומת האש:

    1. בשדה עדיפות מזינים מספר שלם כדי לציין את החשיבות היחסית של הכלל ולהגדיר את הסדר שבו הכלל נבדק.

      הערכים החוקיים הם 1 עד 2147483646. הכלל הראשון שעובר הערכה הוא כלל בעדיפות 1. עדיפות הכלל 2147483647 הוא הכלל האחרון שעובר הערכה והוא שמור לכלל `default`.

    2. בקטע פעולה במקרה של התאמה, מציינים אם לאשר או לדחות בקשות שתואמות לכלל. כללים שהוגדרו לallow מעבירים את הבקשה לאפליקציה. כללים שהוגדרו לdeny מגיבים לבקשות עם שגיאת 403 Forbidden.
    3. בקטע טווח כתובות IP, מגדירים את טווח כתובות ה-IP שהכלל חל עליהן. טווח כתובות ה-IP צריך להיות מוגדר בסימון CIDR, יכול לכלול מסכות של רשתות משנה ותומך ב-IPv4 וב-IPv6.
    4. אופציונלי: בשדה Description, מוסיפים תיאור של הכלל באורך של עד 100 תווים.
  3. לוחצים על שמירה כדי ליצור את הכלל.
  4. בודקים את הכלל כדי לוודא שהעדיפות והפעולה מספקות את ההתנהגות הצפויה:
    1. לוחצים על בדיקת כתובת IP.
    2. מזינים את כתובת ה-IP שרוצים לאמת ולוחצים על בדיקה כדי לוודא שהכלל המתאים מוערך בצורה נכונה.
gcloud

מריצים את הפקודות הבאות של gcloud app firewall-rules כדי ליצור כלל לחומת האש:

  1. כדי ליצור כלל בחומת האש, מריצים את הפקודה הבאה:

    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 תווים.
  2. מריצים את הפקודה הבאה כדי לבדוק את הכלל ולוודא שהעדיפות והפעולה מספקות את ההתנהגות הצפויה:
    gcloud app firewall-rules test-ip IP_ADDRESS
    כאשר IP_ADDRESS היא כתובת ה-IP שרוצים לבדוק ביחס לחומת האש.
  3. מריצים את הפקודה הבאה כדי להציג רשימה של הכללים הקיימים:
    gcloud app firewall-rules list
  4. מריצים את הפקודה הבאה כדי למחוק כלל קיים:
    gcloud app firewall-rules delete PRIORITY
    כאשר 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
API

כדי ליצור כללים של חומת אש באופן פרוגרמטי עבור אפליקציית 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 תואמת לכלל עם עדיפות 3,000 ונדחית.
  • הבקשה מכתובת 203.0.113.54 תואמת לכלל עם עדיפות 5,000 ומותרת.
  • הבקשה מכתובת 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.

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

כדי לוודא שהגדרתם את האפליקציה בצורה מאובטחת ושהגדרתם את רמות הגישה המתאימות, מומלץ לעיין במאמרים בנושא אבטחת אפליקציות ובקרת גישה.