הגדרת VPC Service Controls ל-SAP BDC

בעזרת VPC Service Controls ‏ (VPC SC) אתם יכולים לאבטח את חילופי הנתונים ביןGoogle Cloud לבין SAP Business Data Cloud ‏ (BDC). בהתאם לכיוון השילוב, אתם יכולים להגדיר כללים לתעבורת נתונים יוצאת (egress) כדי לשלוח שאילתות לטבלאות SAP מ- Google Cloud , או כללים לתעבורת נתונים נכנסת (ingress) כדי לפרסם נתונים ב-SAP BDC.

כללים לתעבורת נתונים יוצאת (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 לשאילתות בטבלאות.

  1. בודקים את ההיקף הנוכחי.

    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
    
  2. מייצאים את כללי התעבורה היוצאת הנוכחיים ומוסיפים כלל שמאפשר קריאה של קטגוריות ב-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:
        - '*'
    
  3. מעדכנים את גבולות הגזרה לשירות:

    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)

  1. בודקים את ההיקף הנוכחי.

    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
    
  2. מייצאים את הכללים הנוכחיים לתעבורת נתונים נכנסת (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 לעומס העבודה.
  3. מעדכנים את גבולות הגזרה לשירות:

    gcloud access-context-manager perimeters update ${PERIMETER_NAME} \
        --set-ingress-policies=ingress-policies.yaml
    

    מאמתים את כללי המדיניות המעודכנים:

    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

המאמרים הבאים