Object Tagging

本主题介绍有关如何在 Snowflake 中使用标签的概念和说明。

要了解有关使用带有标签的掩码策略的更多信息,请参阅 基于标签的掩码策略

本主题内容:

什么是标签?

通过标签,数据专员可以通过集中式或分散式数据治理管理方法,监控敏感数据的合规性、发现、保护和资源使用用例。

标签是一种架构级对象,可以分配给另一个 Snowflake 对象。在将标签分配给 Snowflake 对象时,可为该标签分配任意字符串值。Snowflake 会将标签及其字符串值存储为键值对。标签在您的架构中必须无重复,标签值始终是字符串。

您可以使用 CREATE TAG 语句创建标签,并在将标签分配给对象时指定标签的字符串值。在创建对象时,可使用 CREATE <object> 语句将标签分配给对象,前提是此标签已存在。您还可以使用 ALTER <object> 语句将标签分配给现有对象。

单独一个标签可以同时分配给多个不同的对象类型(例如,同时分配给仓库和表)。在分配时,标签字符串值可以重复,也可以唯一。例如,可以将 cost_center 标签分配给多个表,该标签的字符串值可以始终是 sales。不过该字符串值也可以有所不同(例如 engineering、marketing、finance)。在定义标签并将标签分配给 Snowflake 对象后,可对标签进行查询,以监控对象的使用情况,从而方便执行监控、审计和报告等数据治理操作。

由于可以将标签分配给表、视图和列,因此通过设置标签并查询标签,即可发现包含敏感信息的大量数据库对象和列。在发现后,数据专员可以确定提供该数据的最佳方式,例如使用 行访问策略 进行选择性筛选,或使用 掩码策略 来确定数据是令牌化、完全进行掩码处理、部分进行掩码处理还是未进行掩码处理。

将标签分配给仓库可准确监控资源使用情况。通过查询资源标签,即可按成本中心或其他组织单位轻松对资源进行分组。此外,标签还有助于分析相对短期的业务活动(例如项目),以便更精细地了解使用了哪些资源、何时使用了资源以及资源的使用方式如何。

对象和列的标签配额

每个标签的字符串值最长可为 256 个字符,并可以为标签指定 允许的值

以下说明适用于表和视图以外的所有对象:

Snowflake 允许在单个对象上设置最多 50 个 唯一 标签。在 CREATE <object> 或 ALTER <object> 语句中,可以在一条语句中指定的标签数量上限是 100 个。

对于表和视图(包括这些表和视图中的列),唯一标签的数量上限略有不同。

表、视图和列

对于表或视图及其列,在一条 CREATE <object> 或 ALTER <object> 语句中可以指定的唯一标签数量上限是 100 个。这个总计值有以下限制:

  • 单个表或视图对象:50 个唯一标签。

  • 单个表或视图中组合的素有列:50 个唯一标签。

例如,如果对于表中的单个列,在该列上设置了 10 个唯一标签,则 Snowflake 允许:

  • 在同一列、表中的其他列或表列的某种组合上额外设置 40 个唯一标签。

  • 在表本身上额外设置 50 个唯一标签。

一旦达到表本身及其列的 50 个唯一标签上限,就不能再在表或其列上设置额外的标签。此时,如果希望在表或其列上设置额外的标签,那么要考虑采取的下一步行动就是如何管理对象的标签配额。

管理标签配额

50 个唯一标签的数据上限包括从使用 DROP TAG 语句删除标签开始 24 小时内删除的标签。存在此时间段的原因在于,允许删除标签的用户在必要时执行 UNDROP TAG 语句。在 24 小时的时间间隔内执行 UNDROP TAG 操作时,Snowflake 将还原删除操作之前的标签分配(即引用)。

在 24 小时期的时间段届满后,Snowflake 会清除与已删除标签相关的任何引用。此时,可以将为之前引用已删除标签的对象或列分配新的标签。

