数据库管理员会负责维护数据的隐私和完整性。针对数据的脱敏,通常的方案是:应用端实现或者引入加密机等。
不过现在MySQL8.0实现了数据脱敏这个功能,可以减少应用的复杂性、减少开发的工作量,也能友好的保护了数据的隐私和完整性。
在8.0.13企业版中推出插件“data_masking.so”,可以实现数据的脱敏操作。
可以实现例如:银行卡号中的后四位为X字符、生产随机数据、例如电子邮件地址和支付卡号等...
具体操作可以参考
https://dev.mysql.com/doc/refman/8.0/en/data-masking-usage.html
如果没有预算购买企业版MySQL,但迫切需要这个功能,该如何操作。
Percona MySQL Server实现了类似的功能。
在Percona Server 8.0.17-8的版本中,目前作为实验功能,具体操作文档如下:
https://www.percona.com/community-blog/2019/12/13/percona-server-for-mysql-8-0-new-data-masking-feature/
https://www.percona.com/doc/percona-server/LATEST/security/data-masking.html
不过Percona在实现的过程中,引入新的概念字典,可以直接使用Percona提供的字典,也可以根据Percona提供的字典进行修改。
简单举例
1.1创建表
1.2 创建视图做比对
1.3 结果对比
目前Percona MySQL Server 对此功能没有GA,现在不能在生产环境使用。
少量数据:未来的规划中 可以使用逻辑备份,备份还原到新的数据库中。
大量数据:克隆原始数据(应该是物理备份之类的..)
大量数据:主从复制、或者proxysql的多路复用
更详细的介绍可以看percona的文档(扩展阅读第二个)
扩展阅读
https://dev.mysql.com/doc/refman/8.0/en/data-masking-usage.html
https://www.percona.com/community-blog/2019/12/13/percona-server-for-mysql-8-0-new-data-masking-feature/
https://www.percona.com/doc/percona-server/LATEST/security/data-masking.html
字典地址:
https://raw.githubusercontent.com/philipperemy/name-dataset/master/names_dataset/first_names.all.txt
https://raw.githubusercontent.com/philipperemy/name-dataset/master/names_dataset/last_names.all.txt
测试表地址:
https://github.com/datacharmer/test_db