从自动敏感数据分类中排除数据

通过 自动敏感数据分类,Snowflake 会定期自动对数据进行敏感度分类,无需用户干预。您可通过定义 分类配置文件,并在包含待分类数据的数据库上启用该配置,从而激活此功能。

您可以使用分类配置文件设置和系统标签,将特定数据排除在自动分类范围之外。

例如,假设数据库 my_db 包含三张表:t1t2t3。默认情况下,当您在 my_db 上设置分类配置文件时,所有三张表都会自动参与分类。您可以将 Snowflake 配置为在自动分类过程中跳过 t2,此时仅 t1t3 表会被分类。

工作流程

从自动敏感数据分类中排除数据是一个两步流程:

  1. 将 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签应用于所有需要排除在自动敏感数据分类之外的对象。了解详情

  2. 将分类配置文件中的 enable_tag_based_sensitive_data_exclusion 键设置为 true了解详情

此流程称为 基于标签的敏感数据排除

备注

在应用系统标签并配置分类配置文件后,若您调用 SYSTEM$CLASSIFY 存储过程并指定该分类配置文件,Snowflake 将自动排除已标记对象参与分类。

设置数据对象标签

对象标签 是一种可设置在其他对象上的元数据对象。Snowflake 提供了系统预定义标签 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION,您可将其设置在需要排除于自动敏感数据分类的对象上。当此标签值为 TRUE 时,Snowflake 将在分类过程中跳过该对象。

例如,如果您在表上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION = 'TRUE',则当 Snowflake 自动分类该表所属数据库时,将跳过此表。

您可以在架构、表或列级别设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签,以控制哪些数据排除在自动敏感数据分类之外。

设置架构标签

当数据库设置了分类配置文件时,该数据库中的所有架构都会在自动数据分类过程中分类。您可以在数据库内的特定架构上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签,以将该架构排除在分类流程之外。

例如,假设您需要对数据库内除 internal 架构外的所有架构进行自动分类。您可以运行 ALTER SCHEMA 在此架构上设置系统定义的标签:

ALTER SCHEMA internal SET TAG SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION = 'TRUE';
Copy

当 Snowflake 自动对数据库中的数据进行分类时,它会跳过 internal 架构中的数据

有关设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签的访问控制要求,请参阅 访问控制要求

设置表标签

当数据库或架构设置了分类配置文件时,该对象中的所有表都会在自动数据分类过程中进行分类。您可以在数据库或架构内的特定表上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签,以将该表排除在分类流程之外。

例如,假设您需要对数据库内除 my_table 表外的所有表进行自动分类。您可以运行 ALTER TABLE 在此表上设置系统定义的标签:

ALTER TABLE my_table SET TAG SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION = 'TRUE';
Copy

当 Snowflake 自动对数据库中的数据进行分类时,它会跳过 my_table 表中的数据

设置列标签

您可能需要对表中部分列(而非全部列)进行自动分类。您可以在特定列上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签,使 Snowflake 在分类该表其余列时跳过此列。如果排除某列,即使该列包含敏感数据,分类结果中该列对应的值也将为空。

例如,假设您需要对表内除 employee_id 列外的所有列进行自动分类。您可以运行 ALTER TABLE ...ALTER COLUMN 在此列上设置系统定义的标签:

ALTER TABLE my_table ALTER COLUMN employee_id
  SET TAG SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION = 'TRUE';
Copy

当 Snowflake 自动对表中的数据进行分类时,JSON 结果中的 employee_id 字段将显示为空值。

定义分类配置文件

分类配置文件包含用于控制 Snowflake 如何对数据库或架构中的数据进行自动分类的设置。这些设置通过 OBJECT 类型的键值对进行指定。

如果要将数据排除在自动分类范围之外,您必须定义分类配置文件中的 enable_tag_based_sensitive_data_exclusion 键。如果未将该键值设为 true,则在对象上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 将不会生效。

以下示例展示了一个分类配置文件,当其在数据库上启用时,可排除带有相应标签的对象参与自动分类:

CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
  my_classification_profile(
    {
      'minimum_object_age_for_classification_days': 0,
      'maximum_classification_validity_days': 30,
      'auto_tag': true,
      'enable_tag_based_sensitive_data_exclusion': true
    });
Copy

使用方法设置分类配置文件的键

果您已有现有的分类配置文件,可以调用 SET_ENABLE_TAG_BASED_SENSITIVE_DATA_EXCLUSION 方法来设置配置文件的 enable_tag_based_sensitive_data_exclusion 键。

要排除带有 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签的对象,请将方法的参数设置为 true。例如,要允许数据库中的数据免于分类(该数据库已设置 my_classification_profile),请运行以下命令:

CALL my_classification_profile!SET_ENABLE_TAG_BASED_SENSITIVE_DATA_EXCLUSION(true);
Copy

若需为分类配置文件禁用基于标签的敏感数据排除功能,请将实参设置为 false 后执行该命令:

CALL my_classification_profile!SET_ENABLE_TAG_BASED_SENSITIVE_DATA_EXCLUSION(false);
Copy

访问控制要求

以下部分介绍了将对象排除在自动数据分类之外时必须具备的角色和权限:

设置标签的要求

创建分类配置文件需要 SNOWFLAKE.CLASSIFICATION_ADMIN 数据库角色。设置架构、表或列的 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 系统标签同样需要此数据库角色。如果没有额外权限,拥有 SNOWFLAKE.CLASSIFICATION_ADMIN 数据库角色的用户仅能对其拥有的对象设置该系统标签。

例如,要允许具有 classify_admin 角色的用户在其拥有的对象上设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 标签,请运行以下命令:

GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN TO ROLE classify_admin;
Copy

如果您希望允许管理员为任意对象(不仅限于其拥有的对象)设置 SNOWFLAKE.CORE.SKIP_SENSITIVE_DATA_CLASSIFICATION 系统标签,请执行以下命令:

GRANT DATABASE ROLE SNOWFLAKE.CLASSIFICATION_ADMIN TO ROLE classify_admin;
GRANT APPLY TAG ON ACCOUNT TO ROLE classify_admin;
Copy

配置分类配置文件的要求

您必须在分类配置文件上拥有 PRIVACY_USER 实例角色,才能设置该配置文件的 enable_tag_based_sensitive_data_exclusion 键。

语言: 中文