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

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

בהתאם לשילוב, צריך להגדיר כללים לזרימות הנתונים הבאות:

  • שליחת שאילתות לנתוני 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 לשאילתות בטבלה.

  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

מערכת SAP צריכה לשלוח שאילתה ל-Lakehouse API כדי לקרוא טבלאות של Lakehouse. יכול להיות שהכללים של VPC SC יחסמו את זה אם גבולות הגזרה של הפרויקט מגבילים את השירות biglake.googleapis.com.

אם בפרויקט שלכם נאכף VPC Service Controls, וגבולות הגזרה שמוחלים על הפרויקט מגבילים את השירות biglake.googleapis.com, עליכם להגדיר כלל לתעבורת נתונים נכנסת (ingress) כדי לאפשר לישויות מורשות מאוחדות של SAP לגשת אל Lakehouse APIs.

הגדרת כללים לתעבורת נתונים נכנסת (ingress)

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

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

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

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

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

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