במסמך הזה מתוארים תרחישי שימוש נפוצים להחלפת נתונים מאובטחת ודוגמאות להגדרות שמאפשרות גישה בין לקוחות למשאבים שמופרדים על ידי גבולות שירות.
סקירה כללית על כללים לתעבורת נתונים נכנסת ויוצאת מופיעה במאמר כללים לתעבורת נתונים נכנסת ויוצאת.
הוראות להגדרת מדיניות של כללים לתעבורת נתונים נכנסת (ingress) ויוצאת (egress) מופיעות במאמר הגדרת מדיניות לתעבורת נתונים נכנסת ויוצאת.
דוגמאות להגדרות של תרחישי שימוש בהחלפת נתונים מאובטחת
בקטע הזה מופיעות דוגמאות לתרחישי שימוש בהחלפת נתונים בצורה מאובטחת בין אזורי אבטחה.
- גישה למשאב Google Cloud מחוץ לגבולות הגזרה
- שיתוף נתונים באמצעות Pub/Sub בין שני ארגונים שמשתמשים ב-VPC Service Controls
- שיתוף נתוני PHI אנונימיים עם ארגון שותף
- איך מעניקים גישה לתמונת דיסק של צד שלישי ב-Compute Engine
- קריאת מערך נתונים ב-BigQuery על ידי מתן גישה פרטית מרשת VPC מחוץ להיקף
- טעינה לקטגוריה של Cloud Storage (כתיבה) על ידי מתן גישה פרטית מרשת VPC מחוץ להיקף
- שיתוף יומנים בגבול גזרה נפרד על ידי מתן הרשאה לפרויקטים מכמה גבולות גזרה לשתף יומנים
גישה למשאב Google Cloud מחוץ ל-perimeter
בתרשים הבא מוצג משאב של Compute Engine בתוך גבולות גזרה לשירות שנדרשת לו גישה למשאב של Cloud Storage שנמצא מחוץ לגבולות הגזרה:

נניח שהגדרתם את גבולות הגזרה הבאים:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com - storage.googleapis.com title: Example
צריך לתת הרשאת קריאה לקטגוריה של Cloud Storage ב-project 999, שנמצאת בארגון אחר. אחר כך מגדירים את כלל תעבורת הנתונים היוצאת (egress) הבא בקובץ ושומרים את הקובץ בשם gcs.yaml:
echo """
- egressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.objects.get
resources:
- projects/999
egressFrom:
identityType: ANY_IDENTITY
""" > gcs.yaml
מריצים את הפקודה הבאה כדי להחיל את כלל התעבורה היוצאת:
gcloud beta access-context-manager perimeters update Example --set-egress-policies=gcs.yaml
למידע נוסף על הפקודה gcloud access-context-manager perimeters update, ראו gcloud access-context-manager perimeters update.
שיתוף נתונים באמצעות Pub/Sub בין שני ארגונים שמשתמשים ב-VPC Service Controls
בתרשים הבא מוצגים שני ארגונים, Org1 ו-Org2, שמשתמשים ב-VPC Service Controls ומשתפים נתונים באמצעות נושא Pub/Sub:

נניח שהגדרתם את הגבולות הבאים:
# Org 1 Perimeter Definition name: accessPolicies/222/servicePerimeters/Example1 status: resources: - projects/111 restrictedServices: - pubsub.googleapis.com title: Example1
# Org 2 Perimeter Definition name: accessPolicies/333/servicePerimeters/Example2 status: resources: - projects/222 restrictedServices: - pubsub.googleapis.com title: Example2
כדי להפעיל את שיתוף הנתונים, Org1 חייב להגדיר את כלל תעבורת הנתונים היוצאת (egress) הבא שמאפשר את המינוי ולשמור את הקובץ בתור org1egress.yaml:
# Org1: Org1's perimeter must allow a Pub/Sub subscription to project 222.
echo """
- egressTo:
operations:
- serviceName: pubsub.googleapis.com
methodSelectors:
- method: Subscriber.CreateSubscription
resources:
- projects/222
egressFrom:
identityType: ANY_IDENTITY
""" > org1egress.yaml
ב-Org2 צריך להגדיר כלל כניסה תואם שמאפשר את המינוי, ולשמור את הקובץ בשם org2ingress.yaml.
# Org 2: Org2's perimeter must allow a Pub/Sub subscription from network
project 111 in Org1.
echo """
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/111
ingressTo:
operations:
- serviceName: pubsub.googleapis.com
methodSelectors:
- method: Subscriber.CreateSubscription
resources:
- \"*\"
""" > org2ingress.yaml
מריצים את הפקודות הבאות כדי להחיל את הכללים לתעבורת נתונים נכנסת ויוצאת:
gcloud beta access-context-manager perimeters update Example2 1--set-egress-policies=org1egress.yaml
gcloud beta access-context-manager perimeters update Example1 1--set-ingress-policies=org2ingress.yaml
שיתוף נתוני PHI אנונימיים עם ארגון שותף
בתרשים הבא מוצג גבולות גזרה סביב פלח נתונים של מידע רפואי מוגן (PHI), גבולות גזרה שני סביב פלח נתונים שעבר אנונימיזציה וארגון שותף נפרד. פלח הנתונים של ה-PHI יכול לשנות את הנתונים בפלח הנתונים האנונימי, והנתונים מפלח הנתונים האנונימי משותפים עם ארגון השותף.

