查看原文
其他

MySQL 数据脱敏方式盘点

米拉🛸 Bytebase 2023-12-22

对于企业而言,数据脱敏可以在数据共享或测试时用于保护敏感数据(如信用卡,社保卡,地址等)。通过对敏感数据进行脱敏处理,组织可以最大限度地降低数据泄露和未经授权访问的风险,同时仍能够使用真实的开发,测试和分析目的所需的数据。

有很多方法进行数据脱敏,比如遮挡,替换,洗牌和加密,等等,它们适用于不同场景。本文主要聚焦「遮挡」,用特定符号 (比如 X 或 *) 遮挡敏感数据,这种方法可以在脱敏的同时保持原有数据感观。

MySQL 企业级数据脱敏插件
MySQL 官方这边,数据脱敏只作为插件在 MySQL 企业版中提供 (https://dev.mysql.com/doc/refman/8.0/en/data-masking-plugin-usage.html)。
MySQL 数据脱敏插件的工作原理是插件中包含了用于进行数据脱敏的语法,例如 `mask_inner`, `mask_outer`, `mask_ssn` 等。

组织里有权限的人员(通常来说是数据库管理员)会首先定义一个显示脱敏数据的视图 (VIEW)。即使用户对敏感数据的访问受限,他们也可以将该视图视为一张表。因此,要访问数据,用户不是直接使用脱敏语法进行直接查询,而是从视图中查询即可。
这种方法很直接,但也有一定限制:
  • 依赖于细粒度的 MySQL 用户账户 / 角色。实际上,大多数 MySQL 实例只有少数几个用户。要采用此插件,需要重新设计 MySQL 中的账户设置。

  • 不同的脱敏规则需要定义不同的视图。随着底层表和变体数量增加,这会越来越难管理。

  • 没有专门的模块来管理脱敏(毕竟只是普通的 MySQL VIEW)。


Percona 数据脱敏插件
Percona 数据脱敏插件 (https://docs.percona.com/percona-server/8.0/data-masking-plugin-functions.html) 是前述 MySQL 插件的免费开源实现。它也提供了一组用于脱敏数据的函数。

同样,保护原始数据的方法是使用视图 (VIEW)。
然而,Percona 数据脱敏仅适用于 Percona Server for MySQL。如果你使用更主流的 MySQL,那就需要另寻他路了。

Bytebase 动态数据脱敏
不同于前两种,Bytebase 动态数据脱敏 (https://www.bytebase.com/docs/security/data-masking/overview/) 不依赖于底层的  MySQL 视图和用户,而是通过 Bytebase 内部管理脱敏策略和授权管理。当用户通过 SQL 编辑器查询时,会自动应用动态脱敏策略。
Bytebase 动态数据脱敏包括以下组件:
1. 全局脱敏规则:「工作空间所有者」和「DBA」可以批量定义全局脱敏规则。例如,可以将所有名为 email 的列脱敏程度设置为「半脱敏」。这样,修改脱敏策略就无需手动修改数千列了,还节省了维护视图的麻烦。
2. 列脱敏规则:「工作空间所有者」和「DBA」可以将列设置为不同的脱敏级别。列脱敏规则优先于全局脱敏规则。

3. 访问未脱敏数据:对于脱敏数据,「工作空间所有者」和「DBA」可以授予特定用户访问未脱敏数据的权限。

⚠️「工作空间所有者」和「DBA」均为 Bytebase 的角色 (https://www.bytebase.com/docs/concepts/roles-and-permissions/)。

对比
MySQL 数据脱敏和 Percona 数据脱敏插件的优势在于它们是在数据库本身中实现的。因此,无论以何种方式将查询发送到数据库,都会强制执行数据脱敏规则。对于 Bytebase 动态数据脱敏来说,查询则需通过 SQL 编辑器进行强制执行。
Bytebase 动态数据脱敏的优势在于其与所有 MySQL 发行版的兼容性,丰富的脱敏策略和访问授权。只要团队通过 Bytebase SQL 编辑器来查询数据库,那么 Bytebase 动态数据脱敏可以保障组织敏感数据的安全。
🔧 欢迎跟着教程来试试 Bytebase 动态数据脱敏

活动预告|平台工程 11.4 线下 Meetup · 上海
实现基于 Azure DevOps 的数据库 CI/CD 最佳实践
Star History 九月开源精选 |开源 GitHub Copilot 替代
一家全球化创业公司背后的40+ SaaS服务和成本:2023版

继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存