使用 Data Classification¶
本主题介绍如何对架构中的表进行分类、查看分类结果,以及通过 SQL 或 Snowsight 对表中的列设置 系统标签。
概述¶
数据管理员可以对架构中的表进行分类,以满足数据隐私法规的要求。这些表包括以下情形:
架构中的新表。
在同一架构内的表中的新列或更改列。
以前已分类但可能需要再次分类的表。
通过评估这些情况,数据管理员可以对敏感信息和个人信息进行分类。在列上设置系统标签可以方便数据监控。随后,数据工程师可以使用 Snowsight 中的掩码策略或行访问策略或者使用 SQL 保护个人敏感数据。
开始数据分类¶
在对架构中的单个表或多个表进行分类之前,请执行以下操作:
选择工作流程:
如果您更喜欢程序化方法,请按照以下章节中的步骤进行操作:
如果您更喜欢使用 Web 界面,请按照 使用 Snowsight 对架构中的多个表进行分类 部分中的步骤操作。
决定要使用的仓库。例如,使用与您所属的成本中心或业务单位相匹配的仓库,以实现准确的报告和预算。
在工作流程中考虑延迟因素。Snowsight 每 12 小时更新一次 Snowsight 的 Databases 区域,届时可对更新后的表进行分类。
确认您当前角色的访问控制配置:
使用 SHOW GRANTS TO ROLE 语句查看具有该角色的用户可以访问的对象的授权。使用的角色必须至少拥有以下授权:
在分类过程中要使用的仓库的 USAGE 权限。
表的 SELECT 权限以开始分类过程。
SNOWFLAKE.CORE_VIEWER 数据库角色,用于在列上设置系统标签。
SNOWFLAKE.GOVERNANCE_VIEWER 数据库角色,用于查询 Account Usage DATA_CLASSIFICATION_LATEST 视图。
有关其他授权组合,请参阅 Data Classification 权限参考。
访问控制模式允许不同的角色参与工作流程。例如,数据管理员可以暂存架构中表的分类,数据工程师可以在 Snowsight 中对结果进行评估。选择适合您的访问控制模式和工作流程。
使用 SQL 对单个表进行分类¶
这种方法使用 SQL 对表进行分类,并在表中的列上设置系统标签。查看 开始数据分类 部分,确保使用的角色拥有必要的访问控制授权,以便对架构中的表进行分类。
此过程假设使用的角色具有 适当的授权。完成以下步骤,使用 SQL 对架构中的表进行分类,并在表列上设置系统标签:
确定要分类的表。
调用 SYSTEM$CLASSIFY 存储过程,对表进行分类并对表列设置标签:
CALL SYSTEM$CLASSIFY('hr.tables.empl_info', {'auto_tag': true});
调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,确认表中列上的标签分配:
SELECT * FROM TABLE( hr.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS( 'hr.tables.empl_info', 'table' ));
之后,可以查询 Account Usage DATA_CLASSIFICATION_LATEST 视图,查看表的最新分类结果。
对每个要分类的表重复上述步骤。
使用 SQL 对架构中的多个表进行分类¶
这种方法使用 SQL 对架构中的所有表进行分类,并在每个表中的列上设置系统标签。此过程假设:
此过程假设使用的角色具有 适当的授权。
选择一个包含少于 1000 个表对象的架构。您可以使用 SHOW TABLES IN SCHEMA 命令确定架构中表对象的数量。
完成以下步骤,使用 SQL 对架构中的所有表进行分类,并在每个表中的每一列上设置系统标签:
确定包含要分类的表的架构。
调用 SYSTEM$CLASSIFY_SCHEMA 存储过程,计划对架构中的表进行分类:
CALL SYSTEM$CLASSIFY_SCHEMA('hr.tables', {'auto_tag': true});
如果输出显示一个或多个表出现
failed
消息,请使用 SHOW GRANTS ON TABLE 命令确定指定表的授权。例如:SHOW GRANTS ON TABLE hr.tables.salary;
如有必要,向调用 SYSTEM$CLASSIFY_SCHEMA 存储过程的角色授予未分类表的权限。否则,对架构中的每个表调用 SYSTEM$GET_CLASSIFICATION_RESULT 函数:
SELECT SYSTEM$GET_CLASSIFICATION_RESULT('hr.tables.empl_info');
调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,确认表中列上的标签分配:
SELECT * FROM TABLE( hr.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS( 'hr.tables.empl_info', 'table' ));
之后,可以查询 Account Usage DATA_CLASSIFICATION_LATEST 视图,查看表的最新分类结果。
对包含要分类的表的每个架构重复上述步骤。
使用 Snowsight 对架构中的多个表进行分类¶
这种方法使用 Snowsight 暂存架构中表的分类,并为架构中每个表的各列自动设置标签。此过程假设使用的角色具有 适当的授权。
要对架构中的所有表进行分类,并在架构中所含的每个表中的每一列上设置系统标签,请在 Snowsight 中完成以下步骤:
对架构中的表触发分类和设置标签操作:
在 Snowsight 中,使用对象资源管理器导航到所选架构。
选择 More 菜单 (...),然后选择 Classify Data。
选择一个仓库,然后启用 Auto-tagging data 选项。
选择 Classify Data and Apply Tags。
您可以选择此选项来重新分类之前已分类的表。
Snowsight 一次最多可对 1000 个表进行分类。如果架构包含的表超过 1000 个,请先对第一批表完成此过程,然后对其余表重复此过程。
或者,也可以打开 Worksheet 并调用 SYSTEM$CLASSIFY_SCHEMA,如 使用 SQL 对架构中的多个表进行分类 所示。如果选择此选项,请在调用此存储过程后在对象资源管理器中导航回架构。
允许分类过程完成。完成后,CLASSIFICATION 一栏会出现绿色复选标记。
选择 View Results。
如果决定禁用 Auto-tagging data 选项,请选择 Review Classification,然后评估结果并确定要在每一列上设置的标签值。
要在 Column details 选项卡中查看在列上设置的标签,请使用具有 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限的角色。
评估 VALUE TO BE APPLIED 列,根据需要更改标签值,然后选择 Complete classification。
Tables 选项卡显示 Classification results reviewed and applied。您可以通过以下操作确认标签分配:
选择表。
导航到 Columns 选项卡。
查看 TAGS 列。
或者,您也可以采取以下方法:
使用工作表调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,查看特定表中列的标签分配。有关其他选项,请参阅 跟踪系统标签。
使用对象资源管理器导航到视图或在工作表中查询视图,查看 Account Usage DATA_CLASSIFICATION_LATEST 视图记录。
对包含要分类的表的其他架构重复上述步骤。