如需管理对象的标签配额,请按以下过程操作:

  1. 查询 TAG_REFERENCES 视图(在 Account Usage 中)以确定标签分配情况。

  2. 取消设置对象或列中的标签。例如:

    对于对象,请使用对应的 ALTER <object> ... UNSET TAG 命令。

    对于表或视图列,请使用对应的 ALTER { TABLE | VIEW } ... { ALTER | MODIFY } COLUMN ... UNSET TAG 命令。

  3. 使用 DROP TAG 语句删除标签。

指定标签值

ALLOWED_VALUES 标签属性允许指定在 对象 上设置标签时,可分配给标签的可能字符串值。单个标签的最大可能字符串值数量为 300 个。

在创建标签或将标签替换为 CREATE TAG 语句时,或在修改现有标签键时, ALTER TAG 可以指定这些值。请注意, ALTER TAG 语句支持为标签添加允许的值 删除现有值。

若要确定标签允许的值列表,请调用 GET_DDL 函数或 SYSTEM$GET_TAG_ALLOWED_VALUES 函数。

例如:

创建一个名为 'finance' 的标签,该标签仅允许两个值,即 'engineering'cost_center

create tag cost_center
    allowed_values 'finance', 'engineering';
Copy

验证允许的值:

select get_ddl('tag', 'cost_center')

+------------------------------------------------------------------------------+
| GET_DDL('tag', 'cost_center')                                                |
|------------------------------------------------------------------------------|
| create or replace tag cost_center allowed_values = 'finance', 'engineering'; |
+------------------------------------------------------------------------------+
Copy

修改名为 cost_center 的标签,将 'marketing' 添加为允许的字符串值:

alter tag cost_center
    add allowed_values 'marketing';
Copy

修改名为 cost_center 的标签,以将 'engineering' 从允许的字符串中删除:

alter tag cost_center
    drop allowed_values 'engineering';
Copy

若要获取给定标签允许的字符串值列表,请调用 GET_DDL 函数或 SYSTEM$GET_TAG_ALLOWED_VALUES 函数。例如,假设 cost_center 标签存储在名为 governance 的数据中和名为 tags 的架构中。

select system$get_tag_allowed_values('governance.tags.cost_center');

+--------------------------------------------------------------+
| SYSTEM$GET_TAG_ALLOWED_VALUES('GOVERNANCE.TAGS.COST_CENTER') |
|--------------------------------------------------------------|
| ["finance","marketing"]                                      |
+--------------------------------------------------------------+
Copy

标签沿袭

标签基于 Snowflake 安全对象层次结构继承。Snowflake 建议,在定义标签键时尽可能贴近 Snowflake 环境中的 安全对象 层次结构。

标签管理员可以对表和视图应用掩码策略。

标签继承意味着,如果将标签应用于表,则此标签也会应用于该表中的列。这种行为方式称为标签沿袭。

给定对象上继承的标签可以覆盖。例如,如果某个表列继承了名为 cost_center 的标签,其字符串值为 sales,则可以使用更具体的标签字符串值(如 sales_na)更新该标签,以指定北美销售成本中心。此外,还可以为表列应用新标签。使用 ALTER TABLE ...ALTER COLUMN 语句更新列上的标签字符串值,并在列上设置一个或多个额外的标签。

定义标签键并将标签分配给 Snowflake 对象后,使用指定的表函数监控标签、标签引用和标签沿袭,或是查询视图,如 使用 SQL 监控标签 (本主题内容)所示。

备注

标签沿袭 包括到嵌套对象的 传播。例如:

table_1 » view_1 » materialized_view_1

如果已存在相对于基础表或视图的嵌套对象,则在基础对象上设置标签时,不会导致在嵌套对象上自动设置标签。在此示例中,在 table_1 上设置的标签不会导致 view_1materialized_view_1 上设置相同的标签。这种行为方式也适用于列。

如果需要将基础对象或列上的标签转移到嵌套对象,请在嵌套对象上执行 REPLACE OR CREATE 语句, 确保 SQL 语句指定嵌套对象或列上的标签。

优势

使用方便:

