背景
随着数据的不断迭代,数据的种类和数量越来越多,保护数据以及如何防止敏感数据泄漏是一个巨大的挑战。
数据安全的痛点
- 解决数据误删问题;
- 解决敏感数据泄露问题;
- 隔离生产环境和试验环境
解决痛点问题的方法
如何解决数据误删问题
备份和恢复数据
备份效果也可以通过复制物理文件来实现,但需要注意的是,在复制物理文件的备份期间,应避免数据写入。一般用于备份历史归档数据。
- 导出导出文本文件
- ClickHouse通过其
ALTER TABLE…FREEZE
该功能为即时时间点备份提供了本地支持。 - Clickhouse-Backup
数据备份解决方案
需要额外的格式化存储文件,数据量大,结构化文件导出数据不受限制,存在数据泄漏问题。
Freeze备份基于分区,通过freeze备份指定分区后,CK存储在更改分区中的数据${datadir}/shadow目录下,shadow目录中的N是一个自增长的整数,表示freeze执行次数。
freeze备份本质上是通过硬链接原始目录文件来实现的,因此不会导致额外的空间存储上升。
第三方实现的数据备份工具,可以实现将手动执行过程改为自动执行
网易:网易 HDFS 基于数据备份 HDFS 快照 DistCp EC 实现的。
垃圾回收箱机制
删除数据后,可保留24-72小时,后悔删除后可及时恢复。HDFS支持垃圾回收机制的使用Clickhouse如果你想支持,你只能自己实现。
优点:防止数据被误删,增加数据的安全性
缺点:增加运维成本和数据存储成本。
数据备份策略应与数据资产等级相连,对于核心数据资产,数据中心应强制备份,防止数据丢失。
敏感数据解决问题的核心要点
解决敏感数据泄漏问题据泄漏问题
- 数据权限最小化,数据操作审计
- 敏感数据脱敏
操作审计机制和精细权限管理
数据权限是数据中台实现数据复用的前提和必要条件。如果刚开始系统没有开启权限,后期接入权限,任务的改造成本会非常高的,几乎涉及到所有的任务。所以权限这个问题,在数据中台构建之初,必须提前规划好。
阿里数据开发流程
阿里的整个数据安全主要由流程系统控制。用户提取数据需求表后,管理数据指标,根据数据指标研发申请相应的表权限,进行数据开发
包括指标管理、业务表权限申请、数据同步数仓数据质量分析、维度建模、BI报告管理、数据产生到应用的血缘管理、报告使用次数分析等,平台流程系统建设和使用的技术主要是自主研发。
网易数据安全解决方案
网易是通过OpenLDAP(用户管理) Kerberos(非安全网络双向认证) Ranger(权限管理) 综合用户、认证、权限管理体系。
Clickhouse本身支持RBAC权限控制支持角色、用户、行级权限和集成Kerberos和LDAP。
数据脱敏
数据脱敏是指通过脱敏规则对一些敏感信息进行数据变形,实现敏感隐私数据的可靠保护。这可以降低数据本身的安全水平,并在开发、测试和其他非生产环境以及外包或云计算环境中安全使用脱敏后的真实数据集。在数据脱敏技术的帮助下,屏蔽敏感信息,保留屏蔽信息的原始数据格式和属性,以确保应用程序在开发和测试过程中正常运行。
脱敏实施步骤
在数据脱敏之前,我们应该首先确定哪些数据应该作为脱敏的目标。我们根据业务场景和数据安全水平(绝密、高保密、保密、开放、四级)进行划分, 主要从高保密等级的敏感数据入手。
在这里,我们将敏感数据分为用户、商家、终端和公司四个维度。
- 从用户维度梳理可能有以下敏感字段:手机号码、邮件地址、账号、地址、固定电话号码等信息(此外,种族、政治观点、宗教信仰、基因等。 2.从商家维度梳理:合同签订人、合同签订人电话等。(不排除全局敏感数据:如商家团购类别等。
- 梳理用户终端维度:可以识别终端的唯一字段,如设备id。
- 从公司角度梳理:交易金额、代金卷密码、充值码等
对敏感数据字段进行梳理,下一步就是如何根据特定的应用场景对敏感字段进行具体的脱敏处理。
常用的处理方法如下:
- 替换:如将女性用户名统一替换为F,这种方法更像是障眼法,可以完全保持内部人员的信息完整性,但容易破解。
- 重排:序号12345重排为54321,按一定顺序打乱,很像替换 必要时还原信息很方便,但也很容易破解。
- 加密:编号12345加密为23456,安全性取决于采用哪种加密算法,一般取决于实际情况。
- 截断日期:1381011111111111138,放弃必要的信息,确保数据模糊,是一种常用的脱敏方法,但往往对生产不够友好。
- 掩码: 123456 -> 1xxxx6.保留部分信息,保证信息长度不变,更容易识别信息持有者, 如火车票上的身份信息。
- 20130520年日期偏移 12:30:45 -> 20130520 一般这种方法可以保护数据的时间分布密度。
但不管哪种手段都要基于不同的应用场景,遵循下面两个原则:
1.remain meaningful for application logic(尽量保留脱敏前的有意义信息)
2.sufficiently treated to avoid reverse engineer(最大限度地防止黑客破解)
电话号码(moblie) | 掩码 | 13812345678-> 13812340000 | 防止号码泄露,但保留运营商和区域信息 (前端绑定或注册时限制的唯一性) |
邮件(email) | 截断 加密 | hxs@163.com -> 6225888e3a1d4a139f5f5db98d846102b2cd0d@163.com | 保留邮件域信息 |
团购密码(code) | 加密 | 4023926843399219 -> 1298078978 | 加密后在一定精度上保持独特性,并与数据类型一致 |
设备号(deviceid) | 加密 | ffbacff42826302d9e832b7e907a212a -> b9c2a61972a19bf21b06b0ddb8ba642d | 加密后保持独特性 |
通过对上述字段的梳理和脱敏方案的制定,数据仓库涉及敏感字段表进行脱敏处理。在数据仓库分层理论中,数据脱敏往往发生在上层,最直接的是在对外开放这一层面上。。
确认处理的表和字段后,我们还要确保相关上下游流程的正常运行, 以及未脱敏的敏感信息的正常产出与存储(通过更严格的安全审核来进行访问)。
以用户信息表user为例,脱敏步骤如下:
1.首先生产一份ndm_user未脱敏数据,用于未脱敏数据的正常产出。
2.对下游涉及的所有依赖user生产流程进行修改,来确保脱敏后的正常运行,这里主要是确认数据格式,以及数据源的工作。
3.根据对应的脱敏方法对user表中对应的字段进行脱敏处理。
开发与生产物理环境隔离
- 测试和线上环境共享一套线上元数据
- 数据存储和资源管理
- 在同一套元数据中,测试环境的数据保存在func库中,生产则保存在online库中,保证测试开发不影响到生产
- 任务执行和配置依赖根据环境自动选择库。实现不需要修改代码一键发布。
-
优点:
直接使用生产环境进行测试,效率高
-
缺点:
存在生产数据泄漏风险
适用于效率优先的场景。
- 数据开发环境与生产环境完全隔离
- 大数据操作平台和数据存储完全部署两套
- 数据开发需要对数据进行开发和测试是需要同步生产环境部分数据到测试环境,数据需要脱敏。
- 任务在测试环境开发,配置任务依赖,设置稽核规则和报警,通过运维审批之后发布一键发布到生产环境
优点:
- 数据安全实现最高级别的保护。开发人员不需要指导数据细节和具体的数据内容
缺点:
-
两套环境,每次数据开发需要从线上同步数据到测试环境,数据开发效率影响比较大
-
需要建立完整的流程体系。包括数据权限审批,数据同步流程。开发完成后数据的发布流程
-
数据准确性难以保障,测试环境测完很可能存在一些未发现的问题
各厂商数据安全对比
阿里 | 历史归档数据冷备 定期数据进行热备 有垃圾回收箱机制 | 标准化数据开发流程 业务数据权限审批 用户权限精确到数仓列级; 数据血缘支持数据到报表级; 数据流出以及流转都有系统支持,使用审计 数据访问痕迹 自研技术 | 内部开发主要对用户的敏感信息进行脱敏,数据落盘和传输一般不会对数据脱敏。 支持数据传输脱敏 支持数据落盘脱敏 | 使用同一套生产环境元数据,根据执行的不同环境将计算结果存储不同环境的数仓中。 |
网易 | 历史归档数据冷备 对数据进行分级,每24小时对重点数据进行快照备份。 有垃圾回收箱机制 是基于 HDFS 快照 + DistCp + EC 实现的 | 标准化数据开发流程 业务数据权限审批 用户权限精确到数仓列级; 数据血缘支持数据到报表级, OpenLDAP(用户管理) + Kerberos(非安全网络双向认证) + Ranger(权限管理) 实现的一体化用户、认证、权限管理体系。 | 数据敏感度分级 支持数据传输脱敏 支持数据落盘脱敏 支持应用层脱敏 脱敏后的数据不参与维度计算 | 使用同一套生产环境元数据,根据执行的不同环境将计算结果存储不同环境的数仓中。 |
恒生 | 定期根据数据重要级别做一些备份 | 数据开发权限管控没有具体流程 | 部分数据本地分析,客户信息脱敏后上云。具体客户账户金额相关数据不会做分析。主要对用户隐私信息进行脱敏 | 分为本地环境和云端数据。 敏感数据会经过本地处理之后上云,供云端的数据运营平台使用。主要还是和线上共用一套数据。 |
根据调研,当前互联网大厂主要还是使用生产环境进行数据开发,极少数金融级别可能会做生产环境的和测试环境的完全隔离。主要控制敏感数据泄漏还是依赖流程权限控制,保证每个职责和岗位的人员能看到的数据最小化原则。对于用户敏数据进行脱敏处理,保证相关人员拿不到用户详细资料。
主要还是秉承着几个原则,保证数据权限最小化粒度
- 健全的数据开发流程体系,权限申请策略。
- 数据流转生命周期全链路可见,可分析
- 数据细节可见不可得
- 谁申请的数据权限谁负责,谁是数据woner谁对数据质量负责。
数据安全体系建设数据
安全体系建设架构图
安全体系建设建设实施步骤
数据资产梳理
- 梳理当前有的数据资产,当前有哪些数据,按照主题域进行分类归档
- 定义敏感数据的范畴,文档化输出敏感数据的定义范围
- 发现敏感数据,制定敏感数据管理办法。根据数据资产分级进行不同的权限管控办法。比如L4级别数据直接业务woner进行审批即可,L0级别数据需要部门领导审批。需要授权才能使用和查看
数据权限控制
明确数据需求导入方式,以流程工单方式进行提交数据报表的申请,统一数据指标管理入口,控制数据需求导入,统一管理数据需求
定义数据开发流程,建立业务数据责任制度,谁产生的数据谁对数据质量负责
定义数据开发业务库权限申请流程,需要使用那几张表申请那几张表权限,记录表权限所有者,最小化粒度管理数据权限。谁申请谁对数据负则。
数据报表的开发与测试,保证数据报表发布之后提供给业务方有权限申请记录,并且数据报表使用次数以及历史查看记录有机可寻,也可以分析报表使用频率,对于不频繁使用的报表可以下架节省对应的数据资源
保证数据可见但不可得,保证只能看到单条数据细节不支持批量查看敏感数据细节。
数据脱敏
- 制定数据脱敏策略,什么样数据类型使用什么的脱敏策略
- 支持数据生命周期过程中进行脱敏,如从数据采集落到ODS层就进行脱敏,还是在数仓提供给上层应用时进行脱敏要支持策略性的配置。
- 脱敏后的数据是不支持维度分析。