将标记应用于 Unity 目录安全对象

标记是包含键和可选值的属性,可用于在 Unity Catalog 中组织和分类安全对象。 使用标记还可以使用工作区搜索功能简化表和视图的搜索和发现。

本页演示如何将标记应用于 Unity 目录安全对象。

警告

标记数据以纯文本形式存储,可全局复制。 不要使用标记名称、值或描述符,这些标记名称或描述符可能会损害资源的安全性。 例如,不要使用包含个人或敏感信息的标记名称、值或描述符。

支持的安全对象

安全对象标记支持目录、架构、表、表列、卷、视图、函数、已注册模型、模型版本、机密、外部元数据对象以及服务(模型服务、模型提供程序服务、MCP 服务和智能体服务)。 有关安全对象的详细信息,请参阅“Unity Catalog 中的安全对象”。

Important

外部元数据对象的标记功能已在公共预览版中提供。 SQL 支持标记外部元数据需要 Databricks Runtime 18.2 或更高版本。

还可以将标记应用于仪表板、Genie 代理、Databricks 应用和笔记本。 请参阅 “管理仪表板标记”、“ 添加标记”、“ 将标记应用于 Databricks 应用”和 “将标记应用于笔记本”。

ABAC 策略中的隐式标签继承

评估基于属性的访问控制(ABAC)策略时,在 Unity Catalog 对象模型的一个级别应用的标记会自动应用于其下的所有对象。 例如,如果标记目录,则其所有架构和表都会隐式继承标记。 但是,标记不会继承到列级别。

隐式标签继承发生在ABAC策略评估过程中。 标签继承同样适用于搜索。 搜索标签既会返回直接应用该标签的资产,也返回从父目录或模式继承该标签的资产。 参见 搜索与发现。

受治理的标签

受治理的标记是帐户级标记,具有一致性和控制的强制规则。 使用受治理的标记,可以定义允许的键和值,并控制哪些用户和组可以将它们分配给对象。 这可确保标记一致地应用并符合组织标准,从而集中管理分类、合规性和操作。

管理标签:

  • 只能由具有相应权限的用户或组分配或修改。

  • 必须使用关联标记策略中定义的值。

  • 在 UI 中会以锁形 锁定图标。 标记。

    标签分配对话框,其中键下拉菜单包含“Governed”和“Other”部分。

如果你创建的受治理标记与已分配给对象的标记键相同,则所有使用该键的现有标记分配会自动变为受治理状态。 请参阅 “管理现有标记分配”。

如果删除受治理的标记,则相关联的标记将变为未治理。 标记保留在对象上,但任何人都可以分配或修改它们,而无需权限。 拥有适当权限的用户可以继续创建和分配不受控制的标记。

有关详细信息,请参阅 “治理标签”。

要大规模地为Unity Catalog的表、列和卷分配受控标签,你可以自动化标签分配,而不是逐个标记资产。 告诉 Genie 你将资产认证或弃用的标准,通过试运行预览结果,然后启用自动化,按计划安全地为资产添加标签。 参见 自动化受控标签分配 (测试版)。

系统标记

系统标记是 Azure Databricks 预定义的特殊 受治理标记 类型。 系统标记具有几个不同的特征:

  • 系统标记定义(键和值)由 Azure Databricks 预定义。

  • 用户无法修改或删除系统标记键或值。

  • 用户可以通过受治理的标记权限设置来控制允许分配或取消分配系统标记的人员。

  • 一个扳手 扳手图标。 显示在标记旁边。 分配标记时,可以使用 “包括系统标记 ”切换来显示或隐藏系统标记。

    带有系统标签的标签分配对话框。

系统标记旨在支持跨组织进行标准化标记,尤其是用于数据分类、所有权或生命周期跟踪等用例。 通过使用预定义的受治理标记定义,系统标记有助于强制实施一致性,而无需用户手动定义或管理标记结构。

要求

