יצירה וניהול של פרופילי אבטחה לסינון כתובות URL

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

בדף הזה מוסבר איך ליצור ולנהל פרופילים של אבטחה לסינון כתובות URL.

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

תפקידים

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

יצירת פרופיל אבטחה לסינון כתובות URL

כדי ליצור url-filtering פרופיל אבטחה, מציינים שם כמחרוזת או כמזהה ייחודי של כתובת URL.

המסוף

  1. נכנסים לדף Security profiles במסוף Google Cloud .

    מעבר לפרופילי אבטחה

  2. בתפריט לבחירת פרויקטים, בוחרים את הארגון או הפרויקט שבהם רוצים ליצור את פרופיל האבטחה.

  3. לוחצים על הכרטיסייה פרופילי אבטחה.

  4. לוחצים על יצירת פרופיל.

  5. מזינים שם בשדה Name.

  6. אם רוצים, מוסיפים תיאור בשדה Description.

  7. כדי ליצור פרופיל אבטחה של Cloud Next Generation Firewall Enterprise, בקטע Purpose (מטרה), בוחרים באפשרות Cloud NGFW Enterprise.

  8. כדי ליצור פרופיל אבטחה לסינון כתובות URL, בקטע Type (סוג), בוחרים באפשרות URL Filtering (סינון כתובות URL).

  9. בקטע URL filters (מסנני כתובות URL), לוחצים על הלחצן Create URL filter (יצירת מסנן כתובות URL).

  10. בחלונית Create a URL filter, מציינים את הפרטים הבאים:

    • עדיפות: מציינים את העדיפות של מסנן כתובות ה-URL.
    • פעולה: מציינים את הפעולה ש-Cloud NGFW מבצע בתנועה.
      • Allow: מאפשרת את החיבורים שתואמים לכתובת URL.
      • Deny: דחיית החיבורים שתואמים לכתובת URL.
    • רשימת כתובות URL: מציינים רשימה של כתובות URL או מחרוזות התאמה. כל כתובת URL או מחרוזת התאמה צריכות להופיע בשורה נפרדת, בלי רווחים או תווי הפרדה. כל רשומה יכולה לכלול רק דומיין. מידע נוסף על מחרוזות התאמה זמין במאמר בנושא מחרוזות התאמה לכתובות URL.
  11. לוחצים על יצירה.

