重要
此功能在 Beta 版中。
本页介绍如何在 Unity 目录中配置行筛选器和列掩码策略。 有关基于属性的访问控制(ABAC)和策略的详细信息,请参阅 Unity 目录基于属性的访问控制(ABAC)。 若要将标记应用于对象,请参阅 标记策略 并将 标记应用于 Unity 目录安全对象。
启用 ABAC
ABAC beta 在工作区级别已启用。 Databricks 无法在读取共享目录时强制实施 ABAC,除非每个访问目录的工作区中也启用了 ABAC。
若要创建和管理 ABAC 策略,必须启用 ABAC 和标记策略 beta 版。
若要启用 ABAC beta 版本,请执行以下作:
- 作为工作区管理员,单击 Azure Databricks 工作区顶部栏中的用户名。
- 从菜单中选择 预览。
- 将 “基于属性的访问控制 ”开关设置为 “开”。
若要启用标记策略 beta 版,请参阅 “启用标记策略”。
在对象上创建策略
所需的权限:MANAGE
对象本身或对象所有者的权限。
目录资源管理器
在 Azure Databricks 工作区中,单击
目录。
选择确定策略范围的对象,例如目录、架构或表。
单击“策略”选项卡。
单击“新建策略”。
在 “常规”中,输入策略的名称和说明。
在 负责人中:
- 在 “应用于...”中,搜索并选择策略所管理的对象。
- 在 排除...中,搜索并选择要从策略中排除的主体。 例如,可以排除属于策略适用的组的用户。
在 Type 和 target 中:
- 在 策略类型中,选择 “行筛选器 ”或 “列掩码”。
- 在 策略目标中,选择策略的范围。 这可以是广泛的范围,例如整个目录或架构,也可以是较窄的范围,例如其中的特定表或列。
- 在 表级别条件中,指定与此策略应用到的表匹配的条件。 例如,
hasTag("tag")
或hasTagValue("tag", "value")
。
在 Function 中,选择要使用此策略的函数并输入所需的参数。
单击“创建策略”。
SQL
下面是用于创建策略的常规语法:
CREATE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN has_tag('<key>') OR has_tag_value('<key>', '<value>')]
MATCH COLUMNS has_tag('<key>') OR has_tag_value('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
此示例定义了一种行筛选策略,该策略从美国分析师的查询中排除涉及欧洲客户的行:
CREATE POLICY hide_eu_customers
ON SCHEMA prod.customers
COMMENT 'Hide rows with European customers from sensitive tables'
ROW FILTER non_eu_region
TO us_analysts
FOR TABLES
MATCH COLUMNS
hasTag('geo_region') AS region
USING COLUMNS (region);
此示例定义一个列掩码策略,用于隐藏美国分析师的社会保障号码,但组中的 admins
那些策略除外:
CREATE POLICY mask_SSN
ON SCHEMA prod.customers
COMMENT 'Mask social security numbers'
COLUMN MASK mask_SSN
TO us_analysts
EXCEPT admins
FOR TABLES
MATCH COLUMNS
hasTagValue('pii', 'ssn') AS ssn
ON COLUMN ssn;
重要
可以全局复制标记数据。 请勿使用可能损害资源安全性的标记名称或值。 例如,不要使用包含个人信息或敏感信息的标记名称。
编辑策略
所需的权限:MANAGE
对象本身或对象所有者的权限。
目录资源管理器
- 在 Azure Databricks 工作区中,单击
目录。
- 选择确定策略范围的对象,例如目录、架构或表。
- 单击“策略”选项卡。
- 选择策略并进行编辑。
- 单击“更新策略”。
SQL
REPLACE POLICY <policy_name>
ON <securable_type> <securable_name>
COMMENT '<policy_description>'
-- One of the following:
ROW FILTER <udf_name>
| COLUMN MASK <udf_name> ON COLUMN <target_column>
TO <principal_name>[, <principal_name>, ...]
[EXCEPT <principal_name>[, <principal_name>, ...]]
FOR TABLES
[WHEN has_tag('<key>') OR has_tag_value('<key>', '<value>')]
MATCH COLUMNS has_tag('<key>') OR has_tag_value('<key>', '<value>') AS <alias>
USING COLUMNS <alias>[, <alias>, ...];
删除策略
所需的权限:MANAGE
对象本身或对象所有者的权限。
目录资源管理器
- 在 Azure Databricks 工作区中,单击
目录。
- 选择确定策略范围的对象,例如目录、架构或表。
- 单击“策略”选项卡。
- 选择策略。
- 单击“ 删除策略”。
SQL
DROP POLICY <policy_name> ON <securable_type> <securable_name>