Konfigurasi Kontrol Layanan VPC untuk SAP BDC

Kontrol Layanan VPC (VPC SC) membantu Anda mengamankan pertukaran data antara Google Cloud dan SAP Business Data Cloud (BDC). Bergantung pada arah integrasi, Anda dapat mengonfigurasi aturan egress untuk mengkueri tabel SAP dari Google Cloud atau aturan ingress untuk memublikasikan data ke SAP BDC.

Aturan egress untuk membuat kueri SAP

Anda mungkin melihat error ini saat mengkueri 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 tidak berada dalam 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 agar BigQuery dapat 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 responsnya 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 telah diperbarui:

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

Aturan ingress untuk memublikasikan data ke SAP

SAP perlu mengkueri BigLake API untuk membaca tabel Apache Iceberg yang dikelola oleh Lakehouse. Aturan Kontrol Layanan VPC 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 akun utama gabungan SAP mengakses BigLake 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 BigLake API jika respons berisi:

    resources:
    - projects/PROJECT_ID
    ...
    restrictedServices:
    - biglake.googleapis.com
    
  2. Ekspor aturan ingress saat ini dan tambahkan aturan untuk mengizinkan akun utama 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 akun utama 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 telah diperbarui:

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

Langkah berikutnya