gcloud

  1. יוצרים קובץ YAML עם התוכן הבא:

    name: NAME
    type: url-filtering
    urlFilteringProfile:
      urlFilters:
        - filteringAction: ACTION
          priority: PRIORITY
          urls: [URL,URL,...]
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAME: השם של פרופיל האבטחה של סינון כתובות URL. אפשר לציין את השם כמחרוזת או כמזהה ייחודי של כתובת URL.

    • ACTION: מציינים אחת מהפעולות הבאות:

      • ALLOW: מאפשרת חיבורים שתואמים לכתובת URL
      • DENY: דחיית חיבורים שתואמים לכתובת URL
    • PRIORITY: העדיפות של מסנן כתובות URL, בטווח שבין 0 ל-2147483647.

    • URLs: רשימה מופרדת בפסיקים של מחרוזות התאמה. לדוגמה, www.example.com ו-www.examplepetstore.com.

  2. כדי ליצור את פרופיל האבטחה של סינון כתובות URL, מריצים את הפקודה gcloud network-security security-profiles import:

    gcloud network-security security-profiles import NAME \
      --source FILE_NAME \
      [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
      --location global
    

    לחלופין, אפשר ליצור פרופיל אבטחה לסינון כתובות URL בלי קובץ YAML באמצעות הפקודה gcloud network-security security-profiles url-filtering create:

    gcloud network-security security-profiles url-filtering create NAME \
        [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
        --description DESCRIPTION \
        --location global
    

    מחליפים את מה שכתוב בשדות הבאים:

    • NAME: השם של פרופיל האבטחה לסינון כתובות URL.

      אם לא משתמשים בפורמט הייחודי של מזהה כתובת ה-URL בשביל השם, צריך לציין את שם הארגון או הפרויקט ואת המיקום.

    • FILE_NAME: השם של קובץ ה-YAML. לדוגמה, url-filtering-sp.yaml.

    • ORGANIZATION_ID: מזהה הארגון. משתמשים בדגל הזה כדי ליצור פרופיל אבטחה ברמת הארגון.

    • PROJECT_ID: מזהה הפרויקט. משתמשים בדגל הזה כדי ליצור פרופיל אבטחה ברמת הפרויקט.

    • DESCRIPTION: תיאור אופציונלי של פרופיל האבטחה של סינון כתובות URL.

    לדוגמה, בקטע הקוד הבא מוצגת דוגמה לפרופיל אבטחה של סינון כתובות URL שמאפשר בקשות אל www.example.com ו-www.examplepetstore.com, אבל דוחה בקשות לכל הדומיינים האחרים:

    urlFilteringProfile:
      urlFilters:
        - filteringAction: ALLOW
          priority: 1000
          urls: ['www.example.com', 'www.examplepetstore.com']
        # the following URL filter is implicit and will be processed last
        - filteringAction: DENY
          priority: 2147483647
          urls: ['*']
    

מסנן כתובות URL עם דחייה משתמעת

פרופיל האבטחה של סינון כתובות URL תמיד כולל מסנן כתובות URL שמוגדר כברירת מחדל עם העדיפות הכי נמוכה (2147483647), שדוחה את כל החיבורים שלא תואמים למסנני כתובות URL עם עדיפות גבוהה יותר. בקטע הקוד הבא מוצגת דוגמה למסנן כתובות URL עם דחייה מרומזת:

  urlFilteringProfile:
    urlFilters:
      # user-specified URL filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      - filteringAction: ALLOW
        priority: 2000
        urls: ['www.example.org','www.example.net']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

אפשר לראות את מסנן כתובות ה-URL של דחייה מרומזת כשמציגים או מייצאים פרופיל אבטחה של סינון כתובות URL. אי אפשר לשנות או להסיר את המסנן המרומז. לדוגמה, אם רוצים לשנות את פעולת ברירת המחדל של פרופיל מ-DENY (enforced by implicit filter)‎ ל-ALLOW, צריך להוסיף מסנן מפורש ש-Cloud NGFW מעבד לפני המסנן המרומז.

  urlFilteringProfile:
    urlFilters:
      # user-specified filters
      - filteringAction: DENY
        priority: 1000
        urls: ['www.example.com','www.examplepetstore.com']
      # explicit allow URL filter that you can add
      - filteringAction: ALLOW
        priority: 2000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

מחרוזות התאמה לכתובות URL

מחרוזות התאמה הן הערכים שמציינים בשדה urls של מסנן כתובות URL. אפשר לציין מחרוזת התאמה אחת או יותר בתוך מסנן כתובות URL.

תווים כלליים לחיפוש

כל מחרוזת התאמה ברשימת כתובות URL יכולה לכלול תו כללי לחיפוש (*), אבל באופן מוגבל.

  • כל מחרוזת התאמה יכולה לתמוך רק בכוכבית אחת (*), כך שהכוכבית היא התו הראשון או התו היחיד.
  • הכוכבית (*) יכולה לקבל את הפירושים הבאים:

    • כוכבית (*) לפני נקודה (.) מציינת את כל תתי-הדומיין של הדומיין.

      לדוגמה, מחרוזת ההתאמה *.example.com תואמת ל-a.example.com ול-a.b.c.example.com, אבל לא ל-example.com.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*.example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      בדוגמה הקודמת, Cloud NGFW מאפשר תעבורה לכיוון תחומי המשנה של example.com, אבל חוסם את שאר התעבורה היוצאת.

    • כוכבית (*) לפני תווית מציינת את הדומיין ואת כל תתי-הדומיין.

      לדוגמה, מחרוזת ההתאמה *example.com תתאים ל-a.example.com, ל-a.b.c.example.com וגם ל-example.com.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: ALLOW
            priority: 1000
            urls: ['*example.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      בדוגמה הקודמת, Cloud NGFW מאפשר תעבורה לכיוון example.com וגם לכיוון תת-הדומיינים של example.com, אבל חוסם את שאר התעבורה היוצאת.

    • כוכבית (*) לפני סיומת דומיין (כמו .com) מציינת את כל הדומיינים (ותתי-הדומיין שלהם) שמשתמשים בסיומת הדומיין.

      לדוגמה, מחרוזת ההתאמה *.com תואמת ל-example.com ול-examplepetstore.com ולכל הדומיינים המשניים שלהם.

      בקטע הקוד הבא אפשר לראות איך מאפשרים את כל הדומיינים (והדומיינים שלהם) שמסתיימים ב-.com, אבל חוסמים את שאר התנועה.

      urlFilteringProfile:
        urlFilters:
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

      בקטע הקוד הבא אפשר לראות איך חוסמים את כל תתי-הדומיין של example.com ושל examplepetstore.com, אבל מתירים את הדומיינים האלה ואת כל הדומיינים האחרים (ותתי-הדומיין שלהם) שמסתיימים ב-.com.

      urlFilteringProfile:
        urlFilters:
          # Deny all subdomains of example.com
          - filteringAction: DENY
            priority: 1000
            urls: ['*.example.com']
          # Deny all subdomains of examplepetstore.com
          - filteringAction: DENY
            priority: 1500
            urls: ['*.examplepetstore.com']
          # Allow all domains (and their subdomains) that end in '.com'
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*.com']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      
    • ‫Cloud NGFW לא מפרש את הכוכבית (*) כתו כללי לחיפוש בביטוי רגולרי.

      לדוגמה, *example.test לא תואם ל-newexample.test או ל-a.newexample.test. ההתאמה תהיה רק ל-example.test ולתתי הדומיינים של example.test.

    • כוכבית בודדת (*) ללא תווים אחרים מציינת התאמה לכל הבקשות.

      לדוגמה, מחרוזת ההתאמה במסנן כתובות ה-URL להיתר מפורש עם העדיפות הכי נמוכה מכילה רק כוכבית (*) ויש לה פעולה ALLOW שמבטלת את פעולת ברירת המחדל DENY. זה קורה כי מסנן כתובות ה-URL של הדחייה המרומזת מחיל את ברירת המחדל DENY על כל הבקשות שלא תואמות למסנני כתובות URL בעדיפות גבוהה יותר.

      מסנן כתובות ה-URL בעדיפות הכי גבוהה – שהוא או ALLOWמפורש או DENYמשתמע – קובע אם Cloud NGFW מאפשר או דוחה חיבורים כשחסר מידע על SNI או על דומיין. זה יכול לקרות בתעבורת HTTP לא מוצפנת, או כשבדיקת TLS מושבתת בכותרות של הודעות מוצפנות.

      urlFilteringProfile:
        urlFilters:
          # user-specified filters
          - filteringAction: DENY
            priority: 1000
            urls: ['www.example.com','www.examplepetstore.com']
          # explicit allow URL filter that you can add
          - filteringAction: ALLOW
            priority: 2000
            urls: ['*']
          # implicit deny URL filter that will be processed last
          - filteringAction: DENY
            priority: 2147483647
            urls: ['*']
      

מגבלות

  • מחרוזות של התאמה מייצגות דומיינים או תת-דומיינים.
  • מחרוזות של התאמה לא תומכות בתו הלוכסן (/). לדוגמה: www.example.com/images.
  • מחרוזות של התאמה לא תומכות בסכימות או בשמות פרוטוקולים. לדוגמה: http://www.example.com.
  • מחרוזות של התאמה לא תומכות במספרי יציאות. לדוגמה: www.example.com:80.
  • מחרוזות של התאמה תומכות רק באותיות, במספרים ובתווים מיוחדים של ASCII: מקף (-), נקודה (.) וכוכבית (*).

חובה להשתמש ב-Punycode כדי להמיר שמות דומיין שמכילים תווים שאינם אותיות ASCII, מספרים, מקפים (-), נקודות (.) או כוכביות (*).‏ Punycode הוא תקן קידוד שממיר שמות דומיין ב-Unicode לפורמט שתואם ל-ASCII.

  • אם יש לכם שתי תוויות או יותר, צריך להשתמש בנקודות (.) כדי להפריד ביניהן. תווית יכולה להכיל מקף אחד או יותר (-), אבל היא לא יכולה להתחיל או להסתיים במקף. כל תווית יכולה לכלול עד 63 תווים.

  • מסנן כתובות URL לא תומך בשימוש בנקודה בתחילת שם דומיין או בנקודות עוקבות במחרוזת התאמה. מסנן כתובות URL מאפשר נקודות בסוף, אבל Cloud NGFW מסיר אותן לפני שמירת מסנן כתובות URL.

  • ‫Cloud NGFW ממיר את המחרוזות של ההתאמה לאותיות קטנות לפני שהוא שומר את מסנן כתובות ה-URL. ‫Cloud NGFW לא מבצע נורמליזציה אחרת.

  • כל שם דומיין יכול לכלול עד 255 תווים.

מסנני כתובות URL לתת-דומיינים ברמות מרובות

אתם יכולים להשתמש במסנני כתובות URL עם עדיפויות ופעולות שונות כדי לשלוט בתעבורת הרשת לתת-דומיינים מרובי רמות. אפשר גם להשתמש בתו הכללי לחיפוש (*) במחרוזות של כלי ההתאמה כדי לציין דומיינים ותת-דומיינים.

לדוגמה, נניח שאתם מטמיעים את ההתנהגות הבאה:

  • הרשאה להפעיל את a.b.c.example.com
  • דחיית הבקשה של *.b.c.example.com (דחיית הבקשות של כל שאר תת-הדומיינים של b.c.example.com)
  • מתן הרשאה ל-*.c.example.com (מתן הרשאה לכל שאר תתי-הדומיין של c.example.com)
  • דחיית הבקשה של *.example.com (דחיית הבקשות של כל שאר תת-הדומיינים של example.com)
  • הרשאה להפעיל את example.com
  • אישור של כל השאר

קטע הקוד הבא מטמיע את התרחיש הזה:

  urlFilteringProfile:
    urlFilters:
      # Allow 'a.b.c.example.com'
      - filteringAction: ALLOW
        priority: 1000
        urls: ['a.b.c.example.com']
      # Deny all subdomains of 'b.c.example.com'
      - filteringAction: DENY
        priority: 2000
        urls: ['*.b.c.example.com']
      # Allow all subdomains of 'c.example.com'
      - filteringAction: ALLOW
        priority: 3000
        urls: ['*.c.example.com']
      # Deny all subdomains of 'example.com'
      - filteringAction: DENY
        priority: 4000
        urls: ['*.example.com']
      # explicit allow URL filter
      - filteringAction: ALLOW
        priority: 5000
        urls: ['*']
      # implicit deny URL filter that will be processed last
      - filteringAction: DENY
        priority: 2147483647
        urls: ['*']
  

רשימה והצגת פרטים של פרופיל אבטחה לסינון כתובות URL

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

המסוף

  1. נכנסים לדף Security profiles במסוף Google Cloud .

    מעבר לפרופילי אבטחה

  2. לוחצים על הכרטיסייה פרופילי אבטחה כדי לראות רשימה של פרופילי אבטחה שהוגדרו.

  3. כדי לסנן לפי פרופילים של אבטחה לסינון כתובות URL, בשדה Filter (סינון) מציינים Profile type (סוג פרופיל) כ-URL filtering (סינון כתובות URL).

    בכרטיסייה מוצגת רשימה של פרופילי אבטחה לסינון כתובות URL.

  4. כדי להציג את פרטי הפרופיל, לוחצים על פרופיל אבטחה של סינון כתובות URL.

gcloud

כדי לראות את כל פרופילי האבטחה של סינון כתובות URL, משתמשים בפקודה gcloud network-security security-profiles url-filtering list:

gcloud network-security security-profiles url-filtering list \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

כדי לראות את הפרטים של פרופיל אבטחה לסינון כתובות URL, מריצים את הפקודה gcloud network-security security-profiles url-filtering describe:

gcloud network-security security-profiles url-filtering describe NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    [--billing-project QUOTA_PROJECT_ID]
    --location global

מחליפים את מה שכתוב בשדות הבאים:

  • NAME: השם של פרופיל האבטחה.

    אם לא משתמשים בפורמט הייחודי של מזהה כתובת ה-URL בשביל השם, צריך לציין את שם הארגון או הפרויקט ואת המיקום.

  • ORGANIZATION_ID: מזהה הארגון שבו קיים פרופיל האבטחה.

  • PROJECT_ID: מזהה הפרויקט שבו קיים פרופיל האבטחה.

  • QUOTA_PROJECT_ID: מזהה הפרויקט של המכסה. אפשר להשתמש בדגל הזה רק בפרופילי אבטחה ברמת הארגון.

מחיקת פרופיל אבטחה לסינון כתובות URL

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

כדי למחוק פרופיל אבטחה לסינון כתובות URL, משתמשים במסוף Google Cloud או ב-CLI של gcloud. עם זאת, אם פרופיל אבטחה מפנה לקבוצת פרופילי אבטחה, אי אפשר למחוק את פרופיל האבטחה הזה.

המסוף

  1. נכנסים לדף Security profiles במסוף Google Cloud .

    מעבר לפרופילי אבטחה

  2. לוחצים על הכרטיסייה פרופילי אבטחה. בכרטיסייה מוצגת רשימה של פרופילי אבטחה שהוגדרו.

  3. בוחרים את פרופיל האבטחה שרוצים למחוק ולוחצים על מחיקה.

  4. כדי לאשר, לוחצים שוב על מחיקה.

gcloud

כדי למחוק פרופיל אבטחה של סינון כתובות URL, משתמשים בפקודה gcloud network-security security-profiles url-filtering delete:

gcloud network-security security-profiles url-filtering delete NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global

מחליפים את מה שכתוב בשדות הבאים:

  • NAME: השם של פרופיל האבטחה.

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

  • ORGANIZATION_ID: מזהה הארגון. משתמשים בדגל הזה לפרופיל אבטחה ברמת הארגון.

  • PROJECT_ID: מזהה הפרויקט. משתמשים בדגל הזה לפרופיל אבטחה ברמת הפרויקט.

  • QUOTA_PROJECT_ID: מזהה הפרויקט של המכסה. אפשר להשתמש בדגל הזה רק בפרופילי אבטחה ברמת הארגון.

ייבוא פרופיל אבטחה לסינון כתובות URL

אתם יכולים לייבא פרופיל אבטחה לסינון כתובות URL (שנוצר בהתאמה אישית או יוצא בעבר) מקובץ YAML. כשמייבאים פרופיל אבטחה לסינון כתובות URL, אם כבר קיים פרופיל עם אותו שם, Cloud NGFW מעדכן את הפרופיל הקיים.

כדי לייבא פרופיל אבטחה של סינון כתובות URL מקובץ YAML, משתמשים ב-CLI של gcloud. אם כבר קיים פרופיל עם אותו שם כשמייבאים אותו, Cloud NGFW מעדכן את הפרופיל הזה.

gcloud

כדי לייבא פרופיל אבטחה של סינון כתובות URL מקובץ YAML, משתמשים בפקודה gcloud network-security security-profiles import:

gcloud network-security security-profiles import NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --source FILE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • NAME: השם של פרופיל האבטחה מהסוג url-filtering שרוצים לייבא. אפשר לציין את השם כמחרוזת או כמזהה ייחודי של כתובת URL.

  • ORGANIZATION_ID: מזהה הארגון. משתמשים בדגל הזה לפרופיל אבטחה ברמת הארגון.

  • PROJECT_ID: מזהה הפרויקט. משתמשים בדגל הזה לפרופיל אבטחה ברמת הפרויקט.

  • FILE_NAME: הנתיב לקובץ ה-YAML שמכיל את נתוני ייצוא ההגדרות.

ייצוא פרופיל אבטחה של סינון כתובות URL

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

כדי לייצא פרופיל אבטחה של סינון כתובות URL לקובץ YAML, משתמשים ב-CLI של gcloud.

gcloud

כדי לייצא פרופיל אבטחה של סינון כתובות URL לקובץ YAML, משתמשים בפקודה gcloud network-security security-profiles export:

gcloud network-security security-profiles export NAME \
    [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
    --location global \
    --destination FILE_NAME

מחליפים את מה שכתוב בשדות הבאים:

  • NAME: השם של פרופיל האבטחה מהסוג url-filtering שרוצים לייצא. אפשר לציין את השם כמחרוזת או כמזהה ייחודי של כתובת URL.

  • ORGANIZATION_ID: מזהה הארגון. משתמשים בדגל הזה לפרופיל אבטחה ברמת הארגון.

  • PROJECT_ID: מזהה הפרויקט. משתמשים בדגל הזה לפרופיל אבטחה ברמת הפרויקט.

  • FILE_NAME: הנתיב לקובץ ה-YAML שאליו Cloud NGFW ייצא את התצורה.

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