שימוש ב-VPC Service Controls

כדי לאבטח את ההגדרה של Network Connectivity Center ‏ (NCC), משתמשים ב-VPC Service Controls.

‫VPC Service Controls מספק אבטחה נוספת ל-Google APIs ולשירותים, כולל ההגדרה של NCC. בנוסף ל-IAM, ‏ VPC Service Controls מגביל את מערכות המקור שיכולות לבצע שינויים בהגדרות של NCC.

בדף הזה מתואר תרחיש נפוץ ומוצגת דוגמה להגדרה שמאפשרת גישה בין רכזת NCC לבין רשתות spoke של VPC שמופרדות על ידי גבולות שירות.

למידע מקיף, אפשר לעיין בסקירה הכללית על VPC Service Controls.

דוגמה: הצעות לחיבור רשתות spoke של VPC בין פרויקטים שונים בגבולות גזרה של שירותים

אם ההגדרה שלכם מחייבת שמרכז NCC והרשתות מסוג spoke של ה-VPC שלו ימוקמו בפרויקטים שונים ששייכים לגבולות גזרה נפרדים של VPC Service Controls, אתם צריכים להגדיר כללי תעבורת נתונים נכנסת (ingress) ותעבורת נתונים יוצאת (egress) בשני גבולות הגזרה. כך אדמינים של רשתות spoke יכולים להציע רשת spoke של VPC עם הפניה לרשת hub, ואדמינים של רשת hub יכולים לאשר רשתות spoke מוצעות.

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

בטבלה הבאה מפורטים הכללים שנדרשים בדוגמה הזו:

גבולות גזרה כלל מטרה
Spoke perimeter
(פרויקט spoke)
כלל תעבורת נתונים נכנסת 1 לאפשר לאדמין של ה-Spoke ליזום הצעה ליצירת Spoke על ידי יצירת Spoke בפרויקט ה-Spoke (אם הניהול מתבצע מחוץ ל-SpokePerimeter)
כלל לתעבורת נתונים יוצאת (egress) מספר 1 מאפשרים להצעה של רשת מסוג Spoke יוצאת ליזום צירוף לרשת מסוג Hub בפרויקט Hub, כולל אימות של רשת ה-VPC הבסיסית
גבולות גזרה של ה-Hub
(פרויקט ה-Hub)
כלל תעבורת נתונים נכנסת 1 אפשר לאדמין של הרכזת לנהל את הרכזת בפרויקט של הרכזת, כולל אישור או דחייה של הצעות לחיבור רשתות (אם הרכזת מנוהלת מחוץ ל-HubPerimeter)
כלל לתעבורת נתונים נכנסת (ingress) 2 מאפשרים להצעה של רשת spoke נכנסת להתחיל את ההצטרפות לרשת hub
כלל לתעבורת נתונים יוצאת (egress) מספר 1 מאפשרים להצעה של רשת spoke נכנסת להתקשר חזרה לפרויקט ה-spoke כדי להשלים את הקישור של ה-spoke ל-hub, כולל אימות של רשת ה-VPC הבסיסית

כללי גבולות גזרה של Spoke

כדי לאפשר יצירה וניהול של spoke, האדמין של ה-spoke מגדיר את כללי תעבורת הנתונים הנכנסת (ingress) ותעבורת הנתונים היוצאת (egress) הבאים:

כלל פרטים
כלל תעבורת נתונים נכנסת (ingress) מספר 1: יצירת רשת spoke כשמנהל של רשת spoke יוזם הצעה לרשת spoke על ידי הפעלת פקודת היצירה מחוץ לגבולות הגזרה (למשל, מתחנת עבודה של אדמין, מ-Cloud Shell או ממסוף Google Cloud ), מערכת VPC Service Controls מעריכה את הקריאה כבקשת תעבורת נתונים נכנסת (ingress) לפרויקט של רשת ה-spoke. ‫SpokePerimeter צריך לאפשר כניסה מזהות האדמין של הרשת המקומית וממקור הרשת של NCC API.

הכלל הזה לא נדרש אם הניהול של רשתות spoke מתבצע באופן בלעדי מתוך רשת VPC שמוגנת על ידי SpokePerimeter.
כלל לתעבורת נתונים יוצאת 1: אימות של רשת ושל חיבור למרכז כשאדמין של רשת מסוג Spoke מציע רשת כזו, הבקשה יוזמת צירוף לרשת מסוג Hub בפרויקט של רשת ה-Hub. במסגרת הבקשה, NCC API מאמת גם את רשת ה-VPC הבסיסית באמצעות Compute Engine API. SpokePerimeter צריך לאפשר יציאה (egress) מהאדמין של הרכזת עבור ה-API של NCC ושל Compute Engine.

