共用方式為


Unity Catalog 屬性為基礎的存取控制(ABAC)

Important

這項功能目前處於 公開預覽版

此頁面描述 Unity 目錄中的屬性型存取控制 (ABAC)。

什麼是 ABAC?

ABAC 是一種數據控管模型,可提供跨 Azure Databricks 的彈性、可調整和集中式訪問控制。 ABAC 藉由允許根據套用至數據資產的受控標籤來定義原則,以補充 Unity 目錄的現有許可權模型。 這簡化了治理並增強了安全性。

具有 MANAGE 許可權或對象擁有權的使用者只需要定義原則一次,而且可以一致地套用至許多數據資產。 原則會附加在目錄、架構或數據表層級,並自動套用至該範圍內的所有數據表。 在較高層級定義策略時,它們會向下繼承至子物件。 數據資產的受控標籤會決定強制執行哪些原則,允許訪問控制動態調整。

ABAC 的優點

  • 延展性: 利用標記而非個別許可權,大規模管理訪問控制。
  • 靈活性: 藉由更新標籤或原則來輕鬆調整控管,而不需修改每個數據資產。
  • 集中式治理: 透過跨越目錄、架構和數據表的統一模型簡化原則管理。
  • 改善的安全性: 根據數據屬性動態強制執行精細的訪問控制。
  • 稽核性: 透過完整的稽核記錄,維護資料存取的即時可見度。

ABAC 的運作方式

Unity 目錄中的 ABAC 會使用受控的標籤、原則和使用者定義函式 (UDF) 來強制執行動態屬性型存取控制。 下列元件和機制是 ABAC 的核心:

  • 控管的標籤: 控管的標籤是透過標籤策略在帳戶層級定義。 這些標記代表數據敏感度、分類或商務網域等屬性,並指派給 Unity 目錄中的數據表、架構或目錄。 它們作為推動政策執行的屬性。 請參閱受 控管的標籤將標籤套用至 Unity 目錄安全性實體物件

  • 政策: 政策會在 Unity Catalog 內的三個階層式層級建立和管理:

    • 目錄層級: 套用影響所有所包含結構和數據表的廣泛政策。
    • 架構層級: 套用架構及其數據表特有的原則。
    • 數據表層級: 直接在個別數據表上套用精細的原則。

    原則會遵循 繼承模型:在目錄或架構層級定義原則時,會自動套用至該範圍內的所有子對象、架構和數據表。 這可讓管理員透過套用單一原則來控管大型資料資產集,以實作有效率的治理。 繼承的政策可減少冗餘,並在整個數據階層中促進一致的執行。 Databricks 建議在最高適用層級定義原則,通常是目錄,以將治理效率最大化,並減少系統管理額外負荷。 請參閱 建立和管理屬性型訪問控制 (ABAC) 原則

  • 使用者定義函式 (UDF): UDF 是定義於架構層級的自定義函式,而且可以在 Unity 目錄命名空間之間全域參考。 UDF 會在原則內用來表示複雜的邏輯,例如根據屬性篩選數據列或遮罩數據行值。 例如,名為 filter_region 的 UDF 可能會用於篩選行的原則,只傳回符合 region = 'EMEA' 條件的行。 請參閱 Unity 目錄中的使用者定義函式 (UDF)

  • 動態強制執行: 當用戶嘗試存取標記的數據資產時,Unity Catalog 會根據標記評估適用的原則,並強制執行定義的訪問控制。

    從原則中被明確排除的使用者可以繼續對基礎資料執行動作,例如進行深度和淺層複製,以及時間旅行。 但是,未從 ABAC 策略中排除的使用者將受到 適用於細粒度存取控制的相同限制的約束。

  • 稽核記錄: 標記數據資產的所有作業都會擷取並記錄在稽核記錄系統日誌表中,以便於全面的可見性和合規性追蹤。 請參閱 稽核記錄

若要瞭解如何設定 ABAC,請參閱 教學課程:設定 ABAC

