בהתאם לשילוב, צריך להגדיר כללים לזרימות הנתונים הבאות:
- שליחת שאילתות לנתוני SAP (מ-SAP ל-BDC): כדי לשלוח שאילתות לטבלאות SAP מ-Google Cloud, צריך להגדיר כלל לתעבורת נתונים יוצאת (egress).
- פרסום נתונים ב-SAP (BDC ל-SAP): כדי לפרסם נתונים ב-SAP, צריך להגדיר כלל לתעבורת נתונים נכנסת (ingress).
כללים לתעבורת נתונים יוצאת (egress) לשליחת שאילתות ל-SAP
יכול להיות שתראו את השגיאה הזו כשמבצעים שאילתות בטבלאות SAP:
VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file
הבעיה הזו מתרחשת כי BigQuery צריך לקרוא נתונים ממאגרי Cloud Storage חיצוניים שמארחים את נתוני הטבלה. אם ההיקף שלכם מגביל את storage.googleapis.com, יכול להיות שתקבלו שגיאה RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER כי הדלי החיצוני נמצא מחוץ להיקף שלכם. כדי לפתור את הבעיה, צריך להגדיר כלל ליציאה.
מידע נוסף זמין במאמר משאבים שלא נמצאים באותו היקף.
הגדרת כללים לתעבורת נתונים יוצאת (egress)
ההגדרה הזו רלוונטית אם סביבת SAP שלכם נפרסה ב-Google Cloud.
אם בפרויקט שלכם נעשה שימוש ב-VPC Service Controls וגבולות הגזרה מגבילים את storage.googleapis.com, אתם צריכים להגדיר כלל לתעבורת נתונים יוצאת כדי לאפשר ל-BigQuery לקרוא קטגוריות של SAP Cloud Storage לשאילתות בטבלה.
בודקים את ההיקף הנוכחי.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}מחליפים את מה שכתוב בשדות הבאים:
ACCESS_POLICY: מדיניות הגישה שלכם.-
PERIMETER: גבולות הגזרה לשירות.
גבולות הגזרה שלכם מגבילים קריאות של קטגוריות של Cloud Storage אם התגובה כוללת:
resources: - projects/PROJECT_ID ... restrictedServices: - storage.googleapis.comמייצאים את כללי היציאה הנוכחיים ומוסיפים כלל שמאפשר קריאה של קטגוריות ב-Cloud Storage.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME} \ --format="yaml(status.egressPolicies)" | sed '1,2d; s/^ //' > egress-policies.yamlמחליפים את מה שכתוב בשדות הבאים:
ACCESS_POLICY: מדיניות הגישה שלכם.-
PERIMETER: גבולות הגזרה לשירות.
מוסיפים את הכלל הזה ל-
egress-policies.yamlכדי לאפשר לכם לקרוא קטגוריות ב-Cloud Storage מחוץ להיקף:- egressFrom: identityType: ANY_IDENTITY egressTo: operations: - methodSelectors: - method: google.storage.buckets.get - method: google.storage.objects.get - method: google.storage.objects.list serviceName: storage.googleapis.com resources: - '*'מעדכנים את גבולות הגזרה לשירות:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlמאמתים את מדיניות היציאה המעודכנת:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
כללים לתעבורת נתונים נכנסת (ingress) לפרסום נתונים ב-SAP
מערכת SAP צריכה לשלוח שאילתה ל-Lakehouse API כדי לקרוא טבלאות של Lakehouse. יכול להיות שהכללים של VPC SC יחסמו את זה אם גבולות הגזרה של הפרויקט מגבילים את השירות biglake.googleapis.com.
אם בפרויקט שלכם נאכף VPC Service Controls, וגבולות הגזרה שמוחלים על הפרויקט מגבילים את השירות biglake.googleapis.com, עליכם להגדיר כלל לתעבורת נתונים נכנסת (ingress) כדי לאפשר לישויות מורשות מאוחדות של SAP לגשת אל Lakehouse APIs.
הגדרת כללים לתעבורת נתונים נכנסת (ingress)
בודקים את ההיקף הנוכחי.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}מחליפים את מה שכתוב בשדות הבאים:
ACCESS_POLICY: מדיניות הגישה שלכם.-
PERIMETER: גבולות הגזרה לשירות.
גבולות גזרה לשירות יכולים להגביל את Lakehouse API אם התגובה מכילה:
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.comמייצאים את כללי הכניסה הנוכחיים ומוסיפים כלל שמאפשר לחשבונות משתמשים מאוחדים של SAP להפעיל ממשקי API של Lakehouse.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME} \ --format="yaml(status.ingressPolicies)" | sed '1,2d; s/^ //' > ingress-policies.yamlמחליפים את מה שכתוב בשדות הבאים:
ACCESS_POLICY: מדיניות הגישה שלכם.-
PERIMETER: גבולות הגזרה לשירות.
מוסיפים כלל עבור חשבון משתמש מאוחד של SAP:
- ingressFrom: identities: - principal://iam.googleapis.com/projects/PROJECT_ID/locations/global/workloadIdentityPools/POOL_NAME/subject/SUBJECT sources: - accessLevel: '*' ingressTo: operations: - methodSelectors: - method: '*' serviceName: biglake.googleapis.com resources: - '*'מחליפים את מה שכתוב בשדות הבאים:
-
PROJECT_ID: מזהה הפרויקט שמכיל את מאגר הזהויות של עומסי העבודה. -
POOL_NAME: השם של מאגר הזהויות של עומסי העבודה. -
SUBJECT: המזהה הייחודי האוניברסלי (UUID) שהונפק על ידי המנפיק בצד SAP עבור עומס העבודה.
מעדכנים את גבולות הגזרה לשירות:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlמאמתים את המדיניות המעודכנת:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}