הגדרת גבולות גזרה של רשתות Spoke

הדוגמאות לכללים לתעבורת נתונים נכנסת ויוצאת בקטעים הבאים מבוססות על הגדרת גבולות הגזרה הבאה.

מידע נוסף על גבולות גזרה לשירות זמין במאמר פרטים והגדרה של גבולות גזרה לשירות.

# Spoke perimeter definition
name: accessPolicies/2345678901/servicePerimeters/SpokePerimeter
status:
  resources:
  - projects/222222222222
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: SpokePerimeter

כלל לתעבורת נתונים נכנסת (ingress) ברשת spoke

בקטע הזה מופיעה דוגמה להטמעה של כלל תעבורת נתונים נכנסת (ingress) עבור גבולות הגזרה של ה-spoke, כפי שמתואר במאמר כללים לגבולות הגזרה של ה-spoke. הכלל הזה נדרש רק אם מנהלים רשתות משנה מחוץ ל-SpokePerimeter.

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

echo """
# Rule 1: Allow the spoke administrator to initiate a spoke proposal by creating
# a spoke in the spoke project (if managing from outside SpokePerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    - accessLevel: accessPolicies/2345678901/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/222222222222
""" > spoke-ingress.yaml

מומלץ להגדיר כללי כניסה ספציפיים ככל האפשר:

  • ‫identities: צריך לציין רק את מזהה החשבון הראשי שנדרש לסביבה שלכם, ולא סוגים כלליים של זהויות. בדוגמה הזו, כלל 1 מציין חשבון שירות לצינור עיבוד נתונים אוטומטי לפריסה. אפשר גם לציין קבוצת Google לניהול הצוות, או חשבון משתמש נפרד. פרטים נוספים זמינים במאמר בנושא זהויות נתמכות לכללי כניסה ויציאה.

  • ‫sources: הגבלת המקורות לרמות גישה ידועות. בדוגמה הזו מוגדרת רמת גישה ממדיניות הגישה שמנהלת את SpokePerimeter כדי לאשר מקורות חיצוניים כמו תחנות עבודה של אדמינים, Cloud Shell או מסוף Google Cloud . לחלופין, אפשר לאפשר גישה מרשת VPC לניהול מחוץ לגבולות גזרה על ידי שימוש במאפיין - resource: כדי לציין את הפרויקט או רשת ה-VPC. פרטים נוספים זמינים במאמרים בנושא איך מאפשרים גישה מחוץ להיקף ובקרת גישה מבוססת-הקשר עם כללי כניסה.

  • ‫operations: ההגבלות על networkconnectivity.googleapis.com נאכפות ברמת השירות, ולכן נדרש method: "*". אין שיטות מפורטות יותר לשירות הזה.

  • ‫resources: מציינים את מספר הפרויקט המדויק של פרויקט ה-spoke ב-resources. לא להשתמש בתווים כלליים לחיפוש (*).

כלל לתעבורת נתונים יוצאת (egress) ב-Spoke

בקטע הזה מופיעה דוגמה להטמעה של כלל יציאה עבור היקף האבטחה של ה-spoke, כפי שמתואר במאמר כללים להיקף האבטחה של ה-spoke.

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