只需定义一次标签,即可按需将其应用于任意多个不同的对象。

标签沿袭:

由于标签是继承的,因此将标签应用于安全对象层次结构中较高级别的对象时,此标签会应用于所有子对象。例如,如果在一个表上设置了标签,则该表中的所有列都会继承该标签。

通过复制实现一致的分配:

Snowflake 会将主数据库中的标签及其分配情况复制到辅助数据库。

有关更多信息,请参阅 复制 (本主题内容)。

敏感数据跟踪和资源使用情况:

标签可简化敏感数据(例如 PII、密钥)的识别,并且能够提高 Snowflake 资源使用情况的可见性。借助位于同一系统中的数据和元数据,分析师可以根据标签定义(例如 cost_centerdepartment)快速确定哪些资源消耗的 Snowflake credit最多。

集中管理或分散管理:

标签支持不同的管理方法,以促进遵守内部和外部监管要求。

在集中方法中, tag_admin 自定义角色会创建标签,并将其应用于 Snowflake 对象。

在分散方法中,各团队将标签应用于 Snowflake 对象, tag_admin 自定义角色创建标签以确保标签命名的一致性。

注意事项

未来授权:

不支持对标签进行 未来授权

为解决此问题,请将 APPLY TAG 权限授予自定义角色,以允许该角色将标签应用于另一个对象。

Snowflake Native App:

当版本化架构中存在标签时,创建设置脚本时要小心。有关详细信息,请参阅 版本架构注意事项

将标签与 Snowflake 对象和功能配合使用

下面介绍标签如何影响 Snowflake 中的对象和功能。

受支持对象

下表基于 Snowflake 安全对象层次结构,列出了标签支持的对象,包括列在内。

除非下表中另有说明,否则可以使用 CREATE <object> 语句或 ALTER <object> 语句在对象上设置标签。

可以使用 CREATE TABLE、CREATE VIEW、ALTER TABLE ...MODIFY COLUMN 或 ALTER VIEW 语句在列上设置标签。

对象层次结构

受支持对象

备注

组织

账户

标签可由具有全局 APPLY TAG 权限的角色在 当前账户设置

账户

应用程序

应用程序包

数据库

集成

支持所有 类型

使用 ALTER INTEGRATION 命令在集成上设置标签。

网络策略

使用 ALTER NETWORK POLICY 命令在网络策略上设置标签。

角色

共享

数据共享提供商会在共享上设置标签。这些标签对数据共享使用者不可见。使用 ALTER SHARE 命令在共享上设置标签。

用户

仓库

数据库

数据库角色

使用 ALTER DATABASE ROLE 命令在数据库角色上设置标签。

架构

架构

警报

BUDGET 实例

使用 ALTER BUDGET 命令在 SNOWFLAKE.CORE.BUDGET 类的实例上设置标签。

CLASSIFICATION 实例

使用 ALTER SNOWFLAKE.ML.CLASSIFICATION 命令在 SNOWFLAKE.ML.CLASSIFICATION 类的实例上设置标签。

外部函数和 UDF

使用 ALTER FUNCTION 命令在外部函数上设置标签或 UDF.

外部表

您可以使用 CREATE EXTERNAL TABLE 语句创建带有标签的外部表。

要管理外部表上的标签分配,请使用 ALTER TABLE 命令。

Git 存储库

Iceberg 表

物化视图

管道

使用 ALTER PIPE 语句在语句的管道上设置标签。

策略

使用相应的 ALTER <policy> 语句,在 掩码密码行访问会话 策略上设置标签。

过程

使用 ALTER PROCEDURE 语句在存储过程上设置标签。

暂存区

使用 ALTER STAGE 语句在暂存区上设置标签。

任务

使用 ALTER TASK 语句在任务上设置标签。

视图

表或视图

包括 事件表

Object Tagging 和掩码策略

有关详细信息,请参阅 基于标签的掩码策略

请注意,直接分配给列的掩码策略优先于基于标签的掩码策略。

CREATE TABLE 语句

