Object Tagging 简介¶
什么是标签?¶
标签是一种架构级对象,可以分配给另一个 Snowflake 对象。将标签分配给 Snowflake 对象时,用户将标签与任意字符串值关联。Snowflake 会将标签及其字符串值存储为键值对。标签在您的架构中必须无重复,标签值始终是字符串。
以下是 Object Tagging 的一般特征:
一个对象可以同时有多个标签。有关更多信息,请参阅 Tag quotas。
单独一个标签可以同时分配给多个不同的对象类型(例如,同时分配给仓库和表)。
在分配时,标签字符串值可以重复,也可以唯一。例如,可以将
cost_center标签分配给多个表,该标签的字符串值可以始终是sales。或者,每个表的字符串值可能不同(例如engineering、marketing和finance)。
定义标签并将标签分配给 Snowflake 对象后,您可以对其进行查询,以监控对象的使用情况并促进审计和报告等数据治理操作。
亮点¶
- 使用方便:
只需定义一次标签,即可按需将其应用于任意多个不同的对象。
- 标签继承:
由于标签是继承的,因此将标签应用于安全对象层次结构中较高级别的对象时,此标签会应用于所有子对象。例如,如果在一个表上设置了标签,则该表中的所有列都会继承该标签。
- 自动传播:
配置标签,使其自动从源对象传播到目标对象。
- 通过复制实现一致的分配:
-
Snowflake 会将主数据库中的标签及其分配情况复制到辅助数据库。
- 集中管理或分散管理:
标签支持不同的管理方法,以促进遵守内部和外部监管要求。
在集中方法中,您可以创建
tag_admin自定义角色,来为 Snowflake 对象创建和应用标签。在分散方法中,各团队将标签应用于 Snowflake 对象,
tag_admin自定义角色创建标签以确保标签命名的一致性。
标签如何与对象关联¶
可以通过以下方式关联标签与对象:
有的人会使用 CREATE <object> 或 ALTER <object> 命令在对象上手动设置标签。请参阅 设置标签。
该对象继承了 Snowflake 安全对象层次结构中较高层级的对象的标签。例如,账户中的仓库继承在该账户上设置的标签。请参阅 标签继承。
该标签自动从一个对象传播到另一个对象。当一个对象依赖于另一个对象(例如,基于标记表的视图)或当数据从一个标记对象移动到另一个对象(例如,使用 CTAS 语句创建表)时,即可传播标签。请参阅 使用用户定义的标签自动传播标签。
该标签被自动设置在一个被归类为包含敏感数据的列上。要了解自动敏感数据分类如何使用标签映射来设置这些标签,请参阅 关于标签映射。
有的人会用 CREATE TABLE ... LIKE 或 CREATE TABLE ... CLONE 命令通过带标签的现有表创建表。
确定标签如何与对象关联¶
以下视图和函数包括 apply_method 列,该列显示了标签如何与对象关联。
例如,要确定标签是在对象上手动设置还是已传播,您可以执行以下命令并检查 apply_method 列的值。
SELECT tag_name, tag_value, apply_method, level, domain FROM TABLE(my_db.INFORMATION_SCHEMA.TAG_REFERENCES('my_table', 'TABLE'));
Tag quotas¶
You can set a maximum of 50 tags on a single object, including tables and views.
如果您已达到标签限制并想删除一个,请执行 ALTER <object> UNSET TAG 语句。
Separate quota for columns¶
You can set a maximum of 50 different tags on the columns of a single table. This is a limit on all of the columns combined.
The column limit is separate from the limit on the number of tags set on a table. For example, suppose you create the following table with tags on both the table and its columns:
CREATE TABLE t1 (
COL1 INT WITH TAG (tag1='col1', tag2='col1'),
COL2 INT WITH TAG (tag1='col2'),
)
WITH TAG (tag3='t1');
Snowflake allows you to do the following:
Set 49 more tags on the table
t1.Set 48 more tags on the columns of
t1. The limit is on different tags, sotag1isn't counted twice.
If you run a CREATE TABLE or ALTER TABLE statement to apply tags on the columns of a table, the maximum number of unique tag-entity associations is 100, where an entity is the table or a column. For example, if you have a table with 1,000 columns and you want to associate the same tag with every column, you need to run 10 ALTER statements.
需要 Enterprise Edition 的功能¶
所有账户均可创建和设置标签。但是,有些高级功能需要 Enterprise Edition 或更高版本。您的账户必须是 Enterprise Edition 或更高版本才能使用以下功能:
受支持对象¶
下表基于 Snowflake 安全对象层次结构,列出了标签支持的对象,包括列在内。
除非下表中另有说明,否则可以使用 CREATE <object> 语句或 ALTER <object> 语句在对象上设置标签。
可以使用 CREATE TABLE、CREATE VIEW、ALTER TABLE ... MODIFY COLUMN 或 ALTER VIEW 语句在列上设置标签。
对象层次结构 |
受支持对象 |
备注 |
|---|---|---|
组织 |
账户 |
|
账户 |
应用程序 |
|
应用程序包 |
||
计算池 |
||
数据库 |
||
故障转移组 |
||
集成 |
支持所有 类型。 使用 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 存储库 |
||
Apache Iceberg™ 表 |
||
镜像仓库 |
||
联接策略 |
||
物化视图 |
||
笔记本 |
||
密码策略 |
||
管道 |
使用 ALTER PIPE 语句在语句的管道上设置标签。 |
|
策略 |
||
过程 |
使用 ALTER PROCEDURE 语句在存储过程上设置标签。 |
|
投影策略 |
||
会话策略 |
||
快照 |
||
Snapshot set |
For WORM snapshots. Contains a set of snapshots for a specific database, schema, or table. |
|
暂存区 |
使用 ALTER STAGE 语句在暂存区上设置标签。 |
|
流 |
||
Streamlit |
||
表 |
||
任务 |
使用 ALTER TASK 语句在任务上设置标签。 |
|
视图 |
||
表或视图 |
列 |
包括 事件表。 |