echo """
# Rule 1: Allow the outbound spoke proposal to initiate attachment to the hub in
# the hub project, which includes verifying the backing VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/111111111111
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > spoke-egress.yaml

מומלץ להגדיר כללי תעבורת נתונים יוצאת (egress) שהם ספציפיים ככל האפשר:

  • ‫identities: צריך לציין רק את מזהה החשבון הראשי שנדרש לסביבה שלכם, ולא סוגים כלליים של זהויות. בדוגמה הזו, כלל 1 מציין חשבון שירות לצינור עיבוד נתונים אוטומטי לפריסה. אפשר גם לציין קבוצת Google לניהול הצוות או חשבון משתמש נפרד. פרטים נוספים זמינים במאמר בנושא זהויות נתמכות לכללי כניסה ויציאה.

  • ‫operations: ההגבלות על networkconnectivity.googleapis.com נאכפות ברמת השירות, ולכן נדרש method: "*". במקום compute.googleapis.com, מציינים method: NetworksService.Get כדי להעניק הרשאה לאימות רשת ה-VPC הבסיסית כשמתחילים את הצירוף ל-hub.

  • ‫resources: מציינים את מספר הפרויקט המדויק של ה-Hub ב-resources. לא להשתמש בתווים כלליים לחיפוש (*).

כללים של גבולות גזרה של Hub

כדי להפעיל את הניהול של הרכזת ולאפשר הצעות להוספת רשתות משנה, האדמין של הרכזת מגדיר את הכללים הבאים לתעבורת נתונים נכנסת (ingress) ויוצאת (egress):

כלל פרטים
כלל לתעבורת נתונים נכנסת (ingress) מספר 1: ניהול מרכזים כשמנהל מרכזיות מנהל את המרכזייה מחוץ לגבולות הגזרה (למשל, מתחנת עבודה של אדמין, מ-Cloud Shell או ממסוף Google Cloud ), מערכת VPC Service Controls מעריכה את השיחה כבקשת כניסה לפרויקט של המרכזייה. הכלל הזה מאפשר לאדמין של הרכזת לבדוק את הרשתות המוצעות ולקבל אותן (העברת הרשת המוצעת למצב ACTIVE) או לדחות אותן (העברת הרשת המוצעת למצב REJECTED). HubPerimeter צריך לאפשר כניסה מהזהות של האדמין של הרכזת וממקור הרשת.

הכלל הזה לא נדרש אם הניהול של הרכזת מתבצע באופן בלעדי מתוך רשת VPC שמוגנת על ידי HubPerimeter.
כלל לתעבורת נתונים נכנסת (ingress) מספר 2: קובץ מצורף של Hub כשאדמין של רשת מסוג Spoke מציע רשת כזו, הבקשה יוזמת צירוף לרשת מסוג Hub בפרויקט של רשת ה-Hub. ‫HubPerimeter צריך לאפשר כניסה מהזהות של האדמין ברשת מסוג Hub & Spoke וממקור הרשת עבור NCC API בכל היקפי השירות.
כלל לתעבורת נתונים יוצאת 1: קישור של רשתות מסוג Spoke ואימות הרשת כשמנהל של הסתעפות מציע הסתעפות, הבקשה חוזרת לפרויקט של הסתעפות כדי להשלים את הקישור של הסתעפות למרכז ולהעביר את הסתעפות למצב PENDING_REVIEW. במסגרת הבקשה, NCC API מאמת גם את רשת ה-VPC הבסיסית באמצעות Compute Engine API. האדמין של HubPerimeter צריך לאפשר יציאה (egress) גם ל-NCC וגם ל-Compute Engine APIs.

הגדרת ההיקף של המרכז

הדוגמאות לכללים לתעבורת נתונים נכנסת ויוצאת בקטעים הבאים מבוססות על הגדרת גבולות הגזרה הבאה.

מידע נוסף על גבולות גזרה לשירות זמין במאמר פרטים והגדרה של גבולות גזרה לשירות.

# Hub perimeter definition
name: accessPolicies/1234567890/servicePerimeters/HubPerimeter
status:
  resources:
  - projects/111111111111
  restrictedServices:
  - networkconnectivity.googleapis.com
  - compute.googleapis.com
title: HubPerimeter

כללים לתעבורת נתונים נכנסת (ingress) במרכז

בקטע הזה מופיעה דוגמה להטמעה של כללי הכניסה להיקף של הרכזת, כפי שמתואר במאמר כללי היקף של רכזת.

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

echo """
# Rule 1: Allow the hub administrator to manage the hub in the hub project
# (if managing from outside HubPerimeter)
- ingressFrom:
    identities:
    # Specify the principal identifier for the hub administrator:
    - group:hub-admins@example.com
    # - user:hub-admin@example.com
    # - serviceAccount:hub-admin-sa@hub-project.iam.gserviceaccount.com
    sources:
    - accessLevel: accessPolicies/1234567890/accessLevels/HubAdminAccessLevel
    # Alternatively, specify a management project or VPC network if managing
    # from a VPC network outside the perimeter:
    # - resource: projects/MANAGEMENT_PROJECT_NUMBER
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111

# Rule 2: Allow the inbound spoke proposal to initiate attachment to the hub
- ingressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
    sources:
    # Specify an access level defined in the hub organization's access policy if
    # the spoke administrator manages spokes from the Google Cloud console or
    # external networks:
    - accessLevel: accessPolicies/1234567890/accessLevels/SpokeAdminAccessLevel
    # Alternatively, specify the spoke project if the spoke administrator
    # manages from a VPC network in the spoke project:
    # - resource: projects/222222222222
  ingressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    resources:
    - projects/111111111111