使用 CREATE TABLE ...LIKE,分配给源表的标签将会分配给目标表。

动态表

您可以使用行访问策略、掩码策略和标签来创建动态表。有关更多信息,请参阅:

复制

标签及其分配可以从源账户复制到目标账户。

从源账户进行初始复制后,无法在目标账户中修改标签分配。例如,不允许在辅助(即复制的)数据库上设置标签。要在目标账户中修改标签分配,请在源账户中修改这些分配,然后将它们复制到目标账户。

对于 数据库复制,如果满足以下任一条件,则复制操作会失败:

  • 主数据库位于 Enterprise(或更高版本)的账户中,包含标签在内,但批准复制的一个或多个账户的版本较低。

  • 主数据库中包含的对象可对其他数据库中的标签进行 悬空引用

若要避免出现悬空引用错误,请使用 复制或故障转移组 来复制数据库和账户级对象。确保复制组包括:

  • ALLOWED_DATABASES 属性中包含标签的数据库。

  • OBJECT_TYPES 属性中具有标签的其他账户级对象,例如 ROLESWAREHOUSES

    有关详细信息,请参阅 CREATE REPLICATION GROUPCREATE FAILOVER GROUP

备注

使用复制和故障转移组或数据库复制时:

  • 故障转移/故障恢复功能仅适用于 Business Critical Edition(或更高版本)的 Snowflake 账户。

    有关更多信息,请参阅 跨多个账户的复制和故障转移简介

  • 如果在 ALTER DATABASE 语句或 OR CREATE ALTER 语句(针对复制或故障转移组)中为数据库复制指定了 IGNORE EDITION CHECK 子句,则在目标账户的版本低于 Business Critical 时,可能会发生标签复制。

    有关详细信息,请参阅这些命令中的子句说明。

克隆

  • 源对象(例如表)中的标签关联保存在克隆的对象中。

  • 对于数据库或架构:

    也会克隆存储在该数据库或架构中的标签。

    克隆数据库或架构时,也会克隆保留在该架构或数据库中的标签。

    如果表或视图存在于源架构/数据库中,并且引用了同一架构或数据库中的标签,则克隆的表或视图将映射到相应的克隆标签(在目标架构/数据库中),而不是源架构或数据库中的标签。

数据共享

  • 在共享视图和标签存在于不同数据库中时,将对于包含标签的数据库的 REFERENCE_USAGE 权限授予共享。有关详细信息,请参阅 共享来自多个数据库的数据

  • 在数据共享使用者账户中:

    • 执行 SHOW TAGS 返回共享标签,前提是执行 SHOW TAGS 命令的角色具有包含共享标签的架构的 USAGE 权限。

      如果提供商将标签的 READ 权限授予共享或共享数据库角色,则使用者可以查看共享标签的标签分配。有关详细信息,请参阅 共享标签参考

    • 如果将来自数据共享提供商账户的标签分配给共享表,则数据共享使用者无法调用 SYSTEM$GET_TAG 函数或 TAG_REFERENCES Information Schema 表函数来查看标签分配。

创建和分配标签

以下是在 Snowflake 中使用标签的高级概述:

  • 使用 CREATE TAG 语句创建标签。

  • 使用 Snowsight 或 ALTER <object> 命令将标签分配给 现有 Snowflake 对象。

    请注意,可以使用 CREATE <object> 命令将标签分配给 对象。请参阅本主题内的 受支持对象 部分,以评估仅支持使用 ALTER <object> 命令设置标签的对象。

分配标签后,您可以使用 SQL 或 Snowsight 来监控标签使用情况。有关详细信息,请参阅 使用 SQL 监控标签使用 Snowsight 监控标签 (本主题内容)。