如需設定 ABAC 的示範,請參閱使用 Unity 目錄探索 Attribute-Based 存取控制 (ABAC)。

原則類型

支援兩種類型的 ABAC 規範:

  • 數據列篩選原則 會根據其內容限制對數據表中個別數據列的存取。 篩選 UDF 會評估使用者是否應該看到每個數據列。 當存取取決於數據特性時,這些原則很有用。

    範例使用案例: 只會在客戶交易資料表中顯示資料列,其中區域資料列符合所控管的標記,例如 region=EMEA。 這可讓區域團隊只看到與其區域相關的資料。

  • 數據行遮罩原則 可控制使用者在特定數據行中看到的值。 遮罩功能的 UDF 可以根據管控的標籤返回實際值或經過修訂的版本。

    範例使用案例: 遮罩包含電話號碼的數據行,除非已標記 sensitivity=low 數據表或要求的用戶位於合規性群組中。 沒有存取權的使用者會看到空值或預留位置值,例如 XXX-XXX-XXXX

請參閱 建立和管理屬性型訪問控制 (ABAC) 原則

局限性

  • 您必須在 Databricks Runtime 16.4 或以上版本使用運算,或無伺服器運算,才能存取由 ABAC 保護的資料表。 不受該政策約束的使用者可以使用任何執行環境。
  • 你不能直接將ABAC政策套用在觀看次數上。 然而,當你查詢基於具有 ABAC 政策的資料表的檢視時,檢視擁有者的身份與權限會被用來評估這些政策。 這意味著:
    • 視圖擁有者必須對底層 ABAC 保護的資料表擁有適當的權限。
    • 資料存取權是根據視圖擁有者的權限來評估的。 當使用者查詢檢視時,他們會看到篩選或遮罩的資料,這些資料呈現的方式與檢視擁有者所見相同。
    • 行為可能會因你的運算設定而異。 詳情請參見 查詢視圖要求
  • 只有在政策對管線擁有者豁免的情況下,才支持具體化視圖和串流資料表的政策。
  • 使用者可以共享由 ABAC 原則管理的 Delta 表,前提是他們具有必要的 Delta 分享許可權不受 ABAC 原則的限制。 此原則不會控管收件者的存取權。 針對共享提供者,請參閱 將由 ABAC 原則保護的數據表和架構添加到共享。 關於分享接收者,請參閱 閱讀 ABAC 安全資料並套用 ABAC 政策
  • 對於特定資料表和特定使用者,執行時只能解析一個不同的列過濾器。 你可以定義多個列篩選策略,但當使用者查詢資料表時,只有一個策略的條件必須相符。 如果同一使用者和資料表同時被多個不同的列過濾器套用,Azure Databricks 會阻擋存取並拋出錯誤。 若多個策略產生相同過濾器(例如相同 UDF 且參數相同),則允許使用。 請參閱 多個篩選器或遮罩的故障排除
  • 在執行時,對於同一欄位和特定使用者,只有唯一的欄位遮罩會被解析。 你可以定義多個欄位遮罩政策,但當使用者查詢資料表時,每欄只需符合一個政策的條件。 如果同一使用者的同一欄位同時套用多個不同的欄位遮罩,Azure Databricks 會阻擋存取並拋出錯誤。 若多個策略產生相同遮罩(例如相同 UDF 與相同參數)則允許使用。 請參閱 多個篩選器或遮罩的故障排除
  • ABAC 政策的 MATCH COLUMNS 子句中最多可以包含三個資料行條件。
  • 你無法從透過 ABAC 策略套用列篩選或欄遮罩的表格中建立向量搜尋索引。
  • ABAC 政策沒有資訊結構表。 information_schema.row_filtersinformation_schema.column_masks表格僅顯示直接套用到資料表的列過濾器和欄位遮罩。 它們不會在執行時顯示 ABAC 政策定義,或是從 ABAC 政策衍生出的過濾器與遮罩。
  • 如需了解 ABAC 在專用運算上的限制,請參閱 限制

有關資料列篩選器和資料行遮罩的限制,請參閱 限制