此頁面概述 Unity 目錄中的訪問控制,包括許可權、原則和數據層級控件。
存取控制層次
Unity 目錄中的存取控制是以下列互補模型為基礎所建置:
- 工作區層級限制可藉由將物件限制為特定工作區,來控制使用者可以存取數據的位置。
- 許可權和擁有權 控制 誰 可以通過對安全性物件的授權來存取 哪些 項目。
- 屬性型原則 (ABAC) 會使用受控標籤和集中式原則來控制使用者可以存取 的數據 。
- 數據表層級的篩選和遮罩控制了使用者在數據表中通過特定篩選和檢視表可以看到哪些數據。
這些模型會共同運作,以在您的數據環境中強制執行安全且精細的存取。
| 層 | 目標 | 機制 |
|---|---|---|
| 工作空間層級限制 | 限制哪些工作區可以存取特定目錄、外部位置和記憶體認證 | 工作區層級系結 |
| 許可權和擁有權 | 控制目錄、架構、數據表和其他物件的存取 | 權限授予使用者和群組、物件所有權 |
| 屬性型原則 | 使用標籤和原則動態套用篩選和遮罩 | ABAC 原則和管理標籤 |
| 數據表層級篩選和遮罩 | 控制用戶可以在數據表內看到哪些數據 | 數據列篩選、數據行遮罩、動態檢視 |
工作空間層級限制
工作區系結會限制帳戶中的工作區可以存取特定目錄、外部位置和記憶體認證。 此訪問控制會在工作區層級發生,無論使用者或群組許可權為何,都會套用。
根據預設,Unity 目錄中的所有目錄、外部位置和記憶體認證都可以從連結至相同中繼存放區的任何工作區存取。 您可以使用系結:
- 限制對一或多個指定工作區的存取
- 從特定工作區將目錄存取設為唯讀
- 隔離環境,例如將生產數據限制於生產工作區
- 將外部位置和記憶體認證的使用限制為特定工作區
這些系結會取代用戶層級的許可權。 如果使用者具有對象的許可權,但嘗試從未系結的工作區存取它,則會拒絕存取。
許可權和擁有權
Unity 目錄中的存取主要受許可權和對象擁有權所控管。 此模型定義誰可以藉由指派系統管理員角色以及授與許可權和管理安全性實體對象之間的擁有權,來存取或管理數據和元數據。 本節說明如何授與許可權、擁有權的運作方式,以及哪些系統管理員角色可以管理不同範圍的存取權。
管理員角色
Unity 目錄支援多個系統管理員角色:
- 帳戶管理員:可以建立中繼存放區、管理身分識別、指派中繼存放區管理員,以及管理 Delta Sharing 和系統資料表等帳戶層級特點。
-
Metastore 管理員:一個選擇性但功能強大的角色,可以管理中繼存放區中的所有物件、轉移擁有權,並分配如
CREATE CATALOG、CREATE EXTERNAL LOCATION等的頂層權限。 - 工作區系統管理員:管理身分識別、工作區層級設定和工作區目錄。
如需詳細資訊,請參閱 Unity 目錄中的系統管理員許可權。
物件所有權
Unity 目錄中的每個安全性實體物件,例如目錄、架構或數據表,都有擁有者。 擁有權會授與該物件的完整控制權,包括:
- 讀取或修改物件及其元數據
- 將許可權授與其他使用者
- 將擁有權轉移給另一個主體
Unity 目錄也支援許可權 MANAGE ,可讓使用者授與存取權和修改物件,而不讓他們成為擁有者。
如需擁有權的詳細資訊,請參閱 管理 Unity Catalog 對象擁有權。
安全性物件的權限
在 Unity 目錄中,訪問控制會以許可權開頭。 您可以將 、SELECT、 和 MODIFY 等USE SCHEMA許可權指派給安全性實體物件上的使用者和群組,例如目錄、架構、數據表、檢視、磁碟區和函式。
權限強制執行為:
- 階層式:賦予較高層級物件的權限(例如目錄)會沿用到較低層級的物件(例如表)。
- 委派:每個物件都有一個擁有者可以管理它,並授與其他物件的存取權。
- 明確:只有在使用者或群組獲得適當的許可權時,才允許存取。 用戶會獲得所有其所屬群組的許可權合併。
使用者可以請求存取透過 BROWSE 權限或物件的直接 URL 所能發現的物件,或者當他們在筆記本或 SQL 編輯器中遇到權限拒絕錯誤時。 Databricks 建議將 BROWSE 群組的目錄權限授予 All account users,以使物件可被探索,並允許使用者要求存取權。 存取要求會傳送至已設定的目的地,例如電子郵件、Slack、Microsoft Teams、Webhook 端點或重新導向 URL。 如果未設定目的地,使用者就無法要求存取物件。
如需詳細資訊,請參閱Unity Catalog 中的許可權管理與Unity Catalog 許可權及可安全性物件。
基於路徑存取的權限快取
為了提升基於路徑存取雲端儲存的效能,Unity Catalog 可能會為每位使用者和路徑快取最多 60 秒的權限檢查結果。 此快取適用於:
- 使用
dbutils.fs指令進行檔案系統操作 - 基於路徑的查詢使用 Spark SQL
由於這種快取行為,授權或撤銷可能不會立即反映。 此行為僅影響基於路徑的存取。 基於名稱的存取(例如 SELECT * FROM catalog.schema.table)不受此快取影響。
屬性型存取控制 (ABAC)
這很重要
這項功能目前處於 公開預覽版。
ABAC 是以集中式標記為基礎的原則架構,可用於在 Unity 目錄中強制執行訪問控制。 它可讓系統管理員定義可調整的原則,以根據受控標籤動態套用至目錄、架構和數據表。 原則可以篩選數據或遮罩敏感性值。 Databricks 建議使用 ABAC 進行集中式且可調整的治理,而不是在每個數據表上個別套用篩選或遮罩。
ABAC 是設計成一般用途的架構,可根據元數據屬性套用訪問控制原則。 其可補充許可權型控件,並支援更細緻的強制執行,而不需要個別物件組態。
主要功能:
- 卷標驅動原則: 使用受控標籤和使用者定義函式 (UDF) 定義原則一次,並一致地套用至許多數據資產。
- 階層式強制執行: 在目錄、架構或數據表層級套用原則,並自動繼承至子物件。
- 集中式、可調整的治理: 大規模管理存取權,而不需為每個物件指派個別許可權。
- 動態評估: 存取決策會根據標記和用戶內容實時進行評估。
如需詳細資訊,請參閱 Unity 目錄屬性型存取控制 (ABAC) 。
數據表層級篩選和遮罩
本節介紹可控制機制,使用數據表特定邏輯來決定用戶在查詢時可以看到哪些數據。 這些包括:
- 數據列篩選和數據行遮罩:將邏輯直接套用至數據表。
- 動態檢視:在一或多個數據表上使用 SQL 定義邏輯。
根據治理模型而定,這些方法可以獨立使用或與 ABAC 搭配使用。
列篩選和欄位遮罩
數據列篩選和數據行遮罩會使用 UDF 將篩選或遮罩邏輯直接套用至個別數據表。 當您想要強制執行每個數據表的邏輯,而不需要集中式原則管理時,它們就很有用。
如需詳細資訊,請參閱 數據列篩選和數據行遮罩。
動態視圖
動態檢視可讓您使用 SQL 定義一或多個數據表的邏輯。 它們是唯讀的,適用於:
- 套用轉換邏輯(例如聯結和
CASE語句) - 透過 Delta 分享篩選後的數據,其中不支援 ABAC 存取控制。
如需詳細資訊,請參閱 建立動態檢視。
使用每個訪問控制機制的時機
工作區綁定、許可權和 ABAC 政策均會在不同層級評估存取權,並設計為一起使用。 下表就它們於常見存取控制準則進行比較:
備註
Databricks 建議使用 ABAC ,根據控管的標籤來集中和調整存取控制。 只有在您需要個別數據表邏輯或尚未採用 ABAC 時,才使用數據列篩選和數據行遮罩。
| 機制 | 適用對象 | 使用定義 | 用例 |
|---|---|---|---|
| 工作區綁定 | 目錄、外部位置、記憶體認證 | 工作區指派 | 限制從特定工作區存取物件 |
| 特權 | 目錄、架構、數據表 | 授予 (GRANT, REVOKE)擁有權 |
基線訪問與委派 |
| ABAC 原則 | 標記的物件(資料表、架構) | 具有受控標籤和UDF的政策 | 集中化、標籤驅動的策略和動態執行 |
| 表格層級的列/行篩選 | 個別數據表 | 資料表本身的 UDF | 特定表格的篩選或遮罩 |
| 動態視圖 | 一或多個數據表的視圖 | SQL (內嵌篩選器或遮罩) | 唯讀存取、複雜邏輯、Delta 資料共用 |