为简化起见,工作流采用集中式方法管理标签,其中 tag_admin 自定义角色同时具有 CREATE TAG 和全局 APPLY TAG 权限。

  1. 创建自定义角色并分配权限。

    在集中式管理方法中, tag_admin 自定义角色负责为 Snowflake 对象创建和分配标签。

    请注意,此示例使用 ACCOUNTADMIN 系统角色。如果不希望在生产环境中使用此权限较高的角色,请验证为 tag_admin 自定义角色分配权限的角色是否具有限定 tag_admin 自定义角色所需的权限。有关更多信息,请参阅 管理标签 (本主题内容)。

    USE ROLE USERADMIN;
    CREATE ROLE tag_admin;
    USE ROLE ACCOUNTADMIN;
    GRANT CREATE TAG ON SCHEMA mydb.mysch TO ROLE tag_admin;
    GRANT APPLY TAG ON ACCOUNT TO ROLE tag_admin;
    
    Copy
  2. tag_admin 自定义角色授予充当标签管理员的用户。

    USE ROLE USERADMIN;
    GRANT ROLE tag_admin TO USER jsmith;
    
    Copy
  3. 执行 CREATE TAG 语句以创建标签。

    USE ROLE tag_admin;
    USE SCHEMA mydb.mysch;
    CREATE TAG cost_center;
    
    Copy
  4. 将标签分配给 Snowflake 对象或列。

    SQL:

    您可以使用 ALTER <object> 命令,在现有的所有受支持对象和列上设置标签。部分对象支持在创建或替换对象时设置标签。有关详细信息,请参阅本主题 受支持对象 部分中的表。

    例如:

    • 要在新仓库上设置标签,请使用 CREATE WAREHOUSE 命令。

      USE ROLE tag_admin;
      CREATE WAREHOUSE mywarehouse WITH TAG (cost_center = 'sales');
      
      Copy
    • 要在现有仓库上设置标签,请使用 ALTER WAREHOUSE 命令。

      USE ROLE tag_admin;
      ALTER WAREHOUSE wh1 SET TAG cost_center = 'sales';
      
      Copy
    • 要在现有列上设置标签,请使用 ALTER TABLE ...MODIFY COLUMN 命令(对于表列)或 ALTER VIEW ...MODIFY COLUMN 命令(对于视图列)。请注意,可以在单个语句中设置或取消设置多个标签。

      ALTER TABLE hr.tables.empl_info
        MODIFY COLUMN job_title
        SET TAG visibility = 'public';
      
      Copy
    Snowsight:

    您可以使用 Snowsight 在现有表、视图和列上设置标签。

    有多个选项可用于设置标签:

    • 使用对象资源管理器(即 Data » Databases)导航到所需表、视图或列。

      选择 More 菜单(即 ...) » Edit,然后选择 + Tag。按照提示管理标签分配。

    • 在 Snowsight 中导航到 Governance 区域(即 Monitoring » Governance),然后执行以下操作:

      • 选择一个磁贴、分布百分比及最常用的标签或表之一。在 Dashboard 中选择一个项目时, Snowsight 会将您重定向到 Tagged Objects 选项卡。

      • 按需修改筛选器。选择对象或列时, Snowsight 会将您重定向到对象资源管理器中的相应位置。按需更新标签分配。

    • 直接导航到 Tagged Objects 选项卡。修改筛选器,选择对象或列,并管理标签分配。

    备注

    若要访问 Governance 区域,请执行下列操作之一:

    • 使用 ACCOUNTADMIN 角色。

    • 用于获授 GOVERNANCE_VIEWER OBJECT_VIEWER 数据库角色的角色。

      有关这些数据库角色的详细信息,请参阅 SNOWFLAKE 数据库角色

使用 SQL 监控标签

您可以使用两个不同的 Account Usage 视图、两个 Information Schema 表函数、一个 Account Usage 表函数和一个系统函数来通过 SQL 监控标签。

考虑通过两种通用方法来确定如何监控标签使用情况可能会有所帮助。

发现标签

Snowflake 支持通过以下选项来列出标签,并确定给定标签键的标签字符串值。

  • 确定账户中的标签:

    在共享 SNOWFLAKE 数据库的 Account Usage 架构中使用 TAGS 视图。此视图可视为 Snowflake 账户中所有标签的 目录,提供有关当前和已删除标签的信息。例如:

    SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS
    ORDER BY TAG_NAME;
    
    Copy
  • 确定给定标签的值:

    使用 SYSTEM$GET_TAG 系统函数,返回分配给指定标签的标签值以及 Snowflake 对象或列。

    SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
    
    Copy

