本页演示如何将标记应用于 Unity 目录安全对象。
标记是包含键和可选值的属性,可用于在 Unity Catalog 中组织和分类安全对象。 使用标记还可以使用工作区搜索功能简化表和视图的搜索和发现。
警告
标记数据以纯文本形式存储,可全局复制。 不要使用标记名称、值或描述符,这些标记名称或描述符可能会损害资源的安全性。 例如,不要使用包含个人或敏感信息的标记名称、值或描述符。
支持的安全对象
目前,目录、架构、表、表列、卷、视图、已注册模型和模型版本支持安全对象标记。 有关安全对象的详细信息,请参阅“Unity Catalog 中的安全对象”。
还可以将标记应用于仪表板。 请参阅 “使用仪表板标记”。
标记继承
将标记应用于目录时,该目录中的所有架构和对象都会自动继承该标记。 应用于架构的标记同样由该架构中的所有对象继承。 标记继承仅适用于目录和架构级别,并且不会扩展到单个表列。
受治理的标记
重要
此功能目前以公共预览版提供。
受治理的标记是帐户级标记,具有一致性和控制的强制规则。 使用受治理的标记,可以定义允许的键和值,并控制哪些用户和组可以将它们分配给对象。 这可确保标记一致地应用并符合组织标准,从而集中控制分类、合规性和作。
受治理的标记:
- 只能由具有相应权限的用户或组分配或修改。 
- 必须使用关联标记策略中定义的值。 
- 在 UI 中标记有   
如果删除受治理的标记,则关联的标记将变为未连接。 标记保留在对象上,但任何人都可以分配或修改它们,而无需权限。 拥有适当权限的用户可以继续创建和分配不受控制的标记。
有关详细信息,请参阅 “治理的标记”。
系统标记
系统标记是 Azure Databricks 预定义的特殊 受治理标记 类型。 系统标记具有几个不同的特征:
- 系统标记定义(键和值)由 Azure Databricks 预定义。 
- 用户无法修改或删除系统标记键或值。 
- 用户可以通过受治理的标记权限设置来控制允许分配或取消分配系统标记的人员。 
- 一个扳手 - 显示在标记旁边。   
系统标记旨在支持跨组织进行标准化标记,尤其是用于数据分类、所有权或生命周期跟踪等用例。 通过使用预定义的受治理标记定义,系统标记有助于强制实施一致性,而无需用户手动定义或管理标记结构。
要求
要将标记添加到 Unity Catalog 安全对象,必须拥有该对象或具有以下所有特权:
- 对象上的 APPLY TAG权限
- 对象父架构上的 USE SCHEMA权限
- 对象父目录上的 USE CATALOG权限
若要将受管理标记添加到 Unity 目录安全对象,还必须对受管理标记具有 ASSIGN 权限。 请参阅 管理受治理标记的权限。
约束
下面列出了相关标记约束:
- 标记键区分大小写。 例如, - Sales和- sales是两个不同的标记。
- 最多可以将 50 个标记分配给单个安全对象(表或列)。 
- 每个标记最多可以有 50 个允许的值。 
- 每个工作区最多可以创建 1,000 个受管理标记。 
- 每个帐户最多可以创建 10,000 个标记。 
- 标记键的最大长度为 255 个字符。 
- 标记值的最大长度为 1000 个字符。 
- 标记键中不允许使用以下字符: - . , - = / :
- 标记键或值中不允许尾随空格和前导空格。 
- 仅表和视图支持使用工作区搜索 UI 的标记搜索。 
- 标记搜索需要确切的字词匹配。 
- 仪表板不支持标记搜索。 
添加和更新标记
对于已注册模型,必须使用目录资源管理器或 MLflow ClientAPI。 请参阅在模型上使用标记。
目录资源管理器
- 点击边栏中的 - 目录。 
- 选择安全对象。 
- 在“对象 概述 ”页上的 “标记”下,添加或更新标记: - 如果没有标记,请单击“添加标记”按钮。
- 如果已有标记,请单击  “添加/编辑标记”图标。 “添加/编辑标记”图标。
 
- 选择现有的标记 键 和 值 ,或输入新标记的名称。 - 受治理的标记位于“受控制”部分标题中,并具有锁定图标
- 标记密钥是必需的。 是否需要标记值取决于标记键。
 
- 受治理的标记位于“受控制”部分标题中,并具有锁定图标
SQL
              在 Databricks Runtime 16.1 及更高版本中,使用 SET TAG 和 UNSET TAG 来管理可安全对象上的标记。 例如:
> SET TAG ON CATALOG catalog `cost_center` = `hr`;
> UNSET TAG ON CATALOG catalog cost_center;
              在 Databricks Runtime 13.3 及更高版本中,将 ALTER <object> SQL 命令用于 SET TAGS 或 UNSET TAGS 管理可保护对象上的标签。 例如:
-- Add the governed tag to ssn column
ALTER TABLE abac.customers.profiles
ALTER COLUMN SSN
SET TAGS ('pii' = 'ssn');
有关可用的数据定义语言 (DDL) 命令及其语法的列表,请参阅 DDL 语句。
删除包含受治理标记的列
删除分配了一个或多个受治理标记的列时,删除操作将失败。 若要删除标记列,必须先从中删除所有受治理的标记。
按照此顺序防止潜在的数据泄漏。 不间断地连续完成这些步骤。
- 移除标记: - UNSET TAG ON COLUMN <catalog>.<schema>.<table>.<column> <tag_key>;
- 删除列: - ALTER TABLE <catalog>.<schema>.<table> DROP COLUMN <column>;
- 清空表以防止通过时间旅行访问已删除列的数据的历史访问: - VACUUM <catalog>.<schema>.<table> RETAIN 0 HOURS;
注意
与其他 Unity Catalog 表不同,当在外部数据源上删除外部表的列时,外部表上的列标记会自动被删除,并且这一元数据更改会立即反映在 Unity Catalog 中。
使用标记搜索表
使用 Azure Databricks 工作区搜索栏使用标记键和标记值搜索表和视图。 可以使用这两个表标记进行搜索。 不能使用标记搜索其他标记对象,例如表列、目录、架构或卷。
搜索结果中仅显示你有权查看的表和视图。 这意味着必须至少在对象(或对象的父目录和架构)上具有 BROWSE 特权才能在搜索结果中返回对象。
有关详情,请参阅“使用标记搜索表”。
从信息架构表检索标记信息
在 Unity Catalog 中创建的每个目录都包含一个 INFORMATION_SCHEMA。 此架构包括描述架构目录已知对象的表。 必须具有相应的权限才能查看架构信息。
查询以下内容以检索标记信息:
- INFORMATION_SCHEMA。CATALOG_TAGS
- INFORMATION_SCHEMA。COLUMN_TAGS
- INFORMATION_SCHEMA。SCHEMA_TAGS
- INFORMATION_SCHEMA。TABLE_TAGS
- INFORMATION_SCHEMA。VOLUME_TAGS
有关详细信息,请参阅信息架构。