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.
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.comEkspor 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.yamlGanti kode berikut:
ACCESS_POLICY: kebijakan akses Anda.PERIMETER: perimeter layanan Anda.
Tambahkan aturan ini ke
egress-policies.yamlagar 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: - '*'Perbarui perimeter layanan:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-egress-policies=egress-policies.yamlVerifikasi 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
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.comEkspor 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.yamlGanti 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.
Perbarui perimeter layanan:
gcloud access-context-manager perimeters update ${PERIMETER_NAME} \ --set-ingress-policies=ingress-policies.yamlVerifikasi kebijakan yang telah diperbarui:
gcloud access-context-manager perimeters describe ${PERIMETER_NAME}