确定分配

Snowflake 支持不同的选项来确定标签分配,具体取决于查询需要针对的是账户还是特定数据库,以及是否需要标签沿袭。

  • 具有沿袭的账户级别查询:

    使用 Account Usage 表函数 TAG_REFERENCES_WITH_LINEAGE,确定具有给定标签键和标签值并且也包括标签沿袭的所有对象:

    SELECT *
    FROM TABLE(
      snowflake.account_usage.tag_references_with_lineage(
        'my_db.my_schema.cost_center'
      )
    );
    
    Copy
  • 无沿袭的账户级别查询:

    使用 Account Usage TAG_REFERENCES 视图,确定具有给定标签键和标签值但 包括标签沿袭的所有对象:

    SELECT * FROM snowflake.account_usage.tag_references
    ORDER BY TAG_NAME, DOMAIN, OBJECT_ID;
    
    Copy
  • 具有沿袭的数据库级别查询:

    每个 Snowflake 数据库都包含一个 Snowflake Information Schema。使用 Information Schema 表函数 TAG_REFERENCES,确定具有给定标签并且在给定数据库中也包括标签沿袭的所有对象:

    SELECT *
    FROM TABLE(
      my_db.INFORMATION_SCHEMA.TAG_REFERENCES(
        'my_table',
        'table'
      )
    );
    
    Copy
  • 对表或视图中每一列上的所有标签进行的数据库级别查询,有沿袭:

    使用 Information Schema 表函数 TAG_REFERENCES_ALL_COLUMNS,获取在给定表或视图中的每一列上设置的所有标签。

    请注意,TABLE必须 用于包含列的所有对象,即使对象名称是视图(即视图、物化视图)。

    SELECT *
    FROM TABLE(
      INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'my_table',
        'table'
      )
    );
    
    Copy

使用 Snowsight 监控标签

可以使用 Snowsight Monitoring » Governance 区域来监控和报告策略以及带有表、视图和列的标签的使用情况。有两种不同的界面:DashboardTagged Objects

当使用 DashboardTagged Objects 界面时,请注意以下详细信息。

  • DashboardTagged Objects 界面需要一个正在运行的仓库。

  • Snowsight 每 12 小时更新一次 Dashboard

  • Tagged Objects 信息延迟可能长达两个小时,并返回最多 1000 个对象。

访问 Snowsight 中的治理区域

要访问 Governance 区域,Snowflake 账户必须是 Enterprise Edition 或更高版本。此外,您必须执行以下任一操作:

  • 使用 ACCOUNTADMIN 角色。

  • 使用已 直接 授予 GOVERNANCE_VIEWER OBJECT_VIEWER 数据库角色的账户角色。

    必须 使用获授这些数据库角色的账户角色。目前,Snowsight 不评估角色层次结构和有权访问表、视图、数据访问策略和标签的用户定义数据库角色。

    要确定是否向账户角色授予了这两个数据库角色,请使用 SHOW GRANTS 命令:

    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | created_on                    | privilege | granted_on    | name                        | granted_to | grantee_name    | grant_option | granted_by |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    | 2024-01-24 17:12:26.984 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE       | DATA_ENGINEER   | false        |            |
    | 2024-01-24 17:12:47.967 +0000 | USAGE     | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER     | ROLE       | DATA_ENGINEER   | false        |            |
    |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
    

    如果您的账户角色未被授予这两个数据库角色或其中之一,请使用 GRANT DATABASE ROLE 命令并再次运行 SHOW GRANTS 命令以确认授予角色:

    USE ROLE ACCOUNTADMIN;
    GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer;
    GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer;
    SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
    
    Copy

    有关这些数据库角色的详细信息,请参阅 SNOWFLAKE 数据库角色

