VPC Service Controls-Konfiguration für SAP BDC

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

Abhängig von Ihrer Integration müssen Sie Regeln für die folgenden Datenflüsse konfigurieren:

  • SAP-Daten abfragen (SAP zu BDC): Wenn Sie SAP-Tabellen ausGoogle Cloudabfragen möchten, müssen Sie eine Egress-Regel konfigurieren.
  • Daten in SAP veröffentlichen (BDC in SAP): Wenn Sie Daten in SAP veröffentlichen möchten, müssen Sie eine Eingangsregel konfigurieren.

Regeln für ausgehenden Traffic für Abfragen von SAP

Dieser Fehler kann beim Abfragen von SAP-Tabellen auftreten:

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

Das liegt daran, dass BigQuery externe Cloud Storage-Buckets lesen muss, in denen die Tabellendaten gehostet werden. Wenn Ihr Perimeter storage.googleapis.com einschränkt, erhalten Sie möglicherweise einen RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER-Fehler, 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, die sich nicht im selben Perimeter befinden.

Regeln für ausgehenden Traffic konfigurieren

Diese Konfiguration gilt, wenn Ihre SAP-Umgebung aufGoogle Cloudbereitgestellt wird.

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

  1. Überprü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 hängen Sie eine Regel an, 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.

    Hängen Sie diese Regel an egress-policies.yaml an, 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
    

    Aktualisierte Egress-Richtlinien prüfen:

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

Regeln für eingehenden Traffic für die Veröffentlichung 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 biglake.googleapis.com-Dienst einschränkt.

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

Regeln für eingehenden Traffic konfigurieren

  1. Überprü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 hängen Sie eine Regel an, mit der SAP-Verbundidentitäten 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.

    Hängen Sie eine Regel für das föderierte SAP-Hauptkonto an:

    - 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 SAP-seitigen Aussteller für die Arbeitslast ausgestellt wurde.
  3. Aktualisieren Sie den Dienstperimeter:

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

    Aktualisierte Richtlinien prüfen:

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

Nächste Schritte