專用運算的細粒度存取控制(先前稱為單一使用者運算)
本文介紹數據篩選功能,可以對特定計算資源(經 專用 存取模式設定的通用計算或作業計算)上運行的查詢進行細緻的訪問控制。 請參閱存取模式。
此資料篩選會使用無伺服器計算在幕後執行。
為什麼專用計算上的某些查詢需要數據篩選?
Unity Catalog 可讓您使用下列功能來控制資料行以及資料列層級的表格式資料存取(也稱為細部存取控制):
當使用者查詢排除了來自參考數據表的數據的檢視,或查詢應用了篩選和遮罩的數據表時,他們可以不受限制地使用以下任何計算資源:
- SQL 數據倉庫
- 標準計算 (先前共享計算)
不過,如果您使用專用計算來執行這類查詢,則計算和您的工作區必須符合特定需求:
專用的計算資源必須位於 Databricks Runtime 15.4 LTS 或更新版本上。
工作區必須針對作業、筆記本和 DLT 啟用無伺服器計算。
若要確認您的工作區區域支援無伺服器計算,請參閱 具有有限區域可用性的功能。
如果您的專用計算資源和工作區符合這些需求,則每當查詢使用精細訪問控制的檢視或數據表時,就會自動執行數據篩選。
支援具體化檢視、串流數據表和標準檢視
除了動態檢視、數據列篩選和數據行掩碼之外,數據篩選也可讓您在執行 Databricks Runtime 15.3 和以下專用計算不支援的下列檢視和數據表上進行查詢:
在執行 Databricks Runtime 15.3 和以下的專用計算上,在檢視上執行查詢的用戶必須在檢視所參考的數據表和檢視上擁有 SELECT
,這表示您無法使用檢視來提供更細緻的訪問控制。 在具有數據篩選的 Databricks Runtime 15.4 上,查詢檢視的使用者不需要存取參考的數據表和檢視。
數據篩選如何在專用計算上運作?
每當查詢存取下列資料庫物件時,專用計算資源會將查詢一起傳遞至無伺服器計算來執行數據篩選:
- 沒有
SELECT
權限的用戶不能存取這些基於資料表的檢視 - 動態檢視
- 定義了行篩選器或列遮罩的表格
- 實體化視圖和串流資料表
在下圖中,使用者已在SELECT
、table_1
和view_2
上套用table_w_rls
,並應用了行篩選。 用戶在 SELECT
上没有 table_2
,這是被 view_2
引用的。
table_1
上的查詢完全由專用計算資源處理,因為不需要篩選。
view_2
和table_w_rls
上的查詢需要進行數據篩選,以傳回使用者可存取的數據。 這些查詢是由無伺服器計算上的數據篩選功能所處理。
會產生哪些成本?
客戶會針對用來執行數據篩選作業的無伺服器計算資源收費。 如需定價資訊,請參閱 平臺層和附加元件。
您可以查詢系統計費使用量數據表,以查看您支付的費用。 例如,下列查詢會依使用者細分計算成本:
SELECT usage_date,
sku_name,
identity_metadata.run_as,
SUM(usage_quantity) AS `DBUs consumed by FGAC`
FROM system.billing.usage
WHERE usage_date BETWEEN '2024-08-01' AND '2024-09-01'
AND billing_origin_product = 'FINE_GRAINED_ACCESS_CONTROL'
GROUP BY 1, 2, 3 ORDER BY 1;
在參與數據篩選時檢視查詢效能
專用計算的Spark UI會顯示可用來了解查詢效能的計量。 針對您在計算資源上執行的每個查詢, [SQL/數據框架 ] 索引標籤會顯示查詢圖表表示法。 如果查詢涉及數據篩選,UI 會在圖形底部顯示 RemoteSparkConnectScan 運算子節點。 該節點會顯示可用來調查查詢效能的計量。 請參閱 在 Apache Spark UI 中檢視計算資訊。
展開 RemoteSparkConnectScan 操作員節點,以查看可解決這類問題的計量,如下所示:
- 數據篩選需要多少時間? 檢視「遠端運行時間總計」。
- 數據篩選之後會保留多少個數據列? 檢視「數據列輸出」。
- 在資料篩選之後,傳回多少資料(以位元組為單位) ? 檢視「數據列輸出大小」。
- 有多少個數據檔經過分區修剪,不需要從儲存中讀取? 檢視「剪除的檔案」和「剪除的檔案大小」。
- 有多少數據檔案無法被優化,必須從存儲讀取? 檢視「讀取的檔案」和「讀取的檔案大小」。
- 在必須讀取的檔案中,有多少檔案已經在快取中? 檢視「快取點擊大小」和「快取遺漏大小」。
限制
不支援在套用數據列篩選或數據行遮罩的數據表上寫入或重新整理數據表作業。
具體而言,不支援 DML 作業,例如
INSERT,
、DELETE
、UPDATE
、REFRESH TABLE
和MERGE
。 您只能讀取這些表格中的內容(SELECT
)。呼叫數據篩選時,預設會封鎖自我聯結,但您可以在執行這些命令的計算上將 設定
spark.databricks.remoteFiltering.blockSelfJoins
為 false,以允許它們。在專用計算資源上啟用自我聯結之前,請注意數據篩選功能所處理的自我聯結查詢可能會傳回相同遠程數據表的不同快照集。
- 在 Docker 映像中不支援。