העברת כללי חומת אש של VPC שמשתמשים בתגי רשת ובחשבונות שירות

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

המסמך הזה מיועד לאדמינים של רשתות, למהנדסי אבטחה ולאדריכלי אבטחה שמגדירים ומנהלים מדיניות אבטחה של רשתות.

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

כדי להשלים את ההעברה הזו, צריך לבצע את המשימות הבאות:

  1. הערכת הסביבה
  2. הצגת רשימה של תגי רשת וחשבונות שירות קיימים.
  3. יצירת תגים מאובטחים לכל תג רשת ולכל חשבון שירות של מקור.
  4. מיפוי של תגי הרשת וחשבונות השירות לתגים המאובטחים שיוצרים.
  5. קישור תגים מאובטחים למכונות וירטואליות (VM).
  6. העברת כללי חומת אש של VPC למדיניות גלובלית של חומת אש ברשת.
  7. לעיון במדיניות חומת האש החדשה ברשת
  8. משלימים את המשימות שאחרי ההעברה.

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

  1. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Compute Engine API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  5. Install the Google Cloud CLI.

  6. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  7. To initialize the gcloud CLI, run the following command:

    gcloud init
  8. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Compute Engine API, if it is not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the API

  11. Install the Google Cloud CLI.

  12. If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

  13. To initialize the gcloud CLI, run the following command:

    gcloud init
  14. מוודאים שיש לכם את התפקיד 'אדמין אבטחה של Compute' (roles/compute.securityAdmin).

הערכת הסביבה

לפני שמעבירים את כללי חומת האש של ה-VPC למדיניות חומת אש גלובלית ברשת, צריך להעריך את הסביבה הקיימת ואת התפקידים וההרשאות של ניהול הזהויות והרשאות הגישה (IAM):

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

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

    שם התפקיד משימות שבוצעו
    תפקיד Tag Administrator (roles/resourcemanager.tagAdmin) ליצור, לעדכן ולמחוק הגדרות של תגים. מידע נוסף מופיע במאמר בנושא ניהול תגים.
    תפקיד Tag Viewer (roles/resourcemanager.tagViewer) הצגת הגדרות של תגים ותגים שמצורפים למשאבים.
    תפקיד המשתמש בתג (roles/resourcemanager.tagUser) להוסיף ולהסיר תגים שמצורפים למשאבים.

הצגת רשימה של תגי רשת וחשבונות שירות קיימים

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

כדי לייצא את תגי הרשת ואת חשבונות השירות ברשת לקובץ מיפוי JSON, משתמשים בפקודה gcloud beta compute firewall-rules migrate עם הדגל --export-tag-mapping:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --export-tag-mapping \
    --tag-mapping-file=TAG_MAPPING_FILE

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

  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את כללי חומת האש של ה-VPC שרוצים להעביר.
  • ‫TAG_MAPPING_FILE: השם של קובץ ה-JSON של המיפוי.

אם כללי חומת האש של ה-VPC מכילים רק חשבונות שירות, קובץ ה-JSON שנוצר יכיל רק חשבונות שירות. באופן דומה, אם כללי חומת האש של ה-VPC מכילים רק תגי רשת, קובץ ה-JSON שנוצר יכיל רק תגי רשת. חשבונות השירות מתחילים ב-sa, ולתגי הרשת אין תחילית.

לדוגמה, קובץ ה-JSON הבא שנוצר מכיל תג רשת sql-server וחשבון שירות example@example.com.

{"sql-server": null, "sa:example@example.com": null}

יצירת תגים מאובטחים

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

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

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

כדי ליצור מפתח וערך מאובטחים של תג לכל תג רשת וחשבון שירות, משתמשים בפקודה gcloud resource-manager tags keys create ובפקודה gcloud resource-manager tags values create:

gcloud resource-manager tags keys create TAG_KEY \
    --parent=organizations/ORGANIZATION_ID \
    --purpose=GCE_FIREWALL \
    --purpose-data=network=PROJECT_ID/NETWORK_NAME

