SQL 数据发现和分类
适用于:SQL Server
数据发现分类添加了可用于发现、分类、标记和报告数据库中的敏感数据的功能。 可通过 T-SQL 或使用 SQL Server Management Studio (SSMS) 来完成。 发现最敏感的数据(如商业、金融、医疗等)并对其进行分类在组织的信息保护中可起到关键作用。 它可以充当基础结构,用于:
- 帮助满足数据隐私标准。
- 监视对包含高度敏感数据的数据库/列的访问。
注意
SQL Server 2012 及更高版本支持数据发现和分类,这些功能可用于 SSMS 17.5 或更高版本。 有关 Azure SQL 数据库,请参阅 Azure SQL 数据库数据发现和分类。
概述
数据发现和分类形成适用于 SQL 数据库、Azure SQL 托管实例和 Azure Synapse 的新信息保护范例,旨在保护数据,而不仅仅是保护数据库。 目前,它支持以下功能:
- 发现和建议 - 分类引擎扫描数据库,并标识包含潜在敏感数据的列。 利用它可以轻松查看和应用相应的分类建议,也可以手动对列进行分类。
- 标记 - 可以在列上永久地标记敏感度分类标签。
- 可见性 - 可以在详细报表中查看数据库分类状态,如在符合性和审核事项中对其有需求,则可以直接打印或导出该报表。
发现、分类和标记敏感列
以下部分介绍如何在数据库中发现包含敏感数据的列并对其进行分类和标记、如何查看数据库的当前分类状态,以及如何导出报表。
分类包含两种元数据属性:
- 标签 - 这是主要的分类属性,用于定义存储在列中的数据的敏感度级别。
- 信息类型 - 为列中存储的数据类型提供更细粒度。
对 SQL Server 数据库进行分类:
在 SQL Server Management Studio (SSMS) 中连接到 SQL Server。
在 SSMS 对象资源管理器中,选择要分类的数据库,并选择“任务”>“数据发现和分类”>“对数据进行分类...”。
分类引擎会扫描数据库中包含潜在敏感数据的列(仅基于列名称),并提供推荐列分类列表:
要查看建议的列分类列表,请选择窗口顶部的建议通知框,或底部建议面板:
查看建议列表:
要接受针对某特定列的建议,请选中相关行左侧列中的复选框。 还可以选中建议表标头中的复选框,将所有建议标记为“接受”。
也可以使用下拉框更改建议的信息类型和敏感度标签。
若要应用所选建议,请选择“保存所选建议”按钮。
注意
使用“Microsoft Purview 信息保护”策略模式时,执行自动数据发现并提供敏感列建议的建议引擎会被禁用。
若要显示分类列,请从下拉列表中选择相应的架构和表,然后选择“加载列”。
此外,还可以手动对列进行分类,或基于建议分类:
选择窗口顶部菜单中的“添加分类”。
在打开的上下文窗口中,选择要分类列名称、信息类型和敏感度标签。 根据主页中的条目选择架构和表。
如果要在一次尝试中为特定表的所有未分类列添加分类,请在“添加分类”页的“列”下拉列表中选择“所有未分类列”。
若要完成分类并永久使用新分类元数据标记数据库列,请在窗口顶部菜单中选择“保存”按钮。
要生成数据库分类状态的完整摘要报表,请在窗口顶部菜单中选择“查看报表”。 (你也可以使用 SSMS 生成报告。选择要生成报告的数据库,然后选择“任务”>“数据发现和分类”>“生成报告...”)
使用“Microsoft Purview 信息保护”策略对数据库进行分类
注意
“Microsoft 信息保护”(缩写为 MIP)已更名为“Microsoft Purview 信息保护”。 “MIP”和“Microsoft Purview 信息保护”这两个术语常在本文档中互换使用,二者所指概念相同。
“Microsoft Purview 信息保护”标签为用户提供一种简单且统一的方法对 SQL Server 中的敏感数据进行分类。 在 Microsoft 365 合规中心(已更名为 Microsoft Purview 合规门户)中创建和管理 MIP 敏感度标签。 若要了解如何在 Microsoft Purview 合规门户中创建和发布 MIP 敏感度标签,请参阅 Microsoft 信息保护敏感度标签一文。
现在,你可以使用 SSMS 在源 (SQL Server) 上使用“Microsoft Purview 信息保护”标签对数据进行分类,这些标签在 Power BI、Office 和其他 Microsoft 产品中使用。 这些敏感度标签在数据库的列级别应用,与 SQL 信息保护策略相同。
Power BI 数据集或报表连接到受支持数据源中具有敏感度标签的数据时可以自动继承这些标签,这样数据在进入 Power BI 并导出到下游应用程序后仍处于分类状态。 SSMS 中的 MIP 策略可用性可实现端到端企业范围的分类解决方案。
配置“Microsoft Purview 信息保护”策略的步骤。
在 SQL Server Management Studio (SSMS) 中连接到 SQL Server。
在 SSMS 对象资源管理器中,选择要分类的数据库,然后选择“任务”>“数据发现和分类”>“设置 Microsoft 信息保护策略”
将显示用于设置 Microsoft 信息保护策略的 Microsoft 365 身份验证窗口。 选择“登录”,然后输入或选择有效的用户凭据,以对 Microsoft 365 租户进行身份验证。
如果身份验证成功,则会看到一个弹出窗口,其状态为“成功”。
可选 - 如果要登录到任何 Microsoft 主权云以向 Microsoft 365 进行身份验证,请转到 SSMS >“工具”>>“选项”>“Azure 服务”>“Azure 云”,并将“名称”更改为相关的 Microsoft 主权云。
在 SSMS 对象资源管理器窗口中,右键单击要分类的数据库,并选择“任务”>“数据发现和分类”>“对数据进行分类”。 现在,可以使用 Microsoft 365 租户中定义的 MIP 敏感度标签添加新分类,并使用这些标签对 SQL Server 中的列进行分类。
在 Microsoft 信息保护策略模式下,将禁用自动数据发现和建议。 它目前仅在 SQL 信息保护模式下可用。
若要将信息保护策略重置为默认值或 SQL 信息保护,请转到 SSMS 对象资源管理器,右键单击数据库,然后选择“任务”>“数据发现和分类”>“将信息保护策略重置为默认值”。 这会应用默认值或 SQL 信息保护策略,并且你可以使用敏感度标签 SQL 而不是 MIP 标签对数据进行分类。
若要从自定义 JSON 文件启用信息保护策略,请转到 SSMS 对象资源管理器,右键单击数据库,然后选择“任务”>“数据发现和分类”>“设置信息保护策略文件”。
注意
警告图标指示列以前使用与当前所选策略模式不同的信息保护策略进行分类。 例如,如果当前处于 Microsoft 信息保护模式,并且之前使用自定义策略文件的 SQL 信息保护策略或信息保护策略对其中一个列进行了分类,则会看到针对该列的警告图标。 你可以决定是要将列的分类更改为当前策略模式下可用的任何敏感度标签,还是保留它。
使用 SSMS 管理信息保护策略
你可以使用 SSMS 18.4 或更高版本来管理信息保护策略:
在 SQL Server Management Studio (SSMS) 中连接到 SQL Server。
在 SSMS 对象资源管理器中,选择一个数据库,然后选择“任务”>“数据发现和分类”。
你可以使用以下菜单选项来管理信息保护策略:
设置“Microsoft 信息保护”策略:将“信息保护”策略设置为“Microsoft Purview 信息保护”策略。
设置信息保护策略文件:使用所选 JSON 文件中定义的 SQL 信息保护策略。 (请参阅默认的信息保护策略文件)
导出信息保护策略:将信息保护策略导出到 JSON 文件。
重置信息保护策略:将信息保护策略重置为默认 SQL 信息保护策略。
重要
信息保护策略文件不存储在 SQL Server 中。 SSMS 使用默认信息保护策略。 如果自定义信息保护策略失败,SSMS 将无法使用默认策略。 数据分类失败。 要解决此问题,请单击“重置信息保护策略”以使用默认策略并重新启用数据分类。
访问分类元数据
SQL Server 2019 引入了 sys.sensitivity_classifications
系统目录视图。 此视图返回信息类型和敏感度标签。
在 SQL Server 2019 实例上,查询 sys.sensitivity_classifications
以查看所有具有相应分类的已分类列。 例如:
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
information_type,
label,
rank,
rank_desc
FROM sys.sensitivity_classifications sc
JOIN sys.objects O
ON sc.major_id = O.object_id
JOIN sys.columns C
ON sc.major_id = C.object_id AND sc.minor_id = C.column_id
在低于 SQL Server 2019 的实例上,信息类型和敏感度标签的分类元数据位于以下扩展属性中:
sys_information_type_name
sys_sensitivity_label_name
对于 SQL Server 2017 及之前的实例,以下示例返回具有相应分类的所有已分类列:
SELECT
schema_name(O.schema_id) AS schema_name,
O.NAME AS table_name,
C.NAME AS column_name,
information_type,
sensitivity_label
FROM
(
SELECT
IT.major_id,
IT.minor_id,
IT.information_type,
L.sensitivity_label
FROM
(
SELECT
major_id,
minor_id,
value AS information_type
FROM sys.extended_properties
WHERE NAME = 'sys_information_type_name'
) IT
FULL OUTER JOIN
(
SELECT
major_id,
minor_id,
value AS sensitivity_label
FROM sys.extended_properties
WHERE NAME = 'sys_sensitivity_label_name'
) L
ON IT.major_id = L.major_id AND IT.minor_id = L.minor_id
) EP
JOIN sys.objects O
ON EP.major_id = O.object_id
JOIN sys.columns C
ON EP.major_id = C.object_id AND EP.minor_id = C.column_id
权限
在 SQL Server 2019 实例上,查看分类需要 VIEW ANY SENSITIVITY CLASSIFICATION 权限。 有关详细信息,请参阅 Metadata Visibility Configuration。
在 SQL Server 2019 之前,元数据可以通过使用扩展属性目录视图 sys.extended_properties
来访问。
管理分类需要 ALTER ANY SENSITIVITY CLASSIFICATION 权限。 “ALTER ANY SENSITIVITY CLASSIFICATION”由数据库权限“ALTER”或服务器权限“CONTROL SERVER”表示。
管理分类
可以使用 T-SQL 添加或删除列分类,还可以检索整个数据库的所有分类。
后续步骤
有关 Azure SQL 数据库,请参阅 Azure SQL 数据库数据发现和分类。
请考虑通过应用列级别安全性机制来保护敏感列:
- 用于模糊化使用中的敏感列的动态数据掩码。
- 用于静态加密敏感列的 Always Encrypted。