כדי לרכז את הניהול ולאכוף באופן עקבי את מדיניות האבטחה ברשתות של הענן הווירטואלי הפרטי (VPC), צריך להעביר את כללי חומת האש של ה-VPC שמשתמשים בתגי רשת ובחשבונות שירות של מקור למדיניות גלובלית של חומת אש ברשת. כך תוכלו לצמצם את שטח הפנים של ההתקפה, לשפר את ההגדרות של חומת האש ולחזק את גבולות האבטחה על ידי זיהוי כללים מתירים מדי וטיפול בהם.
המסמך הזה מיועד למנהלי רשתות, למהנדסי אבטחה ולאדריכלי אבטחה שמגדירים ומנהלים מדיניות אבטחה ברשת.
כדי להעביר כללים שלא משתמשים בתגי רשת או בחשבונות שירות, אפשר לעיין במאמר העברת כללי חומת אש של VPC שלא משתמשים בתגי רשת ובחשבונות שירות.
כדי להשלים את ההעברה הזו, צריך לבצע את המשימות הבאות:
- הערכת הסביבה.
- הצגת רשימה של תגי רשת וחשבונות שירות קיימים.
- יצירת תגים מאובטחים לכל תג רשת ולכל חשבון שירות של מקור.
- מיפוי של תגי הרשת וחשבונות השירות לתגים המאובטחים שיוצרים.
- קישור תגים מאובטחים למכונות וירטואליות (VM)
- העברת כללי חומת אש של VPC למדיניות חומת אש בין רשתות גלובלית.
- לעיון במדיניות חומת האש החדשה ברשת
- השלמת המשימות אחרי ההעברה.
לפני שמתחילים
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Compute Engine API.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. 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.-
התקינו את ה-CLI של Google Cloud.
-
הגדירו שה-CLI של gcloud ישתמש בזהות המאוחדת שלכם.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - מוודאים שיש לכם את התפקיד 'אדמין אבטחה של Compute' (
roles/compute.securityAdmin).
הערכת הסביבה
לפני שמעבירים את כללי חומת האש של VPC למדיניות חומת אש גלובלית ברשת, צריך להעריך את הסביבה הקיימת ואת התפקידים וההרשאות של ניהול זהויות והרשאות גישה (IAM):
- מזהים את מספר כללי חומת האש ב-VPC ברשת ה-VPC.
- חשוב לרשום את העדיפויות שמשויכות לכל כלל של חומת אש ב-VPC.
- חשוב לוודא שיש לכם את התפקידים וההרשאות הנדרשים ב-IAM כדי ליצור, לשייך, לשנות ולהציג כללי מדיניות גלובליים של חומת אש ברשת.
חשוב לוודא שיש לכם את תפקידי ה-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 של מיפוי התגים, מקשרים את התגים המאובטחים החדשים למכונות הווירטואליות שאליהן מצורפים תגי הרשת הקיימים:
כחשבון ראשי עם תפקיד אדמין בתג, מבצעים את הפעולות הבאות:
- בודקים את ההרשאות שנדרשות כדי לצרף תגים מאובטחים למשאבי Google Cloud .
- מקצים את התפקיד Tag User (משתמש בתג) לישות האבטחה שמשתמשת בתגים המאובטחים ומקשרת את התגים המאובטחים למכונות וירטואליות.
כמשתמש ראשי עם התפקיד Tag User, מקשרים את התגים המאובטחים למופעי מכונות וירטואליות באמצעות הפקודה
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.
-
משימות אחרי ההעברה
כדי להפעיל את מדיניות חומת האש החדשה ברמת הרשת הגלובלית ולהשתמש בה, צריך להשלים את המשימות שאחרי ההעברה. מידע נוסף זמין במאמר בנושא משימות אחרי ההעברה.