Koneksi lintas cloud ke Databricks Unity Catalog memungkinkan Anda mengkueri data dari katalog tersebut langsung di dalam Google Cloud. Kemampuan ini menyatukan analisis data Anda dengan mengintegrasikan sumber data eksternal dengan lingkungan Google Cloud yang ada.
Setelah menyiapkan koneksi, Anda dapat mengelola akses ke data gabungan di Lakehouse tanpa batas.
Sebelum memulai
- Tinjau Ringkasan Lakehouse untuk memahami cara Lakehouse mengelola akses ke data.
- Baca tentang mengakses data lintas cloud untuk memahami cara kerjanya.
- Tinjau katalog yang didukung untuk memverifikasi konfigurasi yang didukung.
- Memahami cara menggunakan secret Secret Manager regional. Hal ini diperlukan untuk menyiapkan Lakehouse dengan Databricks Unity Catalog menggunakan autentikasi berbasis secret.
- Opsional: Jika Anda berencana merutekan kueri melalui interkoneksi pribadi antara VPC Google Cloud dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS), pastikan Anda memiliki akun aktif dengan penyedia jarak jauh, sediakan Dedicated Cross-Cloud Interconnect atau Partner Cross-Cloud Interconnect, buat sesi BGP dengan Cloud Router, dan verifikasi bahwa Anda memiliki izin IAM yang diperlukan di kedua lingkungan cloud.
- Opsional: Jika Anda berencana menggunakan workforce identity federation untuk menerapkan
identitas pengguna akhir pada kueri, pastikan bahwa:
- Penyedia Identitas (IdP) Anda dikonfigurasi untuk menerbitkan klaim
emailpengguna sebagai klaim subjeksubdalam token autentikasi. - Akun Databricks Anda dikonfigurasi untuk mengenali pengguna akhir dari alamat email mereka sehingga Databricks dapat mengenali pengguna tersebut. Pengguna dapat dikonfigurasi di Databricks dengan menyinkronkan pengguna dari penyedia identitas Anda menggunakan SCIM (direkomendasikan) atau dengan menambahkan pengguna secara manual di Konsol Akun Databricks.
- Penyedia Identitas (IdP) Anda dikonfigurasi untuk menerbitkan klaim
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
Verify that billing is enabled for your Google Cloud project.
Enable the BigLake, Secret Manager APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.
Peran yang diperlukan
Untuk mendapatkan izin yang Anda perlukan untuk menyiapkan akses lintas cloud, minta administrator untuk memberi Anda peran IAM berikut pada project Anda:
-
Mengelola katalog Lakehouse:
BigLake Admin (
roles/biglake.admin) -
Mengelola secret (jika menggunakan autentikasi berbasis secret):
Secret Manager Admin (
roles/secretmanager.admin) -
Merutekan traffic melalui interkoneksi pribadi (Pengguna):
Compute Network Admin (
roles/compute.networkAdmin) -
Merutekan traffic melalui interkoneksi pribadi (Akun layanan katalog):
- Service Directory Viewer (
roles/servicedirectory.viewer) - Service Directory PSC Authorized Service (
roles/servicedirectory.pscAuthorizedService)
- Service Directory Viewer (
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.
Batasan dan pertimbangan
Bagian ini mencantumkan batasan dan pertimbangan untuk mengakses data lintas cloud.
- Penyedia Cloud yang Didukung untuk Cross-Cloud Interconnect: Penggunaan interkoneksi pribadi untuk mengakses data lintas cloud didukung dengan penyedia cloud jarak jauh berikut: Amazon Web Services (AWS). Anda dapat menggunakan Dedicated Cross-Cloud Interconnect atau Partner Cross-Cloud Interconnect.
- Pemilihan rute jaringan: Jika interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI) tidak dikonfigurasi, kueri akan dirutekan melalui internet publik. Hal ini dapat mengakibatkan biaya traffic keluar yang lebih tinggi dari penyedia cloud jarak jauh dan performa yang kurang dapat diprediksi.
- Konfigurasi Databricks Unity Catalog:
- Hanya Databricks Unity Catalog yang menggunakan lokasi eksternal di AWS atau lokasi eksternal di Google Cloud yang didukung. Unity Catalog yang menggunakan penyimpanan default di AWS atau penyimpanan default di Google Cloud tidak didukung.
- Anda harus mengaktifkan akses data eksternal di metastore yang digunakan oleh Unity Catalog, yang dinonaktifkan secara default.
- Anda harus memberikan hak istimewa
EXTERNAL USE SCHEMAke Akun Layanan Databricks pada skema atau katalog target untuk mengaktifkan penjualan kredensial untuk akses data eksternal. Tanpa hak istimewa ini, refresh metadata latar belakang dan penjualan kredensial untuk kueri akan gagal.
- Hanya baca: Katalog gabungan di Lakehouse adalah tampilan hanya baca dari katalog jarak jauh. Manipulasi resource (seperti membuat, memperbarui, atau menghapus resource) tidak didukung dan harus dilakukan langsung di katalog jarak jauh.
- Keaktualan data: Flag
--refresh-intervaluntuk katalog gabungan menentukan seberapa sering metadata disinkronkan. Nilainya harus0s(dinonaktifkan) atau minimal300s(5 menit). Pemuatan ulang metadata latar belakang katalog mungkin memerlukan waktu lebih lama seiring bertambahnya resource namespace dan tabel. Jika pemuatan ulang sebelumnya melebihi batas, pemuatan ulang saat ini akan dilewati, tetapi pemuatan ulang berikutnya akan dijadwalkan pada interval berikutnya. Kueri menggunakan metadata katalog yang paling baru disinkronkan, sehingga perubahan yang dibuat di katalog jarak jauh, seperti tabel baru, update skema, atau data yang baru di-commit, tidak akan terlihat di Lakehouse hingga pemuatan ulang metadata latar belakang berikutnya selesai. - Caching Lakehouse: Caching Lakehouse diaktifkan secara otomatis untuk semua kueri lintas cloud guna menghemat biaya egress dengan menyimpan blok data secara lokal di Google Cloud. Kunci enkripsi yang dikelola pelanggan (CMEK) tidak didukung untuk caching; data yang di-cache dienkripsi menggunakan Google-owned and Google-managed encryption keys. Jika batasan kebijakan organisasi
constraints/gcp.restrictNonCmekServicesditerapkan pada tabel mana pun dalam kueri, caching akan otomatis dinonaktifkan untuk kueri tersebut. Untuk mengetahui informasi selengkapnya, lihat Caching cerdas. - Residensi dan kepatuhan data: Membuat katalog atau koneksi gabungan di region Google Cloud akan menyimpan data dalam penyimpanan yang di-cache di region target tersebut. Jika data cloud jarak jauh Anda berada di wilayah hukum yang berbeda, pastikan caching lintas region mematuhi persyaratan residensi data dan kepatuhan terhadap peraturan organisasi Anda.
Alur kerja umum
Untuk mengakses data lintas cloud, ikuti langkah-langkah umum berikut:
- Siapkan Cross-Cloud Interconnect (Opsional): Konfigurasikan koneksi pribadi antara VPC Google Cloud dan penyedia cloud jarak jauh Anda.
- Menyiapkan penggabungan: Konfigurasikan autentikasi dan buat katalog gabungan di Lakehouse.
- Autentikasi dasar (wajib): Konfigurasikan OpenID Connect (OIDC) (direkomendasikan) atau Autentikasi berbasis secret untuk mengizinkan Lakehouse melakukan sinkronisasi skema dan metadata latar belakang menggunakan akun layanan katalog.
- Federasi identitas pengguna (opsional): Aktifkan federasi identitas pengguna (
--federated-catalog-identity-mode="user-identity-federation") untuk mengizinkan kueri dijalankan menggunakan identitas pengguna akhir yang diautentikasi. Hal ini memungkinkan Databricks Unity Catalog mengatribusikan kueri ke pengguna akhir, menerapkan izin, dan membuat log audit.
- Verifikasi koneksi: Pastikan Lakehouse dapat berhasil terhubung ke katalog jarak jauh Anda.
- Membuat kueri data: Jalankan kueri terhadap data gabungan Anda menggunakan BigQuery atau Managed Service untuk Apache Spark. Caching lakehouse diaktifkan secara otomatis untuk kueri guna menghemat biaya egress. Untuk mengetahui informasi selengkapnya, lihat Membuat kueri data jarak jauh.
- Mengonfigurasi izin: Gunakan Identity and Access Management (IAM) untuk mengelola siapa yang dapat melihat dan mengkueri data gabungan.
Menyiapkan Cross-Cloud Interconnect (Opsional)
Kueri ke katalog jarak jauh Anda dikirim melalui internet publik secara default. Untuk membantu meningkatkan keamanan dan kepatuhan, memberikan performa yang dapat diprediksi, dan mengurangi biaya transfer data, gunakan interkoneksi pribadi. Tindakan ini akan membuat koneksi jaringan pribadi khusus antara Google Cloud Virtual Private Cloud (VPC) Anda dan jaringan penyedia cloud jarak jauh Anda (misalnya, AWS).
Anda dapat menyediakan dan mengonfigurasi salah satu opsi interkoneksi pribadi berikut antara VPC Google Cloud dan VPC penyedia cloud jarak jauh Anda (misalnya, AWS):
- Dedicated Cross-Cloud Interconnect: Koneksi fisik khusus.
- Partner Cross-Cloud Interconnect: Koneksi melalui penyedia layanan yang didukung.
Buat sesi BGP antara Cloud Router di Google Cloud dan VPC penyedia cloud jarak jauh Anda untuk memastikan pertukaran rute.
Untuk mengaktifkan kueri pribadi, Anda harus mengonfigurasi jalur dari Lakehouse ke bucket penyimpanan jarak jauh (misalnya, bucket AWS Amazon S3) melalui interkoneksi pribadi. Ada dua alur arsitektur yang dapat Anda ikuti untuk mengonfigurasi pemilihan rute ini:
- Pemilihan rute Load Balancer Jaringan proxy regional internal: Alur ini menggunakan Load Balancer Jaringan proxy regional internalGoogle Cloud untuk mendistribusikan permintaan di seluruh Grup Endpoint Jaringan (NEG) Konektivitas Hybrid yang mengarah ke beberapa Elastic Network Interface (ENI) AWS. Alur ini penting untuk load balancing, skalabilitas, dan ketersediaan tinggi. Hal ini diperlukan untuk CCI Partner dan direkomendasikan untuk CCI Khusus untuk load balancing, skalabilitas, dan ketersediaan tinggi.
- Pemilihan rute endpoint langsung: Alur ini menghubungkan Direktori Layanan langsung ke satu alamat IP Endpoint VPC Antarmuka AWS. Alur ini hanya berfungsi untuk CCI Khusus dan tidak didukung untuk CCI Partner.
Pilih alur konfigurasi yang sesuai dengan persyaratan arsitektur Anda:
Load Balancer Jaringan proxy regional internal
Untuk mengonfigurasi Load Balancer Jaringan proxy regional internal guna mendistribusikan permintaan di beberapa ENI AWS untuk ketersediaan tinggi dan load balancing, ikuti langkah-langkah berikut:
Mengonfigurasi jaringan AWS
Pertama, buat Endpoint Antarmuka VPC Amazon S3 (AWS PrivateLink):
- Di konsol AWS VPC, buat Endpoint Antarmuka untuk Amazon S3.
- Untuk nama layanan, tentukan
com.amazonaws.AWS_REGION.s3. - Pilih VPC dan subnet yang terhubung melalui Direct Connect ke VPC Google Cloud Anda.
- Lampirkan Grup Keamanan ke endpoint untuk mengontrol akses masuk.
- Tindakan ini akan menyediakan Elastic Network Interface (ENI) di setiap subnet yang dipilih. Catat alamat IP pribadi ENI ini.
Selanjutnya, konfigurasikan Grup Keamanan:
- Pastikan Grup Keamanan yang terpasang ke ENI Endpoint Amazon S3 mengizinkan traffic TCP masuk di port
443dari VPC Google Cloud Anda. Rentang ini harus mencakup rentang CIDR Google Cloud subnet khusus proxy Anda untuk mengizinkan health check dan traffic yang diteruskan.
Mengonfigurasi Google Cloud jaringan
Untuk menyederhanakan penyiapan, jalankan perintah berikut untuk mengonfigurasi load balancer internal. Untuk konfigurasi lanjutan atau detail selengkapnya, lihat Menyiapkan Load Balancer Jaringan proxy regional internal untuk endpoint hybrid.
gcloud compute networks subnets create PROXY_SUBNET_NAME \ --purpose=REGIONAL_MANAGED_PROXY \ --role=ACTIVE \ --region=REGION \ --network=VPC_NETWORK \ --range=PROXY_SUBNET_RANGE
Ganti kode berikut:
PROXY_SUBNET_NAME: nama untuk subnet khusus proxy.PROXY_SUBNET_RANGE: rentang CIDR yang tidak digunakan dalam jaringan VPC Anda (misalnya,10.129.0.0/23).
Buat health check regional:
gcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --region=REGION \ --port=443
Ganti kode berikut:
HEALTH_CHECK_NAME: nama untuk health check.REGION: region Google Cloud (misalnya,us-east4).
Buat Grup Endpoint Jaringan (NEG) Konektivitas hybrid dan tambahkan endpoint:
Buat NEG hybrid (
NON_GCP_PRIVATE_IP_PORT) untuk setiap zona:gcloud compute network-endpoint-groups create NEG_NAME \ --network-endpoint-type=NON_GCP_PRIVATE_IP_PORT \ --zone=ZONE \ --network=VPC_NETWORK
Tambahkan alamat IP pribadi AWS ENI Anda ke NEG hybrid yang sesuai:
gcloud compute network-endpoint-groups update NEG_NAME \ --zone=ZONE \ --add-endpoint="ip=AWS_S3_IP,port=443"
Ganti kode berikut:
NEG_NAME: nama untuk NEG hybrid.ZONE: zona Google Cloud (misalnya,us-east4-a). Zona ini harus berada dalam region lampiran VLAN Cross-Cloud Interconnect Anda.VPC_NETWORK: nama jaringan VPC Anda.AWS_S3_IP: alamat IP pribadi Endpoint VPC (ENI) Amazon S3 AWS di zona tersebut.
Ulangi perintah ini untuk membuat NEG dan menambahkan endpoint untuk zona lain jika ENI AWS Anda didistribusikan di beberapa zona.
Buat dan konfigurasikan layanan backend:
Buat layanan backend regional dengan load balancing terkelola internal:
gcloud compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --protocol=TCP \ --region=REGION \ --health-checks=HEALTH_CHECK_NAME \ --health-checks-region=REGION
Tambahkan NEG hybrid ke layanan backend:
gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --region=REGION \ --network-endpoint-group=NEG_NAME \ --network-endpoint-group-zone=ZONE \ --balancing-mode=CONNECTION \ --max-connections=MAX_CONNECTIONS
Ganti kode berikut:
BACKEND_SERVICE_NAME: nama untuk layanan backend.NEG_NAME: nama NEG hybrid yang Anda buat di langkah sebelumnya.ZONE: zona Google Cloud (misalnya,us-east4-a).MAX_CONNECTIONS: koneksi serentak maksimum yang harus ditangani backend (misalnya,100).
Ulangi perintah
add-backenduntuk setiap NEG hybrid yang Anda buat.Konfigurasikan frontend load balancer:
Buat proxy TCP target:
gcloud compute target-tcp-proxies create TARGET_PROXY_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --region=REGION
Buat aturan penerusan untuk mengarahkan traffic ke proxy target:
gcloud compute forwarding-rules create FORWARDING_RULE_NAME \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=VPC_NETWORK \ --subnet=VPC_SUBNET \ --ports=443 \ --region=REGION \ --target-tcp-proxy=TARGET_PROXY_NAME \ --target-tcp-proxy-region=REGION \ --allow-global-access
Ganti kode berikut:
TARGET_PROXY_NAME: nama untuk proxy target.FORWARDING_RULE_NAME: nama untuk aturan penerusan.VPC_SUBNET: nama subnetwork VPC Anda.
Setelah membuat aturan penerusan untuk load balancer, catat alamat IP internal yang ditetapkan ke aturan tersebut. Ini adalah
ILB_IP_ADDRESS Anda.
Mengonfigurasi Direktori Layanan
Daftarkan alamat IP ILB di Direktori Layanan, agar Lakehouse dapat menemukannya.
Buat namespace untuk cloud jarak jauh Anda:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Ganti kode berikut:
NAMESPACE: ID unik untuk namespace Anda.PROJECT_ID: project ID Google Cloud Anda.REGION: region Google Cloud . Contoh,us-east4. Region ini harus sama dengan region katalog gabungan.
Buat layanan di namespace Direktori Layanan:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Ganti kode berikut:
SERVICE_NAME: ID unik untuk layanan Anda.
Buat endpoint untuk ILB di layanan:
gcloud service-directory endpoints create ENDPOINT_NAME \ --project=PROJECT_ID \ --namespace=NAMESPACE \ --service=SERVICE_NAME \ --location=REGION \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK \ --address=ILB_IP_ADDRESS \ --port=443
Ganti kode berikut:
ENDPOINT_NAME: ID unik untuk endpoint Anda.PROJECT_NUMBER: nomor project Google Cloud Anda. Gunakan nomor project Anda di flag--network.ILB_IP_ADDRESS: alamat IP internal aturan penerusan ILB Anda.
Endpoint langsung
Untuk mengonfigurasi Direktori Layanan agar merutekan traffic langsung ke satu alamat IP Endpoint VPC Antarmuka AWS, ikuti langkah-langkah berikut:
- Buat Endpoint VPC Antarmuka untuk Amazon S3 di dalam AWS VPC Anda. Catat alamat IP dan port endpoint ini.
Buat namespace untuk cloud jarak jauh Anda:
gcloud service-directory namespaces create NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Ganti kode berikut:
NAMESPACE: ID unik untuk namespace Anda.PROJECT_ID: project ID Google Cloud Anda.REGION: region Google Cloud . Contoh,us-east4. Region ini harus sama dengan region katalog gabungan.
Buat layanan di namespace Direktori Layanan:
gcloud service-directory services create SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION
Ganti kode berikut:
SERVICE_NAME: ID unik untuk layanan Anda.
Buat endpoint di layanan yang berisi informasi pemilihan rute untuk Endpoint VPC Antarmuka Amazon S3 Anda:
gcloud service-directory endpoints create ENDPOINT_NAME \ --service=SERVICE_NAME \ --namespace=NAMESPACE \ --project=PROJECT_ID \ --location=REGION \ --address=S3_VPCE_IP_ADDRESS \ --port=S3_VPCE_PORT \ --network=projects/PROJECT_NUMBER/global/networks/VPC_NETWORK
Ganti kode berikut:
ENDPOINT_NAME: ID unik untuk endpoint Anda.S3_VPCE_IP_ADDRESS: alamat IP Endpoint VPC Antarmuka Amazon S3 Anda. Contoh,10.0.1.45.S3_VPCE_PORT: nomor port Endpoint VPC Antarmuka Amazon S3 Anda. Contoh,443.PROJECT_NUMBER: nomor project Google Cloud Anda. Gunakan nomor project Anda di flag--network.VPC_NETWORK: nama jaringan VPC Google Cloud yang terkait dengan interkoneksi pribadi Anda.
Menyiapkan penggabungan
Untuk mengkueri data, Anda harus menyiapkan katalog gabungan Lakehouse yang terhubung ke Databricks Unity Catalog jarak jauh.
Mengonfigurasi autentikasi
Federasi memerlukan autentikasi ke katalog jarak jauh sebagai akun utama layanan Databricks. Pilih salah satu opsi autentikasi berikut:
OIDC
OpenID Connect (OIDC) memungkinkan autentikasi tanpa secret melalui federasi token OAuth Databricks.
- Buat Service Principal di akun Databricks Anda yang memiliki akses baca
ke Unity Catalog target dan hak istimewa
EXTERNAL USE SCHEMApada skema atau katalog target. - Simpan ID aplikasi (UUID) untuk Service Principal. Anda akan membutuhkannya untuk langkah selanjutnya.
Berbasis secret
Opsi ini menggunakan client ID dan rahasia klien OAuth yang disimpan dengan aman menggunakan secret Secret Manager regional.
Buat Service Principal di akun Databricks Anda yang memiliki akses baca ke Unity Catalog target.
Buat rahasia OAuth untuk akun utama layanan.
Buat file JSON bernama
credentials.jsondengan payload Anda:{ "client_id": "CLIENT_ID", "client_secret": "CLIENT_SECRET" }
Ganti kode berikut:
CLIENT_ID: Client ID OAuth untuk Akun Utama Layanan Databricks Anda.CLIENT_SECRET: Rahasia klien OAuth untuk Akun Utama Layanan Databricks Anda.
Konfigurasikan endpoint regional untuk Secret Manager:
Secara default, Secret Manager menggunakan endpoint global. Namun, Lakehouse mengharuskan secret Anda disimpan di region yang sama dengan katalog Lakehouse Anda. Untuk berinteraksi dengan secret regional menggunakan
gcloudCLI, Anda harus mengganti endpoint API default untuk sesi atau profil saat ini. Contoh,secretmanager.us-east4.rep.googleapis.com.gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/
Ganti kode berikut:
REGION: Region Google Cloud tempat secret Secret Manager Anda disimpan. Contohnya,us-east4. Untuk menghindari masalah konektivitas, secret dan katalog Anda harus dibuat di region yang sama.
Upload payload ke Secret Manager:
gcloud secrets create DATABRICKS_SECRET_NAME \ --location="REGION" \ --project="PROJECT_ID" \ --data-file=credentials.json
Ganti kode berikut:
DATABRICKS_SECRET_NAME: Nama untuk secret Databricks Anda.PROJECT_ID: Project ID Google Cloud Anda.
Membuat katalog gabungan
Buat katalog gabungan menggunakan konsol Google Cloud atau gcloud
CLI.
Pertimbangan:
Hanya Databricks Unity Catalog yang menggunakan lokasi eksternal di AWS atau lokasi eksternal di Google Cloud yang didukung. Databricks Unity Catalog yang menggunakan penyimpanan default di AWS atau penyimpanan default di Google Cloud tidak didukung.
Anda harus mengaktifkan akses data eksternal di metastore yang digunakan oleh Unity Catalog, yang dinonaktifkan secara default.
Anda harus memberikan hak istimewa
EXTERNAL USE SCHEMAke Akun Layanan Databricks pada skema atau katalog target untuk mengaktifkan penjualan kredensial untuk akses data eksternal. Tanpa hak istimewa ini, pembaruan metadata latar belakang dan penyediaan kredensial untuk kueri akan gagal.
Konsol
Untuk membuat katalog gabungan:
Di konsol Google Cloud , buka Lakehouse.
Klik Create catalog.
Klik Katalog gabungan.
Bagian Konfigurasi katalog akan muncul.
Untuk Federated catalog source, pilih Databricks (Unity).
Untuk Data location, pilih region Lakehouse tempat Anda ingin membuat katalog gabungan. Contoh,
us-east4. Untuk meminimalkan latensi (bahkan melalui internet publik), lakukan hal berikut saat memilih region:- Jika Unity Catalog Anda berada di AWS, pilih Google Cloud region yang paling dekat dengan region AWS Anda.
- Jika Unity Catalog Anda berada di Google Cloud, pilih region yang sama persis.
Klik Lanjutkan.
Bagian Connection details akan muncul.
Di bagian Remote catalog details, di kolom Unity instance name, masukkan nama instance Databricks target Anda. Contoh:
abcd.cloud.databricks.com.Di kolom Unity catalog name, masukkan nama Databricks Unity Catalog target yang akan difederasikan.
Pilih opsi untuk Metode Autentikasi:
- Untuk OIDC, masukkan ID Aplikasi untuk Service Principal.
- Untuk Secret, masukkan nama secret Anda. Gunakan format berikut:
projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME.
Opsional: Di bagian Identity mode, pilih salah satu opsi:
- Identitas layanan (default): Kueri dijalankan sebagai akun layanan Lakehouse.
- Identitas pengguna: Kueri dijalankan menggunakan identitas pengguna akhir yang diautentikasi dan disebarkan ke katalog jarak jauh. Federasi identitas harus dikonfigurasi di katalog jarak jauh.
Opsional: Di kolom Service directory name, masukkan jalur ke layanan Direktori Layanan Anda. Contoh:
projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME. Hal ini hanya diperlukan jika Anda mengonfigurasi interkoneksi pribadi (Cross-Cloud Interconnect).Klik Create.
gcloud
OIDC
Jika menggunakan OIDC, Anda harus menentukan --unity-service-principal-application-id.
Internet publik (tanpa CCI)
Jika Anda tidak mengonfigurasi CCI, koneksi akan berjalan dengan aman melalui internet publik.
gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --federated-catalog-identity-mode="IDENTITY_MODE"
Milik pelanggan (CCI)
Jika Anda mengonfigurasi interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI), berikan referensi layanan Direktori Layanan agar Lakehouse merutekan traffic secara pribadi.
gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --unity-service-principal-application-id="UNITY_SERVICE_PRINCIPAL_APPLICATION_ID" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --federated-catalog-identity-mode="IDENTITY_MODE" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"
Ganti kode berikut:
FEDERATED_CATALOG_NAME: nama untuk katalog gabungan Anda.PROJECT_ID: Project ID Google Cloud Anda.REGION: region Lakehouse tempat katalog gabungan dibuat. Region ini harus sama dengan namespace Direktori Layanan dan secret regional. Untuk meminimalkan latensi:- Jika Unity Catalog Anda berada di AWS, pilih Google Cloud region yang paling dekat dengan region AWS Anda.
- Jika Unity Catalog Anda berada di Google Cloud, pilih region yang sama persis.
UNITY_SERVICE_PRINCIPAL_APPLICATION_ID: ID Aplikasi (UUID) Akun Utama Layanan Databricks Anda.UNITY_INSTANCE_NAME: nama instance Databricks target Anda. Contoh:abcd.cloud.databricks.com.UNITY_CATALOG_NAME: nama Databricks Unity Catalog target yang akan difederasikan.REFRESH_INTERVAL: Menentukan seberapa sering refresh metadata latar belakang berjalan. Tetapkan nilai ini sebagai durasi, misalnya,330satau5m30s.NAMESPACE_FILTERS: Opsional: Daftar namespace yang dipisahkan koma untuk digabungkan. Contoh,ns1,ns2. Jika dihilangkan, semua namespace akan disertakan.IDENTITY_MODE: Opsional: Menentukan mode identitas untuk katalog. Tetapkan keuser-identity-federationuntuk meneruskan identitas pengguna akhir pada kueri, atauservice-identityuntuk menjalankan kueri sebagai akun layanan katalog. Jika dihilangkan, setelan defaultnya adalahservice-identity.- Jika Anda menggunakan interkoneksi pribadi (CCI):
SERVICE_DIRECTORY_NAMESPACE: namespace Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.SERVICE_NAME: nama layanan Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.
Berbasis secret
Jika menggunakan autentikasi berbasis secret, Anda harus menentukan --secret-name.
Internet publik (tanpa CCI)
Jika Anda tidak mengonfigurasi CCI, koneksi akan berjalan dengan aman melalui internet publik.
gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --federated-catalog-identity-mode="IDENTITY_MODE"
Milik pelanggan (CCI)
Jika Anda mengonfigurasi interkoneksi pribadi (seperti Dedicated CCI atau Partner CCI), berikan referensi layanan Direktori Layanan agar Lakehouse merutekan traffic secara pribadi.
gcloud biglake iceberg catalogs create FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --primary-location="REGION" \ --catalog-type="federated" \ --federated-catalog-type="unity" \ --secret-name="projects/PROJECT_ID/locations/REGION/secrets/DATABRICKS_SECRET_NAME" \ --unity-instance-name="UNITY_INSTANCE_NAME" \ --unity-catalog-name="UNITY_CATALOG_NAME" \ --refresh-interval="REFRESH_INTERVAL" \ --namespace-filters="NAMESPACE_FILTERS" \ --federated-catalog-identity-mode="IDENTITY_MODE" \ --service-directory-name="projects/PROJECT_ID/locations/REGION/namespaces/SERVICE_DIRECTORY_NAMESPACE/services/SERVICE_NAME"
Ganti kode berikut:
FEDERATED_CATALOG_NAME: nama untuk katalog gabungan Anda.PROJECT_ID: Project ID Google Cloud Anda.REGION: region Lakehouse tempat katalog gabungan dibuat. Region ini harus sama dengan namespace Direktori Layanan dan secret regional. Untuk meminimalkan latensi:- Jika Unity Catalog Anda berada di AWS, pilih Google Cloud region yang paling dekat dengan region AWS Anda.
- Jika Unity Catalog Anda berada di Google Cloud, pilih region yang sama persis.
DATABRICKS_SECRET_NAME: nama secret Databricks Anda.UNITY_INSTANCE_NAME: nama instance Databricks target Anda. Contoh:abcd.cloud.databricks.com.UNITY_CATALOG_NAME: nama Databricks Unity Catalog target yang akan difederasikan.REFRESH_INTERVAL: Menentukan seberapa sering refresh metadata latar belakang berjalan. Tetapkan nilai ini sebagai durasi, misalnya,330satau5m30s.NAMESPACE_FILTERS: Opsional: Daftar namespace yang dipisahkan koma untuk digabungkan. Contoh,ns1,ns2. Jika dihilangkan, semua namespace akan disertakan.IDENTITY_MODE: Opsional: Menentukan mode identitas untuk katalog. Tetapkan keuser-identity-federationuntuk meneruskan identitas pengguna akhir pada kueri, atauservice-identityuntuk menjalankan kueri sebagai akun layanan katalog. Jika dihilangkan, setelan defaultnya adalahservice-identity.- Jika Anda menggunakan interkoneksi pribadi (CCI):
SERVICE_DIRECTORY_NAMESPACE: namespace Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.SERVICE_NAME: nama layanan Direktori Layanan yang Anda buat selama penyiapan interkoneksi pribadi.
Menyelesaikan penyiapan autentikasi
Selesaikan proses autentikasi menggunakan jenis autentikasi yang Anda pilih.
OIDC
Saat katalog dibuat, Lakehouse menyediakan akun layanan unik untuk katalog tersebut. Anda harus mengambil ID unik numerik akun layanan dan menggunakannya untuk mengonfigurasi kebijakan penggabungan untuk Service Principal Databricks.
Ambil ID unik numerik akun layanan katalog Lakehouse:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account-id)'
Di akun Databricks Anda, konfigurasikan kebijakan penggabungan untuk Service Principal yang Anda buat sebelumnya. Gunakan nilai berikut:
- URL Penerbit:
https://accounts.google.com - Subject: ID unik numerik akun layanan katalog Lakehouse yang diambil pada langkah sebelumnya.
- Audiens:
https://accounts.cloud.databricks.com
Pastikan Service Principal Databricks memiliki akses baca ke katalog dan ruang kerja target, serta hak istimewa
EXTERNAL USE SCHEMApada skema atau katalog target.- URL Penerbit:
Berbasis secret
Saat katalog dibuat, Lakehouse menyediakan akun layanan unik untuk katalog tersebut (ditampilkan sebagai biglake-service-account dalam deskripsi resource).
Anda harus memberikan izin kepada akun layanan ini untuk mengakses secret yang Anda buat sebelumnya. Perhatikan bahwa penyebaran kebijakan IAM dapat memerlukan waktu beberapa menit.
Beri akun layanan katalog izin untuk mengakses secret:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets add-iam-policy-binding DATABRICKS_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION" \ --member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/secretmanager.secretAccessor"
Untuk memverifikasi bahwa akun layanan katalog gabungan memiliki akses ke secret, jalankan perintah berikut:
gcloud config set api_endpoint_overrides/secretmanager https://secretmanager.REGION.rep.googleapis.com/ gcloud secrets get-iam-policy DATABRICKS_SECRET_NAME \ --project="PROJECT_ID" \ --location="REGION"
Dalam output, pastikan akun layanan biglake-service-account memiliki peran roles/secretmanager.secretAccessor yang ditetapkan.
Pastikan Service Principal Databricks memiliki akses baca ke
katalog dan ruang kerja target, serta hak istimewa EXTERNAL USE SCHEMA
pada skema atau katalog target.
Menyelesaikan penyiapan interkoneksi pribadi (khusus Cross-Cloud Interconnect)
Jika Anda merutekan traffic melalui interkoneksi pribadi (CCI Khusus atau Partner), Anda harus memberikan izin kepada akun layanan katalog Lakehouse untuk menemukan dan mengizinkan koneksi melalui Direktori Layanan.
Konsol
Di konsol Google Cloud , buka halaman IAM.
Klik Berikan Akses (atau Tambahkan).
Di kolom New principals, masukkan alamat email akun layanan katalog Lakehouse. Anda dapat mengambil alamat email ini dengan mendeskripsikan katalog (lihat tab
gcloud).Di menu Role, pilih Service Directory Viewer (
roles/servicedirectory.viewer).Klik Add another role dan pilih Service Directory PSC Authorized Service (
roles/servicedirectory.pscAuthorizedService).Klik Simpan.
gcloud
Berikan peran yang diperlukan ke akun layanan katalog:
# Grant Service Directory Viewer gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.viewer" # Grant Service Directory PSC Authorized Service gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:$(gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='value(biglake-service-account)')" \ --role="roles/servicedirectory.pscAuthorizedService"
Memverifikasi koneksi
Pastikan siklus refresh metadata latar belakang katalog berhasil diselesaikan dan namespace disinkronkan.
Pastikan status refresh menunjukkan keberhasilan:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID"
Pastikan namespace telah disinkronkan:
gcloud biglake iceberg namespaces list \ --project="PROJECT_ID" \ --catalog="FEDERATED_CATALOG_NAME"
Mengonfigurasi penggabungan identitas pengguna (Opsional)
Jika Anda mengonfigurasi penggabungan identitas pengguna untuk katalog gabungan, Anda harus mengonfigurasi kebijakan penggabungan di seluruh akun di Databricks.
Meskipun pemuatan ulang metadata latar belakang dijalankan sebagai akun layanan katalog yang dikonfigurasi dengan autentikasi dasar (berbasis OIDC atau Secret), penggabungan identitas pengguna memerlukan kebijakan di seluruh akun ini agar Databricks dapat memvalidasi token identitas pengguna akhir yang dibuat oleh Google Cloud selama kueri interaktif. Hal ini memungkinkan Databricks mengatribusikan kueri kepada pengguna akhir, menerapkan izin, dan membuat log audit.
(Opsional) Memperbarui katalog yang ada:
Jika Anda sudah memiliki katalog gabungan yang dikonfigurasi dengan mode identitas layanan default, Anda dapat memperbaruinya ke penggabungan identitas pengguna tanpa membuat ulang katalog:
Konsol
Di konsol Google Cloud , buka Lakehouse.
Dalam daftar katalog, klik nama katalog gabungan Anda.
Halaman Catalog details akan muncul.
Klik Edit katalog.
Di bagian Identity mode, pilih User identity.
Klik Simpan.
gcloud
Jalankan perintah
gcloud biglake iceberg catalogs update:gcloud biglake iceberg catalogs update FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --federated-catalog-identity-mode="user-identity-federation"
Ambil klaim OIDC dari katalog Anda:
Jalankan perintah berikut untuk mengambil klaim token yang diperlukan oleh Databricks:
gcloud biglake iceberg catalogs describe FEDERATED_CATALOG_NAME \ --project="PROJECT_ID" \ --format='yaml(federated-catalog-options.user-identity-federation-oidc)'
Outputnya akan terlihat mirip seperti berikut:
federated-catalog-options: user-identity-federation-oidc: audience: databricks-12345678-abcd-1234-efgh-1234567890ab issuer-url: https://www.gstatic.com/biglake/federation/organizations/123456789012
Perhatikan hal berikut terkait ketersediaan klaim:
issuer-url: Berasal dari organisasi Google Cloud Anda (https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID) dan langsung tersedia setelah pembuatan katalog.audience: Dicakupkan ke metastore Databricks target Anda (databricks-METASTORE_ID) dan berasal dari metastore Unity Catalog. Karena nilai ini diisi oleh pemuatan ulang metadata latar belakang, autentikasi dasar harus diselesaikan dan pemuatan ulang metadata latar belakang harus aktif (tidak ditetapkan ke0). Lihat Memverifikasi koneksi untuk memeriksa apakah pemuatan ulang metadata latar belakang sudah disiapkan dengan benar.
Konfigurasikan kebijakan penggabungan Databricks di seluruh akun:
- Di Databricks Account Console, buka Account settings > Security > Identity provider setup.
- Di bagian Federation policies, klik Create policy.
- Dalam dialog konfigurasi kebijakan, tetapkan kolom berikut:
- URL Penerbit: Masukkan nilai
issuer-urlyang diambil di langkah sebelumnya (misalnya,https://www.gstatic.com/biglake/federation/organizations/ORGANIZATION_ID). - Audiences: Masukkan nilai
audiencecakupan metastore yang diambil di langkah sebelumnya (misalnya,databricks-METASTORE_ID). - Subject claim: Biarkan kosong (Databricks secara default menggunakan klaim
subyang berisi alamat email pengguna). Databricks menggunakan email ini untuk mencocokkan dengan pengguna yang dikonfigurasi di akun Databricks Anda.
- URL Penerbit: Masukkan nilai
- Klik Simpan.
Verifikasi workload identity federation dan logging audit:
Untuk memverifikasi eksekusi kueri dan logging audit yang diatribusikan ke pengguna:
Ikuti Membuat kueri data jarak jauh untuk menjalankan kueri di BigQuery terhadap tabel gabungan.
Di Databricks, pastikan peristiwa akses kueri dicatat dalam log audit Databricks. Buat kueri tabel sistem
system.access.auditdi editor SQL Databricks (lihat referensi log audit Databricks). Perhatikan bahwa peristiwa yang dapat diaudit dapat memerlukan waktu 15 menit atau lebih untuk muncul di log audit Databricks:SELECT * FROM system.access.audit WHERE service_name = 'accounts' AND action_name IN ('oidcTokenAuthorization') AND event_time >= NOW() - INTERVAL 30 MINUTE AND user_identity.email = 'USER_EMAIL' ORDER BY event_time DESC LIMIT 10;
Langkah berikutnya
- Membuat kueri data jarak jauh.
- Memecahkan masalah akses data lintas cloud untuk Databricks Unity Catalog.