30 分钟手把手带你入门数据脱敏
Bytebase 中的动态数据脱敏 (Dynamic Data Masking) 可根据上下文即时屏蔽查询结果中的敏感数据。它可以帮助企业保护敏感数据,防止其暴露给未经授权的用户。
本教程将在 30 分钟内手把手教会你如何在 Bytebase 中设置和尝试数据脱敏。
在开始教程之前请确保已安装 Docker (https://www.docker.com/)。
准备工作
1. 确保 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
2. Bytebase 已在 Docker 中成功运行,你可以通过 localhost:5678 访问它。注册一个管理员账户,它将自动被授予工作区所有者角色。
3. 登录 Bytebase ,单击左下方的开始免费试用,然后升级到企业计划。
4. 单击实例,然后单击分配许可证。选择两个实例,然后单击确认,否则数据脱敏将无法在实例上激活。
未脱敏
登录 Bytebase,点击 SQL 编辑器,你将被重定向到 SQL 编辑器页面。选择 (Prod) employee > public > employee,然后运行 SELECT * FROM employee;,你会看到如下结果。针对 (Test) employee 运行相同的查询,结果相同。
全局脱敏规则
你可能想批量应用脱敏设置,例如,你想脱敏 Employee 数据库中所有表的所有出生日期列。可以使用全局脱敏规则来实现这一目的。
1. 单击右上角的设置图标。单击安全和策略 > 数据脱敏。单击全局脱敏规则,然后添加规则。
2. 将规则命名为应脱敏出生日期,并选择列名,==。在输入框中填写出生日期,然后单击确认。
3. 返回 SQL 编辑器页面,选择 (Prod) employee > public > employee,再次运行 SELECT * FROM employee;。你会看到出生日期被脱敏了。选择 (Test) employee,结果是一样的。
列脱敏规则
如果要脱敏特定表中的特定列,可以使用列脱敏规则。
1. 单击数据库并选择 Prod 上的 employee,然后选择 salary 表。
2. 单击 amount 所在行上的编辑✏️图标,然后单击全脱敏。
3. 返回 SQL 编辑器页面,选择 (Prod) employee > public > salary,再次运行 SELECT * FROM salary;。你会发现 amount 被脱敏了。选择 (Test) employee,则没有。
向用户授予解除脱敏的访问权限
如果要向特定用户展示脱敏数据,该怎么办?你可以授予解除脱敏的访问权限。
1. 单击右上角的设置图标,然后单击成员。添加一个 DBA 用户,然后单击 + 添加。单击活动成员部分中该用户的链接,单击编辑设置密码,单击保存。
2. 单击顶部的数据库并选择 Prod 上的 employee,然后选择 salary 表。
3. 单击 amount 行上的编辑✏️图标,然后单击授予访问权限。选择 新建的 DBA 用户,单击确认。
4. 以 DBA 用户身份登录,进入 SQL 编辑器,选择 (Prod) Employee > public > salary,再次运行 SELECT * FROM salary;。你会发现 amount 没有被脱敏。
🎉 现在,你已经学会使用两种方法在 Bytebase 中脱敏数据:使用全局脱敏规则批量应用脱敏设置,以及使用列脱敏规则脱敏特定表中的特定列。还可以向特定用户授予解除数据脱敏访问权限。
目前 Bytebase 支持以下数据库的脱敏功能 https://www.bytebase.com/docs/introduction/supported-databases/
如果你对 Bytebase 的脱敏实现细节感兴趣,可以阅读 goInception 的数据脱敏真的能保护敏感数据吗?