重要
此功能在 Beta 版中。
本页介绍 Unity 目录中基于属性的访问控制(ABAC)。
什么是 ABAC?
ABAC 是一种数据治理模型,提供跨 Azure Databricks 的灵活、可缩放和集中式访问控制。 ABAC 允许基于应用于数据资产的受管理标记定义策略,从而补充 Unity 目录的现有特权模型。 这简化了治理,增强了安全性。
拥有 MANAGE
权限或对象所有权的用户只需定义一次策略,并可以一致地应用于多个数据资产。 策略附加到目录、架构或表级别,并自动应用于该范围内的所有表。 在较高级别定义时,策略会向下继承到子对象。 数据资产上的受治理标记决定了强制执行的策略,从而允许访问控制动态调整。
ABAC 的优点
- 可伸缩性: 利用标记而不是单个权限大规模管理访问控制。
- 灵活性: 通过更新标记或策略来轻松调整治理,而无需修改每个数据资产。
- 集中式治理: 通过跨目录、架构和表的统一模型简化策略管理。
- 提高了安全性: 根据数据属性动态强制实施精细访问控制。
- 可审核性: 通过全面的审核日志保持对数据访问的实时可见性。
ABAC 的工作原理
Unity 目录中的 ABAC 使用受治理的标记、策略和用户定义的函数(UDF)来强制实施基于属性的动态访问控制。 以下组件和机制是 ABAC 的核心:
受治理的标记: 治理的标记使用标记策略在帐户级别定义。 这些标记表示数据敏感度、分类或业务域等属性,并分配给 Unity 目录中的表、架构或目录。 它们充当推动策略实施的参数。 请参阅 标记策略 并将 标记应用于 Unity 目录安全对象。
政策: 策略在 Unity 目录中的三个分层级别创建和管理:
- 目录级别: 应用影响所有包含架构和表的广泛策略。
- 架构级别: 应用特定于架构及其表的策略。
- 表级别: 直接对单个表应用细化策略。
策略遵循 继承模型:在目录或架构级别定义策略时,它会自动应用于该范围内的所有子对象、架构和表。 这样,管理员就可以通过应用管理大型数据集的单个策略来实现高效的治理。 继承的策略可减少冗余,并在整个数据层次结构中促进一致的强制实施。 Databricks 建议在最适用的级别(通常是目录)定义策略,以最大程度地提高治理效率并减少管理开销。 请参阅 创建和管理基于属性的访问控制(ABAC)策略。
用户定义的函数(UDF): UDF 是在架构级别定义的自定义函数,可在 Unity 目录命名空间中全局引用。 UDF 用于策略中表达复杂的逻辑,例如基于属性筛选行或屏蔽列值。 例如,一个名为
filter_region
的 UDF 可以用于行筛选策略中,仅返回符合region = 'EMEA'
的行。 请参阅 Unity Catalog 中的用户定义函数 (UDF)。动态强制: 当用户尝试访问标记的数据资产时,Unity 目录会基于标记评估适用的策略,并强制实施定义的访问控制。
从策略中显式排除的用户可以继续执行深度和浅表克隆等作,以及对基础数据进行时间旅行。
若要了解如何配置 ABAC,请参阅教程:配置 ABAC。
有关配置 ABAC 的演示,请参阅使用 Unity Catalog 目录了解基于属性的访问控制(ABAC)。
策略类型
支持两种类型的 ABAC 策略:
行筛选器策略 根据表的内容限制对表中各个行的访问。 筛选器 UDF 将评估是否应向用户显示每一行。 当访问依赖于数据特征时,这些策略非常有用。
示例用例: 仅显示客户事务表中的行,其中区域列与受管理标记匹配,例如
region=EMEA
。 这允许区域团队仅查看与其区域相关的数据。列掩码策略 控制用户在特定列中看到的值。 掩码 UDF 可以根据受治理的标记返回实际值或修订的版本。
示例用例: 隐藏包含电话号码的列,除非表格经过标记或请求用户属于合规组。 没有访问权限的用户会看到 null 值或占位符值,例如
XXX-XXX-XXXX
。
Beta 限制
ABAC 预览阶段存在以下限制:
- 对表具有
MODIFY
权限但没有 ASSIGN 标记策略权限的用户可以删除具有受管理标记的列。 这会更改表结构,并可能使绑定到该列的 ABAC 策略失效。 - ABAC beta 在工作区级别已启用。 从 beta 版中未启用的工作区访问 Databricks 时,不会在目录中强制实施 ABAC 策略。
- 如果用户具有所需的增量共享权限 并且 不受 ABAC 策略限制,则用户可以共享受 ABAC 策略保护的表。 该策略不控制收件人的访问权限。 有关共享提供程序,请参阅 向共享添加受 ABAC 策略保护的表和架构。 有关共享收件人,请参阅 读取受 ABAC 策略保护的数据资产。
- 不支持视图。
- 不支持外部目录。
- 不支持具体化视图和流式处理表。
- 只有一个列掩码或行筛选器可以应用于对象层次结构中的给定列或行。 应用多个掩码或筛选器可能会使表不可访问。