Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Important
ABAC lintas mesin masih dalam Beta.
Engine eksternal dapat membaca tabel Unity Catalog dengan kontrol akses terperinci yang diterapkan. Ini termasuk kebijakan kontrol akses berbasis atribut (ABAC) dan filter baris mandiri dan masker kolom, semuanya diberlakukan secara dinamis bahkan saat mengkueri dari luar Azure Databricks.
Saat mesin eksternal mengkueri tabel dengan kebijakan ABAC, filter baris, atau masker kolom yang terpasang, Azure Databricks menggunakan lapisan komputasi tanpa server khusus untuk memfilter dan mengembalikan data yang dibersihkan ke mesin eksternal.
Requirements
Untuk menerapkan kontrol akses terperinci pada tabel yang dikueri dari mesin eksternal, Anda harus melakukan hal berikut:
- Aktifkan akses data eksternal di metastore Unity Catalog Anda.
- Berikan hak istimewa
EXTERNAL USE SCHEMAkepada prinsipal yang melakukan kueri. - Gunakan tabel terkelola dengan komit katalog.
- Autentikasi menggunakan komputer-ke-mesin (M2M) OAuth atau token akses pribadi (PAT).
Membuat tabel Delta terkelola dengan penerapan katalog
Untuk membuat tabel Delta terkelola yang baru dengan komit katalog (memerlukan Databricks Runtime 16.4 atau yang lebih baru):
CREATE TABLE <catalog>.<schema>.<table> (id INT, name STRING)
TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported') USING delta;
Untuk meningkatkan tabel terkelola yang ada (memerlukan Databricks Runtime 18.0 ke atas):
ALTER TABLE <catalog>.<schema>.<table>
SET TBLPROPERTIES ('delta.feature.catalogManaged' = 'supported');
Setelah membuat tabel, Anda dapat menerapkan kebijakan ABAC, filter baris, atau masker kolom.
Lihat Membuat kebijakan atau Menerapkan filter baris dan masker kolom secara manual.
Membaca tabel dengan Apache Spark (Delta)
Konfigurasikan Apache Spark dengan Delta-Spark 4.1 atau lebih tinggi dan konektor Unity Catalog Spark 0.4 atau lebih tinggi.
"spark.sql.extensions": "io.delta.sql.DeltaSparkSessionExtension",
"spark.sql.catalog.spark_catalog": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>": "io.unitycatalog.spark.UCSingleCatalog",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>",
"spark.sql.catalog.<uc-catalog-name>.auth.type": "oauth",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientId": "<oauth-client-id>",
"spark.sql.catalog.<uc-catalog-name>.auth.oauth.clientSecret": "<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.ServerSidePlanning.enabled": "true",
"spark.sql.defaultCatalog": "<uc-catalog-name>",
"spark.jars.packages": "io.delta:delta-spark_4.0_2.13:4.1.0,io.delta:delta-iceberg_2.13:4.1.0,io.unitycatalog:unitycatalog-spark_2.13:0.4.0,org.apache.hadoop:hadoop-azure:3.4.2"
Note
Atur ServerSidePlanning.enabled ke true untuk mengaktifkan penegakan kontrol akses terperinci oleh mesin eksternal.
Ganti variabel berikut:
-
<uc-catalog-name>: Nama katalog di Unity Catalog yang berisi tabel Anda. -
<workspace-url>: URL Azure Databricks workspace, termasuk ID ruang kerja. -
<oauth-token-endpoint>: URL titik akhir token OAuth. Lihat Otorisasi akses prinsipal layanan ke Azure Databricks dengan OAuth. -
<oauth-client-id>: ID klien OAuth untuk prinsipal autentikasi. -
<oauth-client-secret>: Rahasia klien OAuth untuk prinsipal autentikasi.
Membaca tabel dengan Apache Spark (Iceberg)
Konfigurasikan Apache Spark dengan Iceberg-Spark 1.11 atau lebih tinggi dan Apache Spark 4.0 atau lebih tinggi.
"spark.sql.extensions": "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions",
"spark.sql.catalog.<uc-catalog-name>": "org.apache.iceberg.spark.SparkCatalog",
"spark.sql.catalog.<uc-catalog-name>.type": "rest",
"spark.sql.catalog.<uc-catalog-name>.uri": "<workspace-url>/api/2.1/unity-catalog/iceberg-rest/",
"spark.sql.catalog.<uc-catalog-name>.credential": "<oauth-client-id>:<oauth-client-secret>",
"spark.sql.catalog.<uc-catalog-name>.oauth2-server-uri": "<oauth-token-endpoint>",
"spark.sql.catalog.<uc-catalog-name>.warehouse": "<uc-catalog-name>",
"spark.sql.catalog.<uc-catalog-name>.cache-enabled": "false",
"spark.sql.defaultCatalog": "<uc-catalog-name>"
Ganti variabel berikut:
-
<uc-catalog-name>: Nama katalog di Unity Catalog yang berisi tabel Anda. -
<workspace-url>: URL Azure Databricks workspace, termasuk ID ruang kerja. -
<oauth-token-endpoint>: URL titik akhir token OAuth. Lihat Otorisasi akses prinsipal layanan ke Azure Databricks dengan OAuth. -
<oauth-client-id>: ID klien OAuth untuk prinsipal autentikasi. -
<oauth-client-secret>: Rahasia klien OAuth untuk prinsipal autentikasi.
Mencari data
Anda dapat mengkueri tabel menggunakan Api Apache Spark SQL atau DataFrame. Azure Databricks menerapkan kebijakan akses terperinci di belakang layar.
SELECT * FROM <uc-catalog-name>.<schema>.<table>;
Warning
Operasi tulis secara bersamaan saat perencanaan kueri dapat menyebabkan tabel yang sama dibaca dari snapshot tabel yang berbeda dalam kueri self-join dan multi-scan, yang pada akhirnya dapat menghasilkan hasil yang keliru.
Biaya komputasi tanpa server
ABAC lintas-engine menggunakan sumber daya komputasi serverless untuk menegakkan kebijakan akses yang terperinci di sisi server. Pelanggan dikenakan biaya untuk sumber daya ini. Untuk informasi harga, lihat Harga produk Beta.
Pengguna dengan akses ke tabel sistem penagihan dapat system.billing.usage meminta untuk melihat berapa banyak mereka telah ditagih. Misalnya, kueri berikut memecah biaya komputasi berdasarkan pengguna:
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by cross-engine ABAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2026-06-01' AND '2026-07-01'
AND billing_origin_product = 'EXTERNAL_COMPATIBILITY'
GROUP BY 1, 2, 3 ORDER BY 1;
Keterbatasan
- Hanya operasi baca yang didukung dari mesin eksternal saat kontrol akses terperinci (FGAC) diterapkan. Untuk menulis, Anda harus mengecualikan prinsipal penulisan dari kebijakan ABAC.
- Tampilan dinamis tidak didukung.
- Proyeksi kolom
VARIANTtidak didukung. - Pemfilteran pada
BINARYkolom tidak didukung. - Fungsi penyamaran kolom yang jenis pengembaliannya berbeda dari jenis kolom asli tidak didukung.
- Agregasi besar mungkin mengalami penurunan performa.