要将标记添加到 Unity Catalog 安全对象,必须拥有该对象或具有以下所有特权:

  • 对象上的 APPLY TAG
  • USE SCHEMA 对象的父架构上
  • USE CATALOG 在对象的父编目上

若要将受管理标记添加到 Unity 目录安全对象,还必须对受管理标记具有 ASSIGN 权限。 请参阅 管理受治理标记的权限。

约束条件

下面列出了相关标记约束:

  • 标记键区分大小写。 例如,Sales 和 sales 是两个不同的标记。

  • 最多可以将 50 个标记分配给单个安全对象(表或列)。

  • 表在其所有列中最多可以包含 1,000 个列标记。

  • 标记键的最大长度为 256 个字符。

  • 标记值的最大长度为 256 个字符。

  • 标记键中不允许使用以下字符:

    . , - = / :

  • 标记键或值中不允许尾随空格和前导空格。

  • 标记搜索需要确切的字词匹配。

  • 不能将标记分配给单个 ALTER TABLE 命令中的多个列。 必须单独为每个列分配标记。 这不同于 COMMENT 子句,该子句支持一个命令中的多个列。

添加和更新标签

对于已注册模型,必须使用目录资源管理器或 MLflow ClientAPI。 请参阅在模型上使用标记。

目录资源管理器

  1. 点击侧边栏中的数据图标。目录。

  2. 选择 安全对象。

  3. 在“对象 概述 ”页上的 “标记”下,添加或更新标记:

    • 如果没有标记,请单击“添加标记”按钮。
    • 如果已有标记,请单击 “编辑”图标“添加/编辑标记”图标。
  4. 选择现有的标记 键 和 值 ,或输入新标记的名称。

    • 受管控的标记显示在“受管控”部分标题下,并具有锁定图标。 其他标记显示在 “其他”下。
    • 使用“包含系统标记”Wrench icon.Wrench icon.切换开关显示或隐藏系统标记(以 扳手图标标记)。
    • 标记密钥是必需的。 是否需要标记值取决于标记键。

SQL

在Databricks Runtime 16.1及以上版本中,使用 SET TAG 并 UNSET TAG 管理可保护对象的标签。 标记函数和过程需要 Databricks Runtime 18.1 或更高版本。 例如:

SET TAG ON CATALOG catalog `cost_center` = `hr`;

UNSET TAG ON CATALOG catalog cost_center;

请参阅 SET TAG 和 UNSET TAG。

在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 语句。

删除带有受治理标签的列

删除分配了一个或多个受治理标记的列时,删除操作将失败。 若要删除标记列,必须先从中删除所有受治理的标记。 按照此顺序防止潜在的数据泄漏。

  1. 移除标记:

    UNSET TAG ON COLUMN <catalog>.<schema>.<table>.<column> <tag_key>;
    
  2. 删除列:

    ALTER TABLE <catalog>.<schema>.<table>
      DROP COLUMN <column>;
    

若要永久删除列的数据,请按照 Drop 列中的步骤操作。 否则,时间旅行可能会泄露数据。

注意

与其他 Unity Catalog 表不同,当在外部数据源上删除外部表的列时,外部表上的列标记会自动被删除,并且这一元数据更改会立即反映在 Unity Catalog 中。

使用标签搜索 Unity 目录对象

在 Azure Databricks 工作区搜索栏中,可以使用标记键和标记值来搜索受支持的对象。 有关详细信息,请参阅 “使用标记进行搜索”。

搜索结果包括直接应用该标签的对象和从父目录或模式继承标签的对象。 例如,如果你将值为team的sales标签应用到目录上,搜索该标签会返回该目录及其下方的模式、表和其他对象。 当同一标签密钥在多个层级被分配时,适用最具体的分配。

从信息架构表检索标记信息

在 Unity Catalog 中创建的每个目录都包含一个 INFORMATION_SCHEMA。 此架构包括描述架构目录已知对象的表。 必须具有相应的权限才能查看架构信息。

查询以下内容以检索标记信息:

有关详细信息,请参阅信息架构。