使用 Data Classification

本主题介绍如何对架构中的表进行分类、查看分类结果,以及通过 SQL 或 Snowsight 对表中的列设置 系统标签

概述

数据管理员可以对架构中的表进行分类,以满足数据隐私法规的要求。这些表包括以下情形:

  • 架构中的新表。

  • 在同一架构内的表中的新列或更改列。

  • 以前已分类但可能需要再次分类的表。

通过评估这些情况,数据管理员可以对敏感信息和个人信息进行分类。在列上设置系统标签可以方便数据监控。随后,数据工程师可以使用 Snowsight 中的掩码策略或行访问策略或者使用 SQL 保护个人敏感数据。

开始数据分类

在对架构中的单个表或多个表进行分类之前,请执行以下操作:

  • 选择工作流程:

  • 决定要使用的仓库。例如,使用与您所属的成本中心或业务单位相匹配的仓库,以实现准确的报告和预算。

  • 在工作流程中考虑延迟因素。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 对架构中的表进行分类,并在表列上设置系统标签:

  1. 确定要分类的表。

  2. 调用 SYSTEM$CLASSIFY 存储过程,对表进行分类并对表列设置标签:

    CALL SYSTEM$CLASSIFY('hr.tables.empl_info', {'auto_tag': true});
    
    Copy
  3. 调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,确认表中列上的标签分配:

    SELECT *
    FROM TABLE(
      hr.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'hr.tables.empl_info',
        'table'
    ));
    
    Copy
  4. 之后,可以查询 Account Usage DATA_CLASSIFICATION_LATEST 视图,查看表的最新分类结果。

对每个要分类的表重复上述步骤。

使用 SQL 对架构中的多个表进行分类

这种方法使用 SQL 对架构中的所有表进行分类,并在每个表中的列上设置系统标签。此过程假设:

  • 此过程假设使用的角色具有 适当的授权

  • 选择一个包含少于 1000 个表对象的架构。您可以使用 SHOW TABLES IN SCHEMA 命令确定架构中表对象的数量。

完成以下步骤,使用 SQL 对架构中的所有表进行分类,并在每个表中的每一列上设置系统标签:

  1. 确定包含要分类的表的架构。

  2. 调用 SYSTEM$CLASSIFY_SCHEMA 存储过程,计划对架构中的表进行分类:

    CALL SYSTEM$CLASSIFY_SCHEMA('hr.tables', {'auto_tag': true});
    
    Copy
  3. 如果输出显示一个或多个表出现 failed 消息,请使用 SHOW GRANTS ON TABLE 命令确定指定表的授权。例如:

    SHOW GRANTS ON TABLE hr.tables.salary;
    
    Copy
  4. 如有必要,向调用 SYSTEM$CLASSIFY_SCHEMA 存储过程的角色授予未分类表的权限。否则,对架构中的每个表调用 SYSTEM$GET_CLASSIFICATION_RESULT 函数:

    SELECT SYSTEM$GET_CLASSIFICATION_RESULT('hr.tables.empl_info');
    
    Copy
  5. 调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,确认表中列上的标签分配:

    SELECT *
    FROM TABLE(
      hr.INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS(
        'hr.tables.empl_info',
        'table'
    ));
    
    Copy
  6. 之后,可以查询 Account Usage DATA_CLASSIFICATION_LATEST 视图,查看表的最新分类结果。

对包含要分类的表的每个架构重复上述步骤。

使用 Snowsight 对架构中的多个表进行分类

这种方法使用 Snowsight 暂存架构中表的分类,并为架构中每个表的各列自动设置标签。此过程假设使用的角色具有 适当的授权

要对架构中的所有表进行分类,并在架构中所含的每个表中的每一列上设置系统标签,请在 Snowsight 中完成以下步骤:

  1. 对架构中的表触发分类和设置标签操作:

    1. 在 Snowsight 中,使用对象资源管理器导航到所选架构。

    2. 选择 More 菜单 (...),然后选择 Classify Data

    3. 选择一个仓库,然后启用 Auto-tagging data 选项。

    4. 选择 Classify Data and Apply Tags

      您可以选择此选项来重新分类之前已分类的表。

    Snowsight 一次最多可对 1000 个表进行分类。如果架构包含的表超过 1000 个,请先对第一批表完成此过程,然后对其余表重复此过程。

    或者,也可以打开 Worksheet 并调用 SYSTEM$CLASSIFY_SCHEMA,如 使用 SQL 对架构中的多个表进行分类 所示。如果选择此选项,请在调用此存储过程后在对象资源管理器中导航回架构。

  2. 允许分类过程完成。完成后,CLASSIFICATION 一栏会出现绿色复选标记。

  3. 选择 View Results

    如果决定禁用 Auto-tagging data 选项,请选择 Review Classification,然后评估结果并确定要在每一列上设置的标签值。

    要在 Column details 选项卡中查看在列上设置的标签,请使用具有 SNOWFLAKE 数据库的 IMPORTED PRIVILEGES 权限的角色。

  4. 评估 VALUE TO BE APPLIED 列,根据需要更改标签值,然后选择 Complete classification

  5. Tables 选项卡显示 Classification results reviewed and applied。您可以通过以下操作确认标签分配:

    1. 选择表。

    2. 导航到 Columns 选项卡。

    3. 查看 TAGS 列。

    或者,您也可以采取以下方法:

    1. 使用工作表调用 TAG_REFERENCES_ALL_COLUMNS Information Schema 表函数,查看特定表中列的标签分配。有关其他选项,请参阅 跟踪系统标签

    2. 使用对象资源管理器导航到视图或在工作表中查询视图,查看 Account Usage DATA_CLASSIFICATION_LATEST 视图记录。

  6. 对包含要分类的表的其他架构重复上述步骤。

语言: 中文