首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

数据库协同开发时为什么要数据脱敏?OceanBase开发者中心如何实现?

目前,在数字经济大背景下,海量数据在各种信息系统上被存储和处理,其中包含大量有价值的敏感数据。敏感数据主要可能有个人隐私数据、企业业务数据,还有数据分级分类之后安全级别很高的核心数据。

但从业者应该都知道,企业在进行运维、开发和数据分析等工作时,通常需要执行数据库查询操作,而上述这些敏感数据可能就在其中,直接查询无疑会引发隐私泄露的风险。但如果执行过于严格的访问限制,又可能导致工作效率低下的问题。

为了解决这种情况,数据脱敏技术应运而生。它可以在 SQL 查询、数据导出等数据出库的场景中对敏感数据进行脱敏处理再进行输出,以既保证数据库可访问性,又不暴露隐私数据。下面,我们就以OceanBase开发者中心(ODC)在实际业务场景提供的数据脱敏功能为例,来看看数据脱敏到底有多重要。

首先了解一些与 ODC 相关的关键术语,为了方便理解,我们约定以下术语:

敏感列:数据库表中,存储敏感数据的列;

脱敏算法:用于对敏感数据进行脱敏处理的算法;

识别规则:用于标记数据库的某一列为敏感列的匹配条件,ODC 可以将符合规则的列自动识别敏感列。

另外在验证之前,我们首先使用 ODC 创建了两张数据表:数据表 1(employee_info)和数据表 2(employee_salary):

接下来,我们插入了模拟数据,以下是原始表数据的示例(请注意,以下数据仅为模拟,不包含真实用户信息):

最后,我们将需要进行脱敏处理的列添加到敏感列列表中。鉴于展示的数据列较少,我们采用手动添加的方式进行配置:

接下来,让我们探讨在各种数据出库场景下,ODC 如何更好地帮助用户进行数据脱敏处理。

场景一:白屏查看表数据,敏感字段脱敏后再展示

首先,在数据库对象树查看表 employee_info 的数据时,可以注意到表中的敏感列数据已经经过脱敏处理:

场景二:将数据导出到文件,敏感数据被脱敏处理

接下来,我们尝试将包含敏感列的表导出为 CSV 文件:

查看导出的 CSV 文件内容,可以发现敏感列同样已被脱敏处理:

场景三:执行 SELECT 查询,任何 SQL 语法都无法绕过数据脱敏

正如前面提到的,动态数据脱敏的核心挑战在于在各种复杂 SQL 语法下准确识别敏感列。下面我们逐步探讨 ODC 动态数据脱敏对 SQL 语法的支持水平。

首先是一个简单的单表查询:

正如大家看到的,作为敏感数据的 email 列和 address 列被成功脱敏。接下来,我们测试了一些内置函数、CASE WHEN 以及 JOIN 和 UNION 查询:

这些查询对于 ODC 动态数据脱敏来说也是“小意思”。结果集的三列均已成功脱敏,让我们逐一分析原因:首先,id 列并非敏感数据,但因与其进行 UNION 运算的 address 列是敏感数据,导致结果集的 case_id 列需要脱敏;同样地,name 列并非敏感列,因为使用了 CONCAT() 函数将其与 salary 列进行了拼接,导致 concat(t1.name, '-', salary) 列也需要脱敏;最后,email 列和 name 列合并的结果自然也是需要脱敏的。

我们进一步测试了多层嵌套子查询:

这看起来可能相当具有挑战性,但是我们还是成功应对了这一挑战。可以看到,对于 FROM 子句和 SELECT 子句中出现的子查询,无论是关联子查询还是非关联子查询,ODC 都能够正确应对。

虽然我们已经能够处理绝大多数 SQL 查询,但 ODC 并不满足于此。ODC 还支持对递归和非递归 CTE 的语法支持,并且能处理递归 CTE 中出现的敏感列传递:

上面的例子中,你可能会好奇为什么 cte_id 列也被脱敏了?这是因为 Recursive CTE 的敏感数据“传染”问题:在第一次递归中,CONCAT(cte_email, cte_name) 运算导致 cte_name 列包含了敏感数据,即 cte_name 列变成了敏感列;而在第二次递归中, CONCAT(cte_name, cte_id) 运算使 cte_id 列也被“感染”上敏感数据。因此,最终的结果是,ODC 对结果集的三列均作了脱敏处理。

其它场景

数据库变更与 SQL 窗口查询在本质上没有太大区别,都是执行 SQL 语句并输出结果。因此,在 SQL 窗口中支持的动态数据脱敏能力同样适用于数据库变更工单。

对于存储过程、程序包、触发器和自定义函数,我们目前尚未找到合适的方案来动态拦截它们对敏感数据的访问。但这并不会影响敏感数据管控的有效性。因为上述 4 种数据库对象访问敏感数据的前提是首先创建它们,而 ODC 最新版本(4.2.0)已经将这些数据库对象的 CREATE 权限和 PL 的调试与执行权限都纳入了管控(如下图所示 SQL 窗口规范),没有相应权限的用户将无法执行这些“危险”操作。因此,ODC 的敏感数据管控能力在各方面都形成了完备的闭环。

可以看出,ODC 在多种现实场景中,都能够实现较好的敏感数据防护,为用户提供更加安全、高效的数据库协同开发体验。也期待接下来ODC能够进行推进技术发展,为我们带来更智能、更无感的数据脱敏能力。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OsjAHzzhVih9hilWmzkyX01A0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券