gcloud resource-manager tags values create TAG_VALUE \
    --parent=ORGANIZATION_ID/TAG_KEY

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

  • ‫TAG_KEY: השם של מפתח התג המאובטח.
  • ‫ORGANIZATION_ID: מזהה הארגון.
  • ‫PROJECT_ID: מזהה הפרויקט
  • ‫NETWORK_NAME: השם של רשת ה-VPC.
  • ‫TAG_VALUE: הערך שיוקצה למפתח התג המאובטח.

לדוגמה, אם יש לכם כלל חומת אש של VPC עם תג רשת בשם sql-server, צריך ליצור צמד מפתח/ערך תואם של תג מאובטח sql-server:production.

gcloud resource-manager tags keys create sql-server \
    --parent=organizations/123456 \
    --purpose=GCE_FIREWALL \
    --purpose-data=network=test-project/test-network

gcloud resource-manager tags values create production \
    --parent=123456/sql-server

מיפוי של תגי רשת וחשבונות שירות לתגי אבטחה

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

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

{"sql-server": "tagValues/yyyyy", "sa:example@example.com": "tagValues/zzzzz"}

לדוגמה, בקובץ ה-JSON הבא, תג הרשת sql-server ממופה לערך התג המאובטח של המפתח sql-server, וחשבון השירות example@example.com ממופה לערך התג המאובטח של המפתח example@example.com:

{"sql-server": "tagValues/production", "sa:example@example.com": "tagValues/example"}

קישור תגי אבטחה למכונות וירטואליות

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

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

    1. בודקים את ההרשאות שנדרשות כדי לצרף תגים מאובטחים למשאבי Google Cloud .
    2. הקצאת התפקיד Tag User (משתמש בתגים) לישות האבטחה שמשתמשת בתגים המאובטחים ומקשרת את התגים המאובטחים למכונות וירטואליות.
  2. בתור ישות עם התפקיד Tag User, מקשרים את התגים המאובטחים למופעי VM באמצעות הפקודה gcloud beta compute firewall-rules migrate עם הדגל --bind-tags-to-instances:

    gcloud beta compute firewall-rules migrate \
        --source-network=NETWORK_NAME \
        --bind-tags-to-instances \
        --tag-mapping-file=TAG_MAPPING_FILE
    

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

    • ‫NETWORK_NAME: השם של רשת ה-VPC.
    • ‫TAG_MAPPING_FILE: השם של קובץ ה-JSON של המיפוי.

העברת כללי חומת אש ב-VPC למדיניות חומת אש בין רשתות גלובליות

כדי להעביר כללי חומת אש של VPC למדיניות גלובלית של חומת אש ברשת, משתמשים בפקודה gcloud beta compute firewall-rules migrate:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --tag-mapping-file=TAG_MAPPING_FILE

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

  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את כללי חומת האש של ה-VPC שרוצים להעביר.
  • ‫POLICY_NAME: השם של מדיניות חומת האש הגלובלית ברשת שרוצים ליצור במהלך ההעברה.
  • ‫TAG_MAPPING_FILE: השם של קובץ ה-JSON של המיפוי.

החרגה של כללים לחומת אש מההעברה

כדי להחריג כללים ספציפיים של חומת האש מההעברה, משתמשים בפקודה gcloud beta compute firewall-rules migrate עם הדגל --exclusion-patterns-file:

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE

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

  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את כללי חומת האש של ה-VPC שרוצים להעביר.
  • ‫POLICY_NAME: השם של מדיניות חומת האש הגלובלית ברשת שרוצים ליצור במהלך ההעברה.
  • ‫EXCLUSION_PATTERNS_FILE: השם של הקובץ שמכיל ביטויים רגולריים שמגדירים תבניות של שמות חומות אש ב-VPC שצריך להחריג מההעברה. חשוב לציין את הנתיב המלא של הקובץ. כללי חומת אש שתואמים לתבניות שצוינו ייפסחו.

    כשמגדירים את דפוסי ההחרגה, חשוב לשים לב לדברים הבאים:

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

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

