手动分类敏感数据¶
本主题介绍如何对架构中的表进行分类、查看分类结果,以及通过 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 中对结果进行评估。选择适合您的访问控制模式和工作流程。
对敏感数据进行手动分类的成本¶
手动分类过程需要计算资源,这些资源由执行分类时正在使用和运行的 虚拟仓库 提供。
对表/视图中的数据进行分类所需的时间量(以及仓库使用的 Credit 数)是要分类的列的函数。
特别是,如果表或视图具有大量支持分类的列,则处理时间可能会受到影响。然而,一般来说,处理速度与仓库大小呈线性变化关系。换句话说,仓库每次变大(从超小变为小)通常会使处理时间缩短一半。
使用以下一般准则选择 仓库大小:
无需担心处理时间:超小型仓库。
表中最多有 100 列:小型仓库。
表中有 101 到 300 列:中型仓库。
表中有超过 300 列:大型仓库。
有关信息,请参阅 仓库注意事项。
使用 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});
注意不要同时分类太多架构。有关详细信息,请参阅 使用说明。
如需查看结果,请对架构中的每个表调用 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 视图,查看表的最新分类结果。
对包含要分类的表的每个架构重复上述步骤。
小技巧
如果要取消架构中表的分类,请调用 SYSTEM$CANCEL_CLASSIFY_SCHEMA 存储过程。
使用 Snowsight 对架构中的多个表进行分类¶
这种方法使用 Snowsight 暂存架构中表的分类,并为架构中每个表的各列自动设置标签。此过程假设使用的角色具有 适当的授权。
要对架构中的所有表进行分类,并在架构中所含的每个表中的每一列上设置系统标签,请在 Snowsight 中完成以下步骤:
对架构中的表触发分类和设置标签操作:
在 Snowsight 中,使用对象资源管理器导航到所选架构。
选择 More 菜单 (...),然后选择 Classify and Tag Sensitive Data。
如尚未使用仓库,请选择一个仓库。
选择要进行分类的表格。默认不选择表格。
评估 Advanced Options 并按需进行选择:
通过 Auto-tagging data 选项,您可在对数据进行分类后自动为列分配标签。该选项默认启用,可按需将其禁用。
通过 Include custom classifiers 选项,您可以使用自己能访问的 自定义分类器 对数据进行分类。
如需确定可访问的自定义分类器,请选择 View custom classifiers 并在工作表中运行该命令。
选择 Classify and Tag Sensitive Data。
您可以选择此选项来重新分类之前已分类的表。
使用 Snowsight 可对 1000 个表进行分类。
或者,也可以打开 Worksheet 并调用 SYSTEM$CLASSIFY_SCHEMA,如 使用 SQL 对架构中的多个表进行异步分类 所示。如果选择此选项,请在调用此存储过程后在对象资源管理器中导航回架构。请注意在相对较短的时间段内调用该存储过程的次数。有关详细信息,请参阅 使用说明。
允许分类过程完成。完成后,CLASSIFICATION 一栏会出现绿色复选标记。
选择 View Results。
按需更改标签值。为此,请使用获授 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 的角色。
按提示审查和批准架构中的表。按需更新标签值。
选择 Complete classification。
Tables 选项卡显示 Classification results reviewed and applied。您可以通过以下操作确认标签分配:
选择表。
导航到 Columns 选项卡。
查看 TAGS 列。
或者,您也可以采取以下方法:
使用工作表调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,查看特定表中列的标签分配。有关其他选项,请参阅 跟踪系统标签。
使用对象资源管理器导航到视图或在工作表中查询视图,查看 Account Usage DATA_CLASSIFICATION_LATEST 视图记录。
对包含要分类的表的其他架构重复上述步骤。