אתם רוצים להגדיר כללי תעבורת נתונים נכנסת (ingress) ותעבורת נתונים יוצאת (egress) שיאפשרו שיתוף של נתונים אנונימיים עם הארגון השותף, ויאפשרו לפלח ה-PHI שלכם לבצע מניפולציה בנתונים בפלח הנתונים האנונימיים.
נניח שהגדרתם את הגבולות הבאים:
# PhiPerimeter
name: accessPolicies/222/servicePerimeters/PhiPerimeter
status:
resources:
- projects/111
restrictedServices:
- storage.googleapis.com
- bigquery.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: PhiPerimeter
# AnonPerimeter
name: accessPolicies/222/servicePerimeters/AnonPerimeter
status:
resources:
- projects/222
restrictedServices:
- storage.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: AnonPerimeter
אפשר גם להניח שהפרויקט של ארגון השותף הוא 999. אפשר להגדיר את הכללים הבאים לתעבורת נתונים נכנסת (ingress) ויוצאת (egress):
# Anon Perimeter
echo """
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/111
ingressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.Write
- method: google.storage.objects.create
resources:
- \"*\"
""" > anoningress.yaml
echo """
- egressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.Write
- method: google.storage.objects.create
resources:
- projects/999
egressFrom:
identityType: ANY_IDENTITY
""" > anonegress.yaml
# PHI Perimeter
echo """
- egressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: \"*\"
resources:
- projects/222
egressFrom:
identityType: ANY_IDENTITY
""" > phiegress.yaml
מריצים את הפקודות הבאות כדי להחיל את הכללים לתעבורת נתונים נכנסת ויוצאת:
gcloud beta access-context-manager perimeters update AnonPerimeter --set-ingress-policies=anoningress.yaml --set-egress-policies=anonegress.yaml
gcloud beta access-context-manager perimeters update PhiPerimeter --set-egress-policies=phiegress.yaml
הענקת גישה לתמונת דיסק של צד שלישי ב-Compute Engine
בתרשים הבא מוצג משאב של Compute Engine בתוך גבולות גזרה לשירות שנדרשת בו גישה לקובץ אימג' של דיסק של Compute Engine בפרויקט תמונות של צד שלישי שנמצא מחוץ לגבולות גזרה:

נניח שהגדרתם את גבולות הגזרה הבאים:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 - projects/222 restrictedServices: - compute.googleapis.com - containerregistry.googleapis.com title: Example
עכשיו צריך לתת הרשאת קריאה לקובצי אימג' ב-project 999, שנמצא בארגון אחר. לאחר מכן מגדירים את כלל היציאה הבא בקובץ ושומרים את הקובץ בשם compute.yaml:
echo """
- egressTo:
operations:
- serviceName: compute.googleapis.com
methodSelectors:
- method: InstancesService.Insert
resources:
- projects/999
egressFrom:
identityType: ANY_IDENTITY
""" > compute.yaml
מריצים את הפקודה הבאה כדי להחיל את כלל התעבורה היוצאת:
gcloud beta access-context-manager perimeters update Example --set-egress-policies=compute.yaml
קריאת מערך נתונים ב-BigQuery על ידי מתן גישה פרטית מרשת VPC מחוץ להיקף
בתרשים הבא מוצגות כמה רשתות VPC של שותפים מחוץ לגבולות גזרה שצריכות לקרוא ממשאב BigQuery בתוך גבולות גזרה:

אפשר להניח שאתם משתמשים באותו היקף כמו בדוגמה 1:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - bigquery.googleapis.com - containerregistry.googleapis.com title: Example
המטרה היא לאפשר גישת קריאה מרשת VPC מחוץ לגבולות הגזרה של שותפים שונים. מגדירים את כלל ה-Ingress הבא בקובץ ושומרים את הקובץ בשם partneringress.yaml:
echo """
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/888
- resource: projects/999
ingressTo:
operations:
- serviceName: bigquery.googleapis.com
methodSelectors:
- permission: bigquery.datasets.get
- permission: bigquery.tables.list
- permission: bigquery.tables.get
- permission: bigquery.tables.getData
- permission: bigquery.jobs.create
resources:
- \"*\"
""" > partneringress.yaml
מריצים את הפקודה הבאה כדי להחיל את כלל הכניסה:
gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml
כדי לספק גמישות ושליטה רבות יותר, ב-BigQuery נעשה שימוש ב-- permission: methodSelectors ולא ב-- method: methodSelectors שמשמש את רוב השירותים. שיטה אחת של BigQuery (RunQuery) יכולה לפעול בדרכים שונות על כמה משאבים שונים, והתאמה למודל ההרשאות מאפשרת גמישות ושליטה רבות יותר.
טעינה לקטגוריה של Cloud Storage (כתיבה) על ידי מתן גישה פרטית מרשת VPC מחוץ להיקף
אפשר להניח שאתם משתמשים באותו היקף כמו בדוגמה 1:
name: accessPolicies/222/servicePerimeters/Example status: resources: - projects/111 restrictedServices: - storage.googleapis.com - containerregistry.googleapis.com title: Example
המטרה היא לאפשר גישה מרשת VPC מחוץ לגבולות הגזרה כדי לאפשר לשותף לכתוב נתונים לקטגוריה בתוך גבולות הגזרה. מגדירים כלל כניסה ושומרים את הקובץ בשם partneringress.yaml:
echo """
- ingressFrom:
identityType: ANY_IDENTITY
sources:
- resource: projects/222
ingressTo:
operations:
- serviceName: storage.googleapis.com
methodSelectors:
- method: google.storage.objects.create
resources:
- \"*\"
""" > partneringress.yaml
מריצים את הפקודה הבאה כדי להחיל את כלל הכניסה:
gcloud beta access-context-manager perimeters update Example --set-ingress-policies=partneringress.yaml
שיתוף יומנים בגבולות גזרה נפרדים על ידי מתן הרשאה לפרויקטים מכמה גבולות גזרה לשתף יומנים
בתרחיש השימוש הזה, נניח שיש לארגון פרויקט משותף לאיסוף נתוני יומן מכל הפריסה שלו. Google Cloud הארגון צריך להיות מסוגל לרשום ביומן נתונים מכמה מתחמי אבטחה שונים של VPC Service Controls בפרויקט היומנים המשותף, שנמצא במתחם אבטחה משלו. לפרויקט היומנים לא צריכה להיות גישה למשאבים אחרים מלבד היומנים.
נניח שהגדרתם את שלושת ההיקפים הבאים:
# Sensitive 1
name: accessPolicies/222/servicePerimeters/Sensitive1
status:
resources:
- projects/111
restrictedServices:
- bigquery.googleapis.com
- containerregistry.googleapis.com
- logging.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: Sensitive Data 1
# Sensitive 2
name: accessPolicies/222/servicePerimeters/Sensitive2
status:
resources:
- projects/222
restrictedServices:
- bigquery.googleapis.com
- containerregistry.googleapis.com
- logging.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: Sensitive Data 2
#Logs
name: accessPolicies/222/servicePerimeters/Logs
status:
resources:
- projects/777
restrictedServices:
- logging.googleapis.com
vpcAccessibleServices:
enableRestriction: true
allowedServices:
- RESTRICTED_SERVICES
title: Logs Perimeter
כדי לאפשר ל-Sensitive1 ול-Sensitive2 לכתוב רישומים בגבולות הגזרה של הרישומים, מגדירים את כלל תעבורת הנתונים היוצאת (egress) הבא בקובץ ושומרים את הקובץ בשם logsegress.yaml:
echo """
- egressTo:
operations:
- serviceName: logging.googleapis.com
methodSelectors:
- method: LoggingServiceV2.WriteLogEntries
- method: LoggingService.WriteLogEntries
resources:
- projects/777
egressFrom:
identityType: ANY_IDENTITY
""" > logsegress.yaml
מריצים את הפקודות הבאות כדי להחיל את כללי תעבורת הנתונים היוצאת (egress):
gcloud beta access-context-manager perimeters update Sensitive1 --set-egress-policies=logsegress.yaml
gcloud beta access-context-manager perimeters update Sensitive2 --set-egress-policies=logsegress.yaml
אפשר לציין הגדרה דומה לכל גבולות גזרה אחרים של מידע אישי רגיש שצריך לכתוב לרישומים של גבולות הגזרה.
המאמרים הבאים
- הגדרת מדיניות לתעבורת נתונים נכנסת ויוצאת
- בקרת גישה מבוססת-הקשר עם כללי כניסה
- כללים לתעבורת נתונים נכנסת ויוצאת