暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的数据导出屏蔽和反识别

MySQL数据库中很可能包含有价值且敏感的信息。MySQL通过使用加密,访问控制,审计,视图等功能来保护此类数据。但是,在许多情况下,用户需要共享一些此类数据,但又必须同时保护敏感信息。这就是需要使用数据屏蔽和反识别技术的地方。

屏蔽数据

敏感数据可以是任何东西的数字。例如,您的数据可能包含PII(个人身份信息),PHI(受保护的健康信息),PCI(支付卡信息),财务数据,知识产权或教育相关信息。又很多法规及条例,对这些敏感数据的处理和共享进行了规范。

§  PCI DSS

§  HIPAA

§  欧盟通用数据保护条例(GDPR)

§  ITAR

§  EAR

当然,还有更多涉及数据保护的法规。此外,公司有自己的内部规范来处理机密信息。

有些情况下,需要在生产环境的MySQL数据库之外共享数据。这些共享数据的用户包括 - 分析师,开发人员,业务合作伙伴和监管机构 - 出于各种原因需要某种形式的此类数据。但是,DBA需要保护数据并提供足够的数据以满足这类用户的需求。这类用户需要部分数据来执行以下任务:

§  数据分析

§  应用开发

§  测试

§  审计

§  训练

当从MySQL数据库共享和导出数据时,需要使用诸如下列的技术清除敏感信息:

§  数据屏蔽

§  数据反识别

§  模糊处理

§  随机化

§  随机格式化数据

以下内容显示了从MySQL数据库进行数据导出屏蔽和反标识的步骤。

屏蔽和导出数据的7个步骤

1.  安装或升级

 MySQL企业服务器

MySQL Workbench 8.0  和/或  MySQLShell 8.0

2.  加载 MySQL屏蔽插件和函数

3.  在数据列上创建一个select语句

4.  确定哪些列是敏感的

5.  为每列选择合适的屏蔽类型

6.  将屏蔽功能添加到具有敏感数据的列

7.  选择所需格式导出数据

现在让我们深入了解每个步骤的“操作方法”

1 - 安装/升级到MySQL EE

MySQL EE的安装和升级说明。您可以安装8.0或5.7

  MySQL企业服务器

可选但推荐(并在本博客中使用)

 MySQL Workbench 8.0

  MySQL Shell 8.0

安装和升级说明(使用8.0版本的MySQL Workbench和Shell,因为它们同时支持MySQL Server 8.0和5.7)

注意:也可以使用mysql客户端工具,但是输出格式更受限制,因为MySQL Workbench和Shell提供了更多的结果格式选项。

2 - 加载屏蔽插件和功能

请参阅 - 数据屏蔽安装

仅供参考,无需重启服务器。

3 - 在数据列上创建一个select语句

简单的方法是使用MySQLWorkbench

 

 

步骤4 - 运行Select并确定哪些列是敏感的

例如 - 在这里我们看到“users”表上的选择 - 显示了许多敏感数据列。薪水,SSN等 - 用户不希望按原样分享大部分此类信息。

步骤5 - 为每列选择合适的屏蔽类型

在此示例中,所选列显示了敏感数据。为了保护这些数据,我将展示如何

§  让部分名称混淆

§  使工资计划范围模糊不清

§  使用标准SSN屏蔽

§  屏蔽信用卡PAN数据

执行第5步的任务如下:

1.  完全省略select语句中对目标数据导出不必要的列

§  越少越好

2.  确定哪些列是敏感的

3.  对于那些敏感列,确定满足安全要求所需的适当屏蔽,混淆或随机数据替换。

a.  MySQL屏蔽和反识别概述

b.  有关MySQL屏蔽和反识别的文档

步骤6 - 将屏蔽功能添加到具有敏感数据的列

例如,使用SELECT创建屏蔽数据

 

在这里,您可以看到在Workbench中运行的语句

在Workbench中,您会注意到屏蔽列显示为BLOB - 如果您查看BLOB并选择文本,您将看到文本。这是因为MySQL的UDF不返回类型信息,将其视为二进制数据类型。

接下来我将修改屏蔽列选择并添加CAST。现在,您可以按预期查看结果数据。

例如,使用SELECT添加CAST创建屏蔽数据

如何在Workbench列中查看屏蔽结果

步骤7 - 选择所需格式导出数据

如果您使用MySQL Workbench,您可以轻松地从select语句中导出大量的屏蔽数据(数千条记录)。

但是,对于更大的结果集,您可能希望以批处理模式运行此屏蔽数据的导出。此时可以使用MySQL Shell。

首先为使用屏蔽的select语句创建一个文件。

§  将此SQL保存到文件中。

下一步 - 确定所需的结果格式 -

选项包括选项卡,表格,垂直,JSON(格式化 - 易于阅读),JSON(原始)

§  选择结果格式

§  -result-format选项包括:tabbed,table,vertical,json或json raw

§  选择协议 - 经典或X协议。(5.7使用-sqlc,8.0)

§  -sqlc for classic(3306)

§  -sqlx for new X Protocol(33060)

例子

§  运行命令 - for tabbed

§  mysqlsh -result-format = tabbed -user = root -password-sqlc -file = maskeduser.sql | head-20

 

§  运行命令 - json

§  mysqlsh -result-format = json raw -user = root-password -sqlc -file = maskeduser.sql

 

 

§  运行命令 - “pretty格式 json

§  mysqlsh -result-format = json -user = root -password-sqlc -file = maskeduser.sql

 

如果结果非常大 - 那么可选择通过管道压缩到zip。

§  运行命令 - 压缩为zip

§  mysqlsh -result-format = tabbed -user = root -password-sqlc -file = maskeduser.sql | zip f.zip -

§  检查zip文件 -

§  unzip -l f.zip

结论

这篇博客展示了使用数据屏蔽和反识别来保护数据。您很可能需要MySQL EE Masking,MySQL Workbench和MySQL Shell,这些工具来获得并保持对PCI,GDPR,HIPAA等法规的遵守。它只需要几个简单的步骤。

感谢您使用MySQL!


博客原文地址:https://mysqlserverteam.com/exporting-masked-and-de-identified-data-from-mysql/


最后修改时间:2019-12-24 14:17:26
文章转载自MySQL解决方案工程师,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论