Bytebase 的动态数据脱敏 (Dynamic Data Masking) 可根据上下文即时屏蔽查询结果中的敏感数据。它可以帮助企业保护敏感数据,防止其暴露给未经授权的用户。
本教程将在 30 分钟内手把手教会你如何在 Bytebase 中设置和尝试数据脱敏。
在开始教程之前请确保已安装 Docker。
准备工作
- 确保 Docker 正在运行,并使用以下命令启动 Bytebase Docker 容器:
docker run --init \ --name bytebase \ --restart always \ --publish 5678:8080 \ --health-cmd "curl --fail http://localhost:5678/healthz || exit 1" \ --health-interval 5m \ --health-timeout 60s \ --volume ~/.bytebase/data:/var/opt/bytebase \ bytebase/bytebase:2.9.1 \ --data /var/opt/bytebase \ --port 8080
- Bytebase 已在 Docker 中成功运行,你可以通过 localhost:5678 访问。注册一个管理员账户,它将自动被授予工作区所有者角色。
- 登录 Bytebase ,单击左下方的开始免费试用,然后升级到企业计划。
- 单击实例,然后单击分配许可证。选择两个实例,然后单击确认,否则数据脱敏将无法在实例上激活。
未脱敏
登录 Bytebase,点击 SQL 编辑器,你将被重定向到 SQL 编辑器页面。选择 (Prod) employee > public > employee,然后运行 SELECT * FROM employee;
,你会看到如下结果。针对 (Test) employee 运行相同的查询,结果相同。
全局脱敏规则
你可能想批量应用脱敏设置,例如,你想脱敏 Employee 数据库中所有表的所有出生日期列。可以使用全局脱敏规则来实现这一目的。
- 单击右上角的设置图标。单击安全和策略 > 数据脱敏。单击全局脱敏规则,然后添加规则。
- 将规则命名为应脱敏出生日期,并选择列名,==。在输入框中填写出生日期,然后单击确认。
- 返回 SQL 编辑器页面,选择 (Prod) employee > public > employee,再次运行
SELECT * FROM employee;
。你会看到出生日期被脱敏了。选择 (Test) employee,结果是一样的。
列脱敏规则
如果要脱敏特定表中的特定列,可以使用列脱敏规则。
- 单击数据库并选择 Prod 上的 employee,然后选择 salary 表。
- 单击 amount 所在行上的编辑✏️图标,然后单击全脱敏。
- 返回 SQL 编辑器页面,选择 (Prod) employee > public > salary,再次运行
SELECT * FROM salary;
。你会发现 amount 被脱敏了。选择 (Test) employee,则没有。
向用户授予解除脱敏的访问权限
如果要向特定用户展示脱敏数据,该怎么办? 你可以授予解除脱敏的访问权限。
- 单击右上角的设置图标,然后单击成员。添加一个 DBA 用户,然后单击 + 添加。单击活动成员部分中该用户的链接,单击编辑设置密码,单击保存。
- 单击顶部的数据库并选择 Prod 上的 employee,然后选择 salary 表。
- 以 DBA 用户身份登录,进入 SQL 编辑器,选择 (Prod) Employee > public > salary,再次运行
SELECT * FROM salary;
。你会发现 amount 没有被脱敏。
成功!
🎉 现在,你已经学会使用两种方法在 Bytebase 中脱敏数据:使用全局脱敏规则批量应用脱敏设置,以及使用列脱敏规则脱敏特定表中的特定列。还可以向特定用户授予解除数据脱敏访问权限。
目前 Bytebase 支持以下数据库的脱敏功能🦾 如果你对我们的脱敏实现细节感兴趣,可以康康 goInception 的数据脱敏真的能保护敏感数据吗?
💡 你可以访问官网,免费注册云账号,立即体验 Bytebase。