Konfigurasi Kontrol Layanan VPC untuk SAP BDC

Dokumen ini menjelaskan cara mengonfigurasi aturan egress dan ingress Kontrol Layanan VPC (VPC SC) untuk SAP Business Data Cloud (BDC).

Bergantung pada integrasi Anda, Anda harus mengonfigurasi aturan untuk aliran data berikut:

  • Membuat kueri data SAP (SAP ke BDC): Untuk membuat kueri tabel SAP dari Google Cloud, Anda harus mengonfigurasi aturan egress.
  • Memublikasikan data ke SAP (BDC ke SAP): Untuk memublikasikan data ke SAP, Anda harus mengonfigurasi aturan ingress.

Aturan egress untuk membuat kueri SAP

Anda mungkin melihat error ini saat membuat kueri tabel SAP:

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

Hal ini terjadi karena BigQuery harus membaca bucket eksternal Cloud Storage yang menghosting data tabel. Jika perimeter Anda membatasi storage.googleapis.com, Anda mungkin menerima error RESOURCES_NOT_IN_SAME_SERVICE_PERIMETER karena bucket eksternal berada di luar perimeter Anda. Untuk mengatasinya, konfigurasikan aturan egress. Untuk mengetahui informasi selengkapnya, lihat Resource yang tidak berada di perimeter yang sama.

Mengonfigurasi aturan egress

Konfigurasi ini berlaku jika lanskap SAP Anda di-deploy di Google Cloud.

Jika project Anda menggunakan Kontrol Layanan VPC dan perimeter membatasi storage.googleapis.com, Anda harus mengonfigurasi aturan egress untuk mengizinkan BigQuery membaca bucket Cloud Storage SAP untuk kueri tabel.

  1. Periksa perimeter saat ini.

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

    Ganti kode berikut:

    • ACCESS_POLICY: kebijakan akses Anda.
    • PERIMETER: perimeter layanan Anda.

    Perimeter Anda membatasi pembacaan bucket Cloud Storage jika respons mencakup:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - storage.googleapis.com
    
  2. Ekspor aturan egress saat ini dan tambahkan aturan untuk mengizinkan pembacaan bucket 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
    

    Ganti kode berikut:

    • ACCESS_POLICY: kebijakan akses Anda.
    • PERIMETER: perimeter layanan Anda.

    Tambahkan aturan ini ke egress-policies.yaml agar Anda dapat membaca bucket Cloud Storage di luar perimeter:

    - 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. Perbarui perimeter layanan:

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

    Verifikasi kebijakan egress yang diperbarui:

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

Aturan ingress untuk memublikasikan data ke SAP

SAP perlu membuat kueri Lakehouse API untuk membaca tabel Lakehouse. Aturan VPC SC Anda mungkin memblokir hal ini jika perimeter project membatasi layanan biglake.googleapis.com.

Jika project Anda menerapkan Kontrol Layanan VPC, dan perimeter yang diterapkan pada project membatasi layanan biglake.googleapis.com, Anda harus mengonfigurasi aturan ingress untuk mengizinkan principal gabungan SAP mengakses Lakehouse API.

Mengonfigurasi aturan ingress

  1. Periksa perimeter saat ini.

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

    Ganti kode berikut:

    • ACCESS_POLICY: kebijakan akses Anda.
    • PERIMETER: perimeter layanan Anda.

    Perimeter layanan Anda dapat membatasi Lakehouse API jika respons berisi:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Ekspor aturan ingress saat ini dan tambahkan aturan untuk mengizinkan principal gabungan SAP memanggil 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
    

    Ganti kode berikut:

    • ACCESS_POLICY: kebijakan akses Anda.
    • PERIMETER: perimeter layanan Anda.

    Tambahkan aturan untuk principal gabungan 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:
        - '*'
    

    Ganti kode berikut:

    • PROJECT_ID: project ID yang berisi workload identity pool.
    • POOL_NAME: nama workload identity pool.
    • SUBJECT: UUID yang dikeluarkan oleh penerbit sisi SAP untuk workload.
  3. Perbarui perimeter layanan:

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

    Verifikasi kebijakan yang diperbarui:

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

Langkah berikutnya