教程:自动分类和标记敏感数据¶
简介¶
识别和跟踪敏感数据的过程简单且直观。Snowflake 提供了一种内置算法来识别您的敏感数据,并使用系统标签自动标记这些数据,以帮助跟踪数据类型及其敏感程度。
您可以通过最少的设置配置一个架构,以便 Snowflake 自动为新数据和发生更改的数据执行此分类过程,并将用户定义的标记与系统标记一起应用。
在本教程中,您将执行以下操作:
设置完成教程所需的资源,包括应用于敏感数据的用户自定义标签。
创建分类配置文件,将数据添加到架构时,Snowflake 会使用该配置文件自动分类数据。
在分类配置文件中添加标签映射,以便将用户定义的标签应用到 Snowflake 识别出的敏感数据。
查看分类的结果。
小技巧
尽管本教程中未展示,但您还可以自定义分类,使用用户定义的正则表达式识别敏感数据,并使用用户定义的语义类别标记这些数据。有关更多信息,请参阅 实施自动自定义分类。
建立治理数据库¶
在本教程中,您将创建治理数据所需的 Snowflake 对象(用户定义的标签和分类配置文件)。根据最佳实践,这些对象在一个专门用于治理的数据库中创建。
打开 SQL 工作表,然后执行以下语句,为治理对象创建数据库和架构:
USE ROLE ACCOUNTADMIN;
CREATE DATABASE IF NOT EXISTS governance_db;
CREATE SCHEMA IF NOT EXISTS governance_db.sch;
备注
为简单起见,您将使用 ACCOUNTADMIN 系统角色,这样就可以避免设置配置敏感数据分类所需的权限。在实际操作中,不应使用这种权限较高的角色,而应创建具有必要权限的自定义角色。
设置数据¶
在为本教程设置数据之前,请先创建一个数据仓库来填充一个表:
CREATE WAREHOUSE IF NOT EXISTS tutorial_wh;
创建表¶
创建包含待分类表的数据库和架构。
CREATE DATABASE IF NOT EXISTS data_db; CREATE SCHEMA IF NOT EXISTS data_db.sch;
创建包含敏感数据的表结构。
CREATE TABLE data_db.sch.customers ( account_number NUMBER(38,0), first_name VARCHAR(16777216), last_name VARCHAR(16777216), email VARCHAR(16777216) );
在表中插入值¶
在所创建的表格中添加数据:
USE WAREHOUSE tutorial_wh;
INSERT INTO data_db.sch.customers (account_number, first_name, last_name, email)
VALUES
(1589420, 'john', 'doe', 'john.doe@example.com'),
(2834123, 'jane', 'doe', 'jane.doe@example.com'),
(4829381, 'jim', 'doe', 'jim.doe@example.com'),
(9821802, 'susan', 'smith', 'susan.smith@example.com'),
(8028387, 'bart', 'simpson', 'bart.barber@example.com');
创建分类配置文件¶
很好,您现在已经有了一个表,其中包含您需要分类的数据,以帮助保护敏感数据。您希望在有数据添加到架构时,Snowflake 自动对数据进行分类,因此需要创建分类配置文件。
分类配置文件控制着对架构中的数据进行分类的频率,以及在分类过程中发生的操作。每个分类配置文件都是 CLASSIFICATION_PROFILE 类的一个实例。
若要为架构创建分类配置文件,请执行以下操作:
CREATE OR REPLACE SNOWFLAKE.DATA_PRIVACY.CLASSIFICATION_PROFILE
governance_db.sch.my_classification_profile(
{
'minimum_object_age_for_classification_days': 0,
'maximum_classification_validity_days': 30,
'auto_tag': true
});
在架构中设置此分类配置文件后,会发生以下情况:
在一天之内开始执行分类 (
'minimum_object_age_for_classification_days': 0
)。初始分类后,Snowflake 每 30 天重新检查一次,查看表格是否需要重新分类 (
'maximum_classification_validity_days': 30
)。对于被识别为包含敏感数据的列,将自动设置分类标签 (
'auto_tag': true
)。
在分类配置文件中添加标签映射¶
由于您在分类配置文件中设置了 'auto_tag': true
,因此 Snowflake 会在将数据分类为敏感数据时自动应用 系统分类标签。SEMANTIC_CATEGORY 标签对数据类型进行分类,例如将数据识别为姓名或地址。 PRIVACY_CATEGORY 标签对数据敏感性进行分类,例如将数据识别为标识符或准标识符。
假设您想更进一步,根据数据分类方式自动应用自己的用户定义的标签。本教程将为您展示操作方法!
要创建您希望应用于敏感数据的自定义标签,请执行以下语句:
CREATE TAG governance_db.sch.tutorial_pii;
接下来,您将修改分类配置文件,以便在 Snowflake 确定列包含名称时应用此用户定义标签。在分类配置文件中添加标签映射可配置应用用户定义的标签的方式和时间。
要将标签映射添加到分类配置文件中,请执行 classification_profile_name!SET_TAG_MAP
方法:
CALL governance_db.sch.my_classification_profile!SET_TAG_MAP(
{'column_tag_map':[
{
'tag_name':'governance_db.sch.tutorial_pii',
'tag_value':'sensitive_name',
'semantic_categories':['NAME']
}]});
现在,如果自动分类确定系统定义的语义类别为 NAME
,则会在列上设置用户定义的标签 tutorial_pii
。根据分类配置文件,用户定义的 tutorial_pii
标签值设置为 sensitive_name
。
备注
您还可以在创建分类配置文件时定义标签映射。
在架构上设置分类配置文件¶
您已配置好分类配置文件,可在架构上进行设置了。这将启动自动分类过程。
ALTER SCHEMA data_db.sch
SET CLASSIFICATION_PROFILE = 'governance_db.sch.my_classification_profile';
就是这样,剩下的就交给 Snowflake 吧!Snowflake 会开始对现有数据进行分类,还会在有新数据添加到架构时继续对其进行分类。
查看分类结果¶
完成这部分教程之前,您需要等待一个小时,让 Snowflake 完成分类过程。
一小时后,执行以下语句以检索分类结果:
CALL SYSTEM$GET_CLASSIFICATION_RESULT('data_db.sch.customers');
在结果中,请注意以下事项:
ACCOUNT_NUMBER 列未被分类为敏感信息,因此未分配分类标签。
EMAIL 列被标记为语义类别 EMAIL 和隐私类别 IDENTIFIER。
根据分类配置文件的标签映射,
governance_db.sch.tutorial_pii
用户定义的标签被分配给语义类别为 NAME 的列(见输出中高亮显示的行)。
{
"classification_profile_config": {
"classification_profile_name": "GOVERNANCE_DB.SCH.MY_CLASSIFICATION_PROFILE"
},
"classification_result": {
"ACCOUNT_NUMBER": {
"alternates": []
},
"EMAIL": {
"alternates": [],
"recommendation": {
"confidence": "HIGH",
"coverage": 1,
"details": [],
"privacy_category": "IDENTIFIER",
"semantic_category": "EMAIL",
"tags": [
{
"tag_applied": true,
"tag_name": "snowflake.core.semantic_category",
"tag_value": "EMAIL"
},
{
"tag_applied": true,
"tag_name": "snowflake.core.privacy_category",
"tag_value": "IDENTIFIER"
}
]
},
"valid_value_ratio": 1
},
"FIRST_NAME": {
"alternates": [],
"recommendation": {
"confidence": "HIGH",
"coverage": 1,
"details": [],
"privacy_category": "IDENTIFIER",
"semantic_category": "NAME",
"tags": [
{
"tag_applied": true,
"tag_name": "snowflake.core.semantic_category",
"tag_value": "NAME"
},
{
"tag_applied": true,
"tag_name": "snowflake.core.privacy_category",
"tag_value": "IDENTIFIER"
},
{
"tag_applied": true,
"tag_name": "governance_db.sch.tutorial_pii",
"tag_value": "sensitive_name"
}
]
},
"valid_value_ratio": 1
},
"LAST_NAME": {
"alternates": [],
"recommendation": {
"confidence": "HIGH",
"coverage": 1,
"details": [],
"privacy_category": "IDENTIFIER",
"semantic_category": "NAME",
"tags": [
{
"tag_applied": true,
"tag_name": "snowflake.core.semantic_category",
"tag_value": "NAME"
},
{
"tag_applied": true,
"tag_name": "snowflake.core.privacy_category",
"tag_value": "IDENTIFIER"
},
{
"tag_applied": true,
"tag_name": "governance_db.sch.tutorial_pii",
"tag_value": "sensitive_name"
}
]
},
"valid_value_ratio": 1
}
}
}
清理、总结和其他资源¶
恭喜!您已成功完成本教程。
概括来说,您学会了如何执行以下操作:
创建分类配置文件,以控制自动分类的实施方式。
在分类配置文件中添加标签映射,以便自动为包含敏感数据的列设置用户定义的标签。
在架构上设置分类配置文件,以启动自动分类。
查看自动分类结果。
删除教程对象¶
如果您打算重复学习教程,可以保留创建的对象。
否则,请删除教程对象,如下所示:
DROP TAG governance_db.sch.tutorial_pii;
DROP DATABASE governance_db;
DROP DATABASE data_db;
DROP WAREHOUSE tutorial_wh;
下一步是什么?¶
有关实施敏感数据自动分类的完整详情,包括相关成本和自定义分类的实施,请参阅 自动对敏感数据进行分类。