Di katalog runtime Lakehouse, aturan perimeter Kontrol Layanan VPC untuk endpoint katalog gabungan memungkinkan Anda mengkueri tabel Apache Iceberg eksternal di BigQuery sekaligus membantu mencegah pemindahan data yang tidak sah. Jika Google Cloud project atau bucket Cloud Storage Anda berada di dalam perimeter layanan, Anda dapat mengonfigurasi aturan egress untuk Amazon S3 dan Microsoft Azure Data Lake Storage (ADLS) Gen2 atau aturan ingress untuk Cloud Storage. Aturan ini mengizinkan sinkronisasi metadata dan kueri untuk tabel yang terdaftar di AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog, dan Workday Data Lake.
Jika project Anda tidak berada di dalam perimeter layanan, endpoint katalog gabungan akan berfungsi tanpa konfigurasi Kontrol Layanan VPC. Untuk koneksi lintas cloud ke SAP Business Data Cloud (SAP BDC), lihat Konfigurasi Kontrol Layanan VPC untuk SAP BDC. Untuk melindungi bucket yang diakses melalui endpoint katalog REST Apache Iceberg dalam mode penjualan kredensial, lihat Menggunakan Kontrol Layanan VPC dengan penjualan kredensial.
Sebelum memulai
- Siapkan endpoint katalog gabungan untuk AWS Glue Data Catalog, Databricks Unity Catalog, Snowflake Horizon Catalog, atau Workday Data Lake.
Buat satu atau beberapa perimeter layanan untuk project Anda, bergantung pada tempat file tabel Anda disimpan:
- Penyimpanan cloud eksternal (Amazon S3 atau ADLS Gen2): lindungi project endpoint katalog gabungan Anda dengan perimeter yang membatasi
biglake.googleapis.comdanbigquery.googleapis.com. Untuk aturan egress yang diperlukan, lihat Menambahkan aturan egress untuk penyimpanan cloud eksternal. - Cloud Storage: melindungi project bucket Cloud Storage Anda dengan perimeter yang membatasi
storage.googleapis.com. Project bucket dan project endpoint katalog gabungan dapat berbagi satu perimeter atau berada di perimeter terpisah. Untuk aturan ingress yang diperlukan, lihat Menambahkan aturan ingress untuk bucket Cloud Storage dalam perimeter layanan.
- Penyimpanan cloud eksternal (Amazon S3 atau ADLS Gen2): lindungi project endpoint katalog gabungan Anda dengan perimeter yang membatasi
Jika pengguna atau akun layanan di luar perimeter mengkueri endpoint katalog gabungan, tambahkan aturan ingress yang mengizinkan mereka masuk ke perimeter project endpoint katalog.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk mengonfigurasi perimeter layanan, minta administrator untuk memberi Anda peran IAM berikut di organisasi Anda:
-
Mengonfigurasi perimeter layanan dan kebijakan ingress atau egress:
Editor Access Context Manager (
roles/accesscontextmanager.policyEditor)
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Anda mungkin juga bisa mendapatkan izin yang diperlukan melalui peran khusus atau peran bawaan lainnya.
Kasus penggunaan dan aturan perimeter yang diperlukan
Aturan perimeter yang Anda konfigurasi bergantung pada tempat file tabel Anda berada dan tempat pemanggil kueri Anda berjalan:
| Kasus penggunaan | Aturan perimeter yang diperlukan | Langkah konfigurasi |
|---|---|---|
Membuat kueri tabel lintas cloud di Amazon S3 atau ADLS Gen2: membuat kueri tabel Apache Iceberg di bucket s3:// atau container abfss:// melalui endpoint katalog gabungan dalam project BigQuery yang dilindungi sekaligus memblokir egress eksternal yang tidak sah. |
Tambahkan aturan egress pada perimeter project endpoint katalog yang memungkinkan akun layanan blirc-... endpoint katalog dan akun utama kueri Anda membaca bucket atau container eksternal yang disetujui. |
Temukan akun layanan endpoint katalog, lalu tambahkan aturan egress untuk penyimpanan cloud eksternal. |
Mengakses tabel katalog eksternal di bucket Cloud Storage yang dilindungi: membuat kueri tabel Databricks Unity Catalog atau Snowflake Horizon Catalog yang disimpan di bucket gs:// di dalam perimeter yang membatasi storage.googleapis.com (bahkan dalam project dan perimeter yang sama dengan endpoint katalog gabungan). |
Tambahkan aturan ingress pada perimeter project bucket Cloud Storage yang memungkinkan akun layanan Google Cloud katalog jarak jauh mengakses storage.googleapis.com. |
Tambahkan aturan ingress untuk bucket Cloud Storage di perimeter layanan. |
| Mengizinkan kueri dari pemanggil di luar perimeter endpoint katalog: menjalankan tugas BigQuery di project endpoint katalog dari akun analis, alat BI, atau akun layanan workload yang berada di luar perimeter. | Tambahkan aturan ingress pada perimeter project endpoint katalog yang mengizinkan pemanggil eksternal ke bigquery.googleapis.com dan biglake.googleapis.com, selain aturan penyimpanan untuk lokasi tabel Anda. |
Konfigurasikan ingress pemanggil menggunakan referensi aturan ingress, lalu ikuti prosedur penyimpanan untuk lokasi tabel Anda. |
Cara Kontrol Layanan VPC mengevaluasi traffic endpoint katalog gabungan
Endpoint katalog gabungan melakukan dua operasi berbeda yang membaca dari penyimpanan dasar Anda: sinkronisasi metadata dan kueri BigQuery. Cara Kontrol Layanan VPC mengevaluasi operasi ini bergantung pada tempat file tabel Anda disimpan:
Penyimpanan cloud eksternal (Amazon S3 atau Azure Data Lake Storage Gen2): Kontrol Layanan VPC mengevaluasi traffic keluar dari perimeter layanan project endpoint katalog terhadap identitas pemanggil di Google Cloud dan bucket atau container eksternal target:
Operasi Identitas dievaluasi Resource dievaluasi Sinkronisasi metadata Akun layanan Lakehouse yang disediakan secara otomatis oleh endpoint katalog ( blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com)Bucket atau container eksternal yang menyimpan metadata Apache Iceberg tabel Kueri Akun pengguna atau layanan yang menjalankan tugas BigQuery Bucket atau container eksternal yang menyimpan metadata dan file data tabel Untuk tabel yang disimpan di Amazon S3 atau ADLS Gen2, aturan egress perimeter Anda harus menyertakan semua hal berikut:
- Identitas: akun layanan endpoint katalog dan akun utama kueri Anda.
- Resource eksternal: setiap bucket atau container yang digunakan tabel Anda untuk metadata dan file data.
- Operations:
bigquery.googleapis.com(dengan izinexternalResource.read) danbiglake.googleapis.com(dengan semua metode,'*').
Cloud Storage (lokasi eksternal Databricks Unity Catalog atau Snowflake Horizon Catalog di Google Cloud): selama sinkronisasi metadata dan kueri BigQuery, BigQuery dan Lakehouse membaca dari Cloud Storage menggunakan kredensial yang dicakupkan ke bawah yang disediakan oleh katalog jarak jauh, bukan akun layanan
blirc-...endpoint katalog. Jika project bucket Cloud Storage berada di dalam perimeter layanan yang membatasistorage.googleapis.com,storage.googleapis.comakan mengevaluasi akun layanan Google Cloud katalog jarak jauh sebagai identitas eksternal yang mencoba ingress perimeter. Evaluasi ini berlaku bahkan saat bucket berada dalam project dan perimeter layanan yang sama dengan endpoint katalog gabungan. Anda harus menambahkan aturan ingress ke perimeter layanan project bucket yang memungkinkan akun layanan katalog jarak jauh Google Cloud mengaksesstorage.googleapis.com.
Kontrol Layanan VPC hanya mengevaluasi pembacaan penyimpanan yang dilakukan oleh BigQuery dan Lakehouse (biglake.googleapis.com).
Kontrol Layanan VPC tidak mengevaluasi panggilan yang dilakukan Lakehouse ke endpoint API katalog jarak jauh (seperti mencantumkan namespace dan tabel), dan tidak mengatur mesin kueri eksternal yang membaca penyimpanan Anda secara langsung.
Format resource eksternal
Tentukan resource eksternal dalam aturan egress sebagai URI bucket atau container yang tepat.
Jalur objek dan karakter pengganti tidak didukung. Nama bucket, container, dan akun penyimpanan harus menggunakan huruf kecil; aturan yang berisi karakter huruf besar dalam nama ini akan ditolak saat Anda menyimpan aturan. URI Azure Data Lake
Storage Gen2 (abfss://) dan Azure Blob Storage (azure://)
tidak dapat dipertukarkan dalam aturan egress Kontrol Layanan VPC; untuk endpoint katalog
gabungan, Anda harus menentukan format abfss://.
Tabel berikut menunjukkan format URI resource eksternal yang didukung untuk endpoint katalog gabungan:
| Layanan penyimpanan | Format | Contoh |
|---|---|---|
| Amazon S3 | s3://BUCKET_NAME |
s3://my-iceberg-warehouse |
| Azure Data Lake Storage Gen2 | abfss://CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net |
abfss://unity-catalog-storage@mystorageaccount.dfs.core.windows.net |
Menemukan akun layanan endpoint katalog
Lakehouse menyediakan akun layanan khusus untuk setiap endpoint katalog gabungan saat Anda membuat endpoint katalog. Untuk tabel di Cloud Storage, lanjutkan ke Menambahkan aturan ingress untuk bucket Cloud Storage di perimeter layanan. Jika tabel Anda disimpan di Amazon S3 atau ADLS Gen2, ambil alamat email akun layanan ini untuk aturan egress Anda:
gcloud biglake iceberg catalogs describe CATALOG_ID \
--project=PROJECT_ID \
--format='value(biglake-service-account)'
Ganti kode berikut:
CATALOG_ID: ID endpoint katalog gabungan Anda.PROJECT_ID: ID project Google Cloud yang berisi endpoint katalog gabungan.
Perintah ini menampilkan alamat email dalam format berikut:
blirc-PROJECT_NUMBER-ID@gcp-sa-biglakerestcatalog.iam.gserviceaccount.com
Menambahkan aturan egress untuk penyimpanan cloud eksternal
Jika tabel yang diakses melalui endpoint katalog gabungan Anda disimpan di Amazon S3 atau ADLS Gen2, tambahkan aturan egress ke perimeter layanan yang melindungi project endpoint katalog Anda.
Konsol
Di konsol Google Cloud , buka halaman Kontrol Layanan VPC.
Pilih organisasi dan kebijakan akses Anda, lalu klik nama perimeter layanan yang berisi project endpoint katalog Anda.
Klik Edit, lalu di bagian Egress policy, klik Add an egress rule.
Di bagian From, di bagian Identities, pilih Select identities & groups, klik Add identities, lalu tambahkan akun layanan endpoint katalog dan pengguna atau akun layanan yang menjalankan kueri.
Di bagian To:
- Pilih External resources, klik Add resources, masukkan setiap bucket
s3://atau containerabfss://yang digunakan tabel Anda, lalu klik Add external resources. - Di bagian Operations or IAM roles, konfigurasikan layanan berikut
di tabel API operations:
- BigQuery API (
bigquery.googleapis.com): untuk membatasi entri semua metode default (*) ke akses hanya baca, buka menu tindakan untukbigquery.googleapis.comdan klik Edit, pilih Select methods, pilih izinexternalResource.read, dan klik Add selected methods. - BigLake API (
biglake.googleapis.com): klik Add operations, pilih BigLake API (biglake.googleapis.com), pilih All methods, lalu klik Add all methods.
- BigQuery API (
- Pilih External resources, klik Add resources, masukkan setiap bucket
Klik Simpan.
gcloud CLI
Buat file bernama
egress.yamlyang menentukan akun layanan endpoint katalog, akun utama kueri, dan setiap bucket atau container eksternal yang digunakan tabel Anda. Untuk skema lengkap, lihat referensi aturan egress.- egressFrom: identities: - serviceAccount:CATALOG_ENDPOINT_SERVICE_ACCOUNT - user:QUERY_USER_EMAIL egressTo: externalResources: - s3://S3_BUCKET_NAME - abfss://ADLS_CONTAINER@STORAGE_ACCOUNT.dfs.core.windows.net operations: - serviceName: bigquery.googleapis.com methodSelectors: - permission: externalResource.read - serviceName: biglake.googleapis.com methodSelectors: - method: '*'Ganti kode berikut:
CATALOG_ENDPOINT_SERVICE_ACCOUNT: alamat email akun layanan endpoint katalog yang Anda ambil sebelumnya.QUERY_USER_EMAIL: alamat email pengguna atau akun layanan yang menjalankan kueri melalui endpoint katalog gabungan. Untuk akun layanan, gunakan awalanserviceAccount:, bukanuser:. Atau, gantiidentitiesdenganidentityType: ANY_IDENTITYuntuk mengizinkan akun utama mana pun di perimeter.S3_BUCKET_NAME,ADLS_CONTAINER, danSTORAGE_ACCOUNT: lokasi penyimpanan eksternal yang menyimpan file data dan metadata tabel Anda. Sertakan hanya entri yang berlaku untuk penyedia penyimpanan Anda.
Temukan ID numerik kebijakan akses organisasi Anda:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Ganti
ORGANIZATION_IDdengan ID organisasi numerik Anda.Terapkan aturan egress ke perimeter layanan Anda:
gcloud access-context-manager perimeters update PERIMETER_NAME \ --policy=POLICY_ID \ --set-egress-policies=egress.yamlGanti kode berikut:
PERIMETER_NAME: nama perimeter layanan Anda.POLICY_ID: ID numerik kebijakan akses Anda.
Untuk menguji aturan sebelum menerapkannya, terapkan aturan ke konfigurasi uji coba menggunakan
gcloud access-context-manager perimeters dry-run updatedan terapkan setelah validasi menggunakangcloud access-context-manager perimeters dry-run enforce.Pastikan aturan aktif:
gcloud access-context-manager perimeters describe PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.egressPolicies)'
Menambahkan aturan ingress untuk bucket Cloud Storage di perimeter layanan
Jika tabel dalam katalog jarak jauh (seperti Databricks Unity Catalog atau Snowflake Horizon Catalog) disimpan dalam bucket Cloud Storage yang dilindungi oleh perimeter yang membatasi storage.googleapis.com, tambahkan aturan ingress ke perimeter layanan project bucket. Karena BigQuery dan Lakehouse melakukan autentikasi ke Cloud Storage menggunakan akun layanan Google Cloud katalog jarak jauh (bukan akun layanan blirc-...), aturan ini diperlukan meskipun bucket berada dalam project dan perimeter yang sama dengan endpoint katalog gabungan.
Konsol
Di konsol Google Cloud , buka halaman Kontrol Layanan VPC.
Pilih organisasi dan kebijakan akses Anda, lalu klik nama perimeter layanan yang melindungi project yang berisi bucket Cloud Storage Anda.
Klik Edit, lalu di bagian Ingress policy, klik Add an ingress rule.
Di bagian Dari:
- Di bagian Identities, pilih Select identities & groups, klik Add identities, lalu tambahkan akun layanan Google Cloud yang disediakan oleh katalog jarak jauh untuk bucket Cloud Storage Anda.
- Di bagian Sumber, pilih Semua sumber (atau pilih Pilih sumber untuk menentukan tingkat akses).
Di bagian To:
- Di bagian Referensi, pilih Pilih referensi. Di tab Projects, klik Add projects, pilih project yang berisi bucket Cloud Storage Anda, lalu klik Add selected projects.
- Di bagian Operations or IAM roles, pilih Select operations,
klik Add operations, pilih Cloud Storage API
(
storage.googleapis.com), pilih All methods, lalu klik Add all methods. Atau, pilih Select methods untuk memilih metode layanan yang didukung tertentu (sepertigoogle.storage.objects.get,google.storage.objects.list, dangoogle.storage.buckets.get), lalu klik Add selected methods.
Klik Simpan.
gcloud CLI
Buat file bernama
ingress.yamlyang memungkinkan akun layananGoogle Cloud katalog jarak jauh mengaksesstorage.googleapis.comdi project bucket. Untuk skema lengkap, lihat referensi aturan ingress.- ingressFrom: identities: - serviceAccount:REMOTE_CATALOG_GCS_SERVICE_ACCOUNT sources: - accessLevel: '*' ingressTo: operations: - serviceName: storage.googleapis.com methodSelectors: - method: '*' resources: - projects/BUCKET_PROJECT_NUMBERGanti kode berikut:
REMOTE_CATALOG_GCS_SERVICE_ACCOUNT: alamat email akun layananGoogle Cloud yang disediakan oleh katalog jarak jauh untuk mengakses bucket Cloud Storage Anda (misalnya, dariDESCRIBE STORAGE CREDENTIALdi Databricks Unity Catalog atauDESC EXTERNAL VOLUMEdi Snowflake Horizon Catalog).BUCKET_PROJECT_NUMBER: nomor project numerik dari project yang berisi bucket Cloud Storage.
Temukan ID numerik kebijakan akses organisasi Anda:
gcloud access-context-manager policies list \ --organization=ORGANIZATION_ID \ --format='value(name)'Ganti
ORGANIZATION_IDdengan ID organisasi numerik Anda.Terapkan aturan ingress ke perimeter layanan yang melindungi project bucket:
gcloud access-context-manager perimeters update BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --set-ingress-policies=ingress.yamlGanti kode berikut:
BUCKET_PERIMETER_NAME: nama perimeter layanan yang melindungi project bucket.POLICY_ID: ID numerik kebijakan akses Anda.
Untuk menguji aturan sebelum menerapkannya, terapkan aturan ke konfigurasi uji coba menggunakan
gcloud access-context-manager perimeters dry-run updatedan terapkan setelah validasi menggunakangcloud access-context-manager perimeters dry-run enforce.Pastikan aturan aktif:
gcloud access-context-manager perimeters describe BUCKET_PERIMETER_NAME \ --policy=POLICY_ID \ --format='yaml(status.ingressPolicies)'
Memverifikasi konfigurasi
Pembaruan kebijakan perimeter layanan dapat memerlukan waktu hingga 30 menit untuk diterapkan. Setelah aturan Anda diterapkan, pastikan sinkronisasi metadata dan kueri BigQuery selesai tanpa penolakan Kontrol Layanan VPC:
Tunggu hingga siklus sinkronisasi metadata terjadwal berikutnya selesai, lalu periksa log audit Kebijakan Ditolak di Cloud Audit Logs untuk mengonfirmasi bahwa tidak ada pelanggaran Kontrol Layanan VPC yang terjadi. Sinkronisasi berjalan secara otomatis sesuai jadwal pemuatannya dan tidak dapat dipicu secara manual.
Di Logs Explorer, pilih project yang dilindungi—project endpoint katalog Anda untuk penyimpanan cloud eksternal, atau project bucket Cloud Storage Anda untuk tabel Cloud Storage. Untuk mengetahui informasi selengkapnya, lihat Mengambil error Kontrol Layanan VPC dari log audit. Jalankan kueri berikut:
log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata"Jika entri pelanggaran muncul setelah aturan Anda diterapkan, periksa kolom
egressViolations.targetResource,ingressViolations.targetResource, danauthenticationInfo.principalEmaildalam entri log untuk mengonfirmasi bahwa entri tersebut cocok dengan resource dan identitas dalam aturan Anda. Jika tabel baru gagal disinkronkan dan tidak ada entriVpcServiceControlAuditMetadatayang muncul, periksa izin dan kredensial katalog jarak jauh Anda; lihat Memecahkan masalah akses data lintas cloud.Jalankan kueri pengujian terhadap tabel di BigQuery menggunakan konvensi penamaan P.C.N.T (Project.Catalog.Namespace.Table) empat bagian:
SELECT COUNT(*) FROM `PROJECT_ID.CATALOG_ID.NAMESPACE.TABLE_NAME`;Ganti kode berikut:
PROJECT_ID: ID project Google Cloud yang berisi endpoint katalog gabungan.CATALOG_ID: ID endpoint katalog gabungan Anda.NAMESPACE: namespace di endpoint katalog gabungan.TABLE_NAME: nama tabel dalam namespace.
Jika kueri diblokir oleh Kontrol Layanan VPC, pesan error akan menyertakan nilai
vpcServiceControlsUniqueIdentifier. Filter Log audit Policy Denied di Logs Explorer dengan mencocokkanprotoPayload.metadata.vpcServiceControlsUniqueIddengan ID tersebut:log_id("cloudaudit.googleapis.com/policy") protoPayload.metadata.@type:"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata" protoPayload.metadata.vpcServiceControlsUniqueId="UNIQUE_IDENTIFIER"Ganti
UNIQUE_IDENTIFIERdengan nilaivpcServiceControlsUniqueIdentifierdari pesan error.
Langkah berikutnya
- Membuat kueri data jarak jauh
- Ringkasan penyediaan kredensial
- Aturan ingress dan egress Kontrol Layanan VPC
- Memecahkan masalah akses data lintas cloud