""" > hub-ingress.yaml

מומלץ להגדיר כללי כניסה ספציפיים ככל האפשר:

  • ‫identities: מציינים רק את מזהה החשבון הראשי שנדרש לסביבה שלכם, ולא סוגי זהויות רחבים:

    • בדוגמה הזו, בכלל 1 מוגדרת קבוצת Google של אדמינים במרכז, לניהול הצוות. אפשר גם לציין חשבון משתמש או חשבון שירות ספציפיים. הכלל הזה נדרש רק אם מנהלים את המרכז מחוץ לארגון HubPerimeter.
    • בדוגמה הזו, כלל 2 מציין חשבון שירות של אדמין ב-spoke עבור צינור עיבוד נתונים אוטומטי לפריסה. אפשר גם לציין קבוצת Google לניהול הצוות או חשבון משתמש נפרד.

    מידע נוסף זמין במאמר בנושא זהויות נתמכות לכללי תעבורה נכנסת ויוצאת.

  • ‫sources: הגבלת המקורות לרמות גישה או לפרויקטים מוכרים:

    • בדוגמה הזו, כלל 1 מציין רמת גישה לאדמינים של מרכזים ממדיניות הגישה שמנהלת את HubPerimeter כדי לאשר מקורות חיצוניים כמו תחנות עבודה של אדמינים, Cloud Shell או מסוףGoogle Cloud . לחלופין, אפשר לאפשר גישה מרשת VPC לניהול מחוץ לגבולות גזרה, באמצעות המאפיין - resource: כדי לציין את הפרויקט או רשת ה-VPC. פרטים נוספים זמינים במאמרים בנושא איך מאפשרים גישה מחוץ להיקף ובקרת גישה מבוססת-הקשר עם כללי כניסה.
    • בדוגמה הזו, כלל 2 מציין רמת גישה לאדמינים של spoke ממדיניות הגישה שמנהלת את HubPerimeter כדי לאשר מקורות חיצוניים כמו תחנות עבודה של אדמינים, Cloud Shell או מסוף Google Cloud . אפשרות אחרת היא לאפשר גישה מרשת VPC בפרויקט המרכזי באמצעות המאפיין - resource: כדי לציין את מספר הפרויקט המרכזי (למשל, עבור צינור פריסה אוטומטי).
  • ‫operations: ההגבלות על networkconnectivity.googleapis.com נאכפות ברמת השירות, ולכן נדרש method: "*". אין שיטות מפורטות יותר לשירות הזה.

  • ‫resources: מציינים את מספר הפרויקט המדויק של ה-Hub ב-resources. לא להשתמש בתווים כלליים לחיפוש (*).

כלל לתעבורת נתונים יוצאת (egress) במרכז

בקטע הזה מופיעה דוגמה להטמעה של כלל תעבורת נתונים יוצאת (egress) עבור גבולות הגזרה של ה-Hub, כפי שמתואר במאמר כללים לגבולות הגזרה של ה-Hub.

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

echo """
# Rule 1: Allow the inbound spoke proposal to call back to the spoke project to
# complete linking the spoke to the hub, which includes verifying the backing
# VPC network
- egressTo:
    operations:
    - serviceName: networkconnectivity.googleapis.com
      methodSelectors:
      - method: "*"
    - serviceName: compute.googleapis.com
      methodSelectors:
      - method: NetworksService.Get
    resources:
    - projects/222222222222
  egressFrom:
    identities:
    # Specify the principal identifier for the spoke administrator or deployment pipeline:
    - serviceAccount:spoke-admin-sa@spoke-project.iam.gserviceaccount.com
    # - group:spoke-admins@example.org
    # - user:spoke-admin@example.org
""" > hub-egress.yaml

מומלץ להגדיר כללי תעבורת נתונים יוצאת (egress) שהם ספציפיים ככל האפשר:

  • ‫identities: מציינים את מזהה החשבון הראשי של האדמין ב-spoke (כמו חשבון שירות, קבוצה או חשבון משתמש של צינור עיבוד נתונים לפריסה). כשמנהל של רשת spoke מציע רשת spoke, ‏ HubPerimeter בודק את תעבורת הנתונים היוצאת (egress) תחת הזהות של מנהל רשת ה-spoke כדי להשלים את הקישור של רשת ה-spoke לרשת ה-Hub בפרויקט ה-spoke, כולל אימות של רשת ה-VPC הבסיסית.

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

  • ‫operations: ההגבלות על networkconnectivity.googleapis.com נאכפות ברמת השירות, ולכן נדרש method: "*". ב-compute.googleapis.com, מציינים method: NetworksService.Get כדי להעניק הרשאה לאימות רשת ה-VPC הבסיסית כשמשלימים את הקישור לפרויקט spoke.

  • ‫resources: מציינים את מספר הפרויקט המדויק של פרויקט ה-spoke ב-resources. לא להשתמש בתווים כלליים לחיפוש (*).