仪表板

作为数据管理员,您可以使用 Dashboard 界面通过以下方式监控标签和策略使用情况。

  • 覆盖率:根据表、视图或列是否具有策略或标签来指定计数和百分比。

  • 流行度:列出并统计最常用的策略和标签。

覆盖范围和流行程度提供了有关数据保护和标记程度的快照。

当您选择计数、百分比、策略名称或标签名称时, Tagged Objects 界面打开。Tagged Objects 界面会根据您在 Dashboard 中的选择自动更新筛选器。

监控信息是在多个 Account Usage 视图上运行复杂且查询密集型操作的替代方案或补充。

这些视图可能包括但不限于 COLUMNSPOLICY_REFERENCESTABLESTAG_REFERENCES,以及 VIEWS 视图。

标记对象

作为数据管理员,您可以使用此表将 Dashboard 中的覆盖范围和流行程度快速关联到特定表、视图或列的列表。您还可以手动筛选表结果,如下所示。

  • 选择 Tables 或者 Columns

  • 对于标签,可以使用标签、不使用标签或按特定标签进行筛选。

  • 对于策略,可以使用策略、不使用策略或按特定策略进行筛选。

在表中选择一行时,系统将打开 Data » Databases 中的 Table DetailsColumns 选项卡。您可以根据需要编辑标签和策略分配。

管理标签

标签权限

Snowflake 支持以下权限,以便确定用户是否可以创建、设置和拥有标签。

请注意,对架构中的对象进行操作还需要对父数据库和架构具有 USAGE 权限。

权限

用途

CREATE

允许在架构中创建新的标签。

APPLY

支持对 Snowflake 对象上的标签进行设置和取消设置操作。有关语法示例,请参阅 DDL 命令、操作和权限总结

OWNERSHIP

转移标签的所有权,从而授予对标签的完全控制权。更改标签的大多数属性时都需要此权限。

标签 DDL 参考

Snowflake 支持通过以下 DDL 创建和管理标签:

请注意,Snowflake 不支持对标签对象进行的 描述 操作。

DDL 命令、操作和权限总结

下表总结了标签权限和 DDL 操作之间的关系。

操作

需要权限

创建标签。

在同一架构中具有 CREATE TAG 权限的角色。

更改标签。

具有标签的 OWNERSHIP 权限的角色。

删除和取消删除标签。

具有标签的 OWNERSHIP 权限以及标签所在的数据和架构的 USAGE 权限的角色。

显示标签。

以下权限之一: . 具有标签所在架构具有 USAGE 权限的角色, . 具有 ACCOUNT 的 APPLY TAG 权限的角色。

在对象上设置或取消设置标签。

对于单个对象,具有账户的 APPLY TAG 权限的角色, 具有标签的 APPLY TAG 权限以及设置标签的对象的 OWNERSHIP 权限的角色。请参阅 受支持对象

在列上设置或取消设置标签。

具有账户的 APPLY TAG 权限的角色, 具有标签的 APPLY 权限以及表或视图的 OWNERSHIP 权限的角色。

获取对象上的标签。

请参阅 SYSTEM$GET_TAGTAG_REFERENCESTAG_REFERENCES_WITH_LINEAGE

Snowflake 支持在对象上创建和设置标签的不同权限。

  1. 对于 tag_admin 自定义角色在 所有 对象/列上创建和设置标签的集中式标签管理方法,需要以下权限:

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply tag on account to role tag_admin;
    
    Copy
  2. 在混合管理方法中,单个角色具有 CREATE TAG 权限,以确保标签的命名一致,并且各个团队或角色具有特定标签的 APPLY 权限。

    例如,可以向自定义角色 finance_role 授予在角色拥有的表和视图上设置标签 cost_center 的权限(即该角色具有表或视图的 OWNERSHIP 权限):

    use role securityadmin;
    grant create tag on schema <db_name.schema_name> to role tag_admin;
    grant apply on tag cost_center to role finance_role;
    
    Copy
语言: 中文