בהתאם לדפוסי השמות של כללי חומת האש שהוחרגו, כלי ההעברה לא מעביר כללי חומת אש מסוימים, כמו כללי חומת אש של Google Kubernetes Engine ‏ (GKE). כדי לייצא את רשימת דפוסי השמות של כללי חומת האש שהוחרגו, משתמשים בפקודה gcloud beta compute firewall-rules migrate עם הדגלים --export-exclusion-patterns ו---exclusion-patterns-file.

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --exclusion-patterns-file=EXCLUSION_PATTERNS_FILE \
    --export-exclusion-patterns

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

  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את כללי חומת האש של ה-VPC שרוצים להעביר.
  • ‫POLICY_NAME: השם של מדיניות חומת האש הגלובלית ברשת שרוצים ליצור במהלך ההעברה.
  • ‫EXCLUSION_PATTERNS_FILE: הנתיב של הקובץ שאליו מיוצאים דפוסי השמות הבאים של כללי חומת האש שלא נכללים.

    gke-(.+)-ipv6-all
    gke-(.+)-(.+)-((master)|(vms)|(all)|(inkubelet)|(exkubelet)|(mcsd))
    k8s-fw-(l7-)?(.+)
    k8s-(.+)-((node)|(http)|(node-http))-hc
    (.+)-hc
    k8s2-(.+)-(.+)-(.+)-(.+)(-fw)?
    k8s2-(.+)-l4-shared-hc-fw
    gke((gw)|(mcg))1-l7-(.+)-(.+)
    

כדי להעביר כללי חומת אש מוחרגים שתואמים לתבנית ספציפית, מסירים את התבנית מהרשימה המיוצאת ומריצים את הפקודה gcloud beta compute firewall-rules migrate עם הדגל --exclusion-patterns-file.

העברה בכפייה תוך שמירה על סדר ההערכה

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

לדוגמה, אם לכללי חומת האש שלכם יש את העדיפויות הבאות, ההעברה תיכשל.

  • כלל שצוין על ידי המשתמש עם עדיפות 100
  • כלל מוחרג עם עדיפות 200
  • כלל שצוין על ידי המשתמש עם עדיפות 300

כדי לאלץ את כלי ההעברה להעביר את הכללים שצוינו על ידי המשתמש תוך שמירה על סדר ההערכה המקורי שלהם והתעלמות מכללי חומת אש שהוחרגו, משתמשים בפקודה gcloud beta compute firewall-rules migrate עם הדגל --force.

gcloud beta compute firewall-rules migrate \
    --source-network=NETWORK_NAME \
    --target-firewall-policy=POLICY_NAME \
    --force

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

  • ‫NETWORK_NAME: השם של רשת ה-VPC שמכילה את כללי חומת האש של ה-VPC שרוצים להעביר.
  • ‫POLICY_NAME: השם של מדיניות חומת האש הגלובלית ברשת שרוצים ליצור במהלך ההעברה.

בדיקת מדיניות חומת האש החדשה בין רשתות גלובליות

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

כדאי לבדוק את הדברים הבאים:

  • ההגדרה של כללי מדיניות חומת האש תקינה, ורכיבי הכללים הבאים מועברים בצורה תקינה לכל כלל:

    • עדיפות יחסית
    • כיוון התנועה
    • פעולה במקרה של התאמה
    • הגדרות היומן
    • פרמטרים של יעד
    • פרמטרים של מקור (לכללי תעבורת נתונים נכנסת)
    • פרמטרים של יעד (לכללי תעבורת נתונים יוצאת)
    • הגבלות על פרוטוקולים ועל יציאות
  • בודקים אם התגים המאובטחים מצורפים למכונה הווירטואלית הנכונה. כדי לוודא זאת, משתמשים בפקודה gcloud resource-manager tags bindings list:

    gcloud resource-manager tags bindings list \
        --location=ZONE_ID \
        --parent=//compute.googleapis.com/projects/PROJECT_ID/zones/ZONE_ID/instances/INSTANCE_NAME \
        --effective
    

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

    • ‫ZONE_ID: האזור של המכונה הווירטואלית.
    • ‫PROJECT_ID: מזהה הפרויקט
    • ‫INSTANCE_NAME: שם ה-VM.

משימות אחרי ההעברה

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

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