כללים לתעבורת נתונים יוצאת (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, אתם צריכים להגדיר כלל תעבורת נתונים יוצאת (egress) כדי לאפשר ל-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
כדי לקרוא טבלאות Apache Iceberg שמנוהלות על ידי Lakehouse, צריך לשלוח שאילתות ל-BigLake API מ-SAP. הכללים של VPC Service Controls עשויים לחסום את זה אם היקף הפרויקט מגביל את השירות biglake.googleapis.com.
אם בפרויקט שלכם נאכף VPC Service Controls, והיקף ההרשאות שמוגדר בפרויקט מגביל את השירות biglake.googleapis.com, אתם צריכים להגדיר כלל תעבורת נתונים נכנסת (ingress) כדי לאפשר לחשבונות הראשיים המשותפים של SAP לגשת ל-BigLake API.
הגדרת כללי תעבורת נתונים נכנסת (ingress)
בודקים את ההיקף הנוכחי.
PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER gcloud access-context-manager perimeters describe ${PERIMETER_NAME}מחליפים את מה שכתוב בשדות הבאים:
-
ACCESS_POLICY: מדיניות הגישה. -
PERIMETER: גבולות הגזרה לשירות.
גבולות הגזרה לשירות יכולים להגביל את BigLake API אם התשובה מכילה:
resources: - projects/PROJECT_ID ... restrictedServices: - biglake.googleapis.com-
מייצאים את הכללים הנוכחיים לתעבורת נתונים נכנסת (ingress) ומוסיפים כלל שמאפשר לחשבונות המשתמשים המאוחדים של SAP להפעיל ממשקי Lakehouse API.
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}