VPC Service Controls-Konfiguration für SAP BDC

In diesem Dokument wird erläutert, wie Sie Regeln für ausgehenden und eingehenden Traffic für VPC Service Controls (VPC SC) für SAP Business Data Cloud (BDC) konfigurieren.

Je nach Integration müssen Sie Regeln für die folgenden Datenflüsse konfigurieren:

  • SAP-Daten abfragen (SAP zu BDC): Wenn Sie SAP-Tabellen aus Google Cloudabfragen möchten, müssen Sie eine Regel für ausgehenden Traffic konfigurieren.
  • Daten in SAP veröffentlichen (BDC zu SAP) : Wenn Sie Daten in SAP veröffentlichen möchten, müssen Sie eine Regel für eingehenden Traffic konfigurieren.

Regeln für ausgehenden Traffic zum Abfragen von SAP

Beim Abfragen von SAP-Tabellen wird möglicherweise der folgende Fehler angezeigt:

VPC Service Controls: Request is prohibited by organization's policy. File: gs://example-bucket/path/to/file

Dieser Fehler tritt auf, weil BigQuery externe Cloud Storage-Buckets lesen muss, in denen die Tabellendaten gehostet werden. Wenn Ihr Perimeter storage.googleapis.com einschränkt, wird möglicherweise der Fehler RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER angezeigt, weil sich der externe Bucket außerhalb Ihres Perimeters befindet. Konfigurieren Sie eine Regel für ausgehenden Traffic, um dieses Problem zu beheben. Weitere Informationen finden Sie unter Ressourcen befinden sich nicht im selben Perimeter.

Regeln für ausgehenden Traffic konfigurieren

Diese Konfiguration gilt, wenn Ihre SAP-Umgebung in bereitgestellt wird Google Cloud.

Wenn in Ihrem Projekt VPC Service Controls verwendet wird und der Perimeter storage.googleapis.com einschränkt, müssen Sie eine Regel für ausgehenden Traffic konfigurieren, damit BigQuery SAP Cloud Storage-Buckets für Tabellenabfragen lesen kann.

  1. Prüfen Sie den aktuellen Perimeter.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    Ersetzen Sie Folgendes:

    • ACCESS_POLICY: Ihre Zugriffsrichtlinie.
    • PERIMETER: Ihr Dienstperimeter.

    Ihr Perimeter schränkt das Lesen von Cloud Storage-Bucket ein, wenn die Antwort Folgendes enthält:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - storage.googleapis.com
    
  2. Exportieren Sie die aktuellen Regeln für ausgehenden Traffic und fügen Sie eine Regel hinzu, um das Lesen von Cloud Storage-Buckets zu ermöglichen.

    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
    

    Ersetzen Sie Folgendes:

    • ACCESS_POLICY: Ihre Zugriffsrichtlinie.
    • PERIMETER: Ihr Dienstperimeter.

    Fügen Sie diese Regel zu egress-policies.yaml hinzu, damit Sie Cloud Storage-Buckets außerhalb des Perimeters lesen können:

    - 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. Aktualisieren Sie den Dienstperimeter:

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

    Prüfen Sie die aktualisierten Regeln für ausgehenden Traffic:

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

Regeln für eingehenden Traffic zum Veröffentlichen von Daten in SAP

SAP muss die Lakehouse API abfragen, um Lakehouse-Tabellen zu lesen. Ihre VPC SC-Regeln blockieren dies möglicherweise, wenn der Perimeter des Projekts den Dienst biglake.googleapis.com einschränkt.

Wenn in Ihrem Projekt VPC Service Controls erzwungen wird und der auf das Projekt angewendete Perimeter den Dienst biglake.googleapis.com einschränkt, müssen Sie eine Regel für eingehenden Traffic konfigurieren, damit SAP-Verbundprinzipale auf Lakehouse APIs zugreifen können.

Regeln für eingehenden Traffic konfigurieren

  1. Prüfen Sie den aktuellen Perimeter.

    PERIMETER_NAME=accessPolicies/ACCESS_POLICY/servicePerimeters/PERIMETER
    gcloud access-context-manager perimeters describe ${PERIMETER_NAME}
    

    Ersetzen Sie Folgendes:

    • ACCESS_POLICY: Ihre Zugriffsrichtlinie.
    • PERIMETER: Ihr Dienstperimeter.

    Ihr Dienstperimeter kann die Lakehouse API einschränken, wenn die Antwort Folgendes enthält:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Exportieren Sie die aktuellen Regeln für eingehenden Traffic und fügen Sie eine Regel hinzu, damit SAP-Verbundprinzipale Lakehouse APIs aufrufen können.

    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
    

    Ersetzen Sie Folgendes:

    • ACCESS_POLICY: Ihre Zugriffsrichtlinie.
    • PERIMETER: Ihr Dienstperimeter.

    Fügen Sie eine Regel für den SAP-Verbundprinzipale hinzu:

    - 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:
        - '*'
    

    Ersetzen Sie Folgendes:

    • PROJECT_ID: Die Projekt-ID des Projekts, das den Workload Identity-Pool enthält.
    • POOL_NAME: Der Name des Workload Identity-Pools.
    • SUBJECT: Die UUID, die vom Aussteller auf SAP-Seite für den Workload ausgegeben wurde.
  3. Aktualisieren Sie den Dienstperimeter:

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

    Prüfen Sie die aktualisierten Regeln:

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

Nächste Schritte