前言
数据安全在离线数据仓库(离线数仓)中尤为重要,因为它涉及到大量敏感数据的存储、处理和分析。离线数仓通常用于存储历史数据和进行复杂的批量处理,因此需要采取严格的安全措施来保护数据的完整性和机密性。
首先,访问控制是数据安全的关键。只有授权人员才能访问和操作数据,确保敏感信息不会被未经授权的人员获取。其次,数据加密在传输和存储过程中也是必不可少的,以防止数据被窃取或篡改。此外,定期进行安全审计和监控,可以及时发现和应对潜在的安全威胁。
此外,数据备份和恢复机制也是离线数仓数据安全的重要组成部分。通过定期备份数据,可以在数据丢失或损坏时及时恢复,确保业务的连续性。最后,员工的安全意识培训也是不可忽视的一环,确保所有相关人员都了解并遵守数据安全的最佳实践。
具体措施
在过去的几个数据中台的项目中,我们不难注意到客户对数据安全的重视程度是非常大的,一些客户甚至会为了数据安全,在数据中台的建设阶段就开始将数据安全实行在其中,这有时也会让作为乙方的我非常痛苦,这将会大大降低数据开发的复杂度,当值项目延期等风险。
所以,我们在做项目的同时,一般都会结合客户对数据安全的敏感程度,在开发效率和数据安全两边做好平衡,尽可能的减少两者之间的互相影响。
一、访问控制
我们知道,对于一个相对完整的数据团队来说,会有不同角色参与其中。所以我们需要先对整个开发团队的各角色有清晰的认识,然后再从角色中对应不同的数据访问权限,当然在开发中的不同阶段,也会对数据安全有相应的不同的调整。
首先,一般都会有哪些角色呢?
1、主Owner
一个团队中,一定是需要一个主要的技术负责人,来对整体做把控的,相当于超管,他对数据有完整的访问权限,但他的主要工作是对项目代码及数据的review或者测试,他一般不会开发任何数据处理脚本,所以对他来说,他并不需要数据处理脚本发布权限,尽管他可以为自己分配这个权限,但我认为这是一个安全意识问题,权责要对等,不然会出问题。
2、数据源管理
数据中台的数据来源一般来自与各个业务系统,那么这些业务系统中的数据肯定不是都需要的,最为敏感的例子就是用户密码(虽然现在的大部分用户密码都是密文存储),一旦泄密,会对业务系统的安全性产生威胁。
所以对于数据源管理员来说,需要遵循最小化原则,必要的数据才会被作为数据中台的数据源接入,下游的开发任务如果有需要,可以对数据源管理提交申请,进行仔细的安全及必要性评估后,再对其进行接入。
3、数据开发
在数据源接入后,就需要对数据进行处理,或者说是开发工作了。
在这之前,所有参与数据开发的人员中,他们的负责的部分需要有明确的边界,我们可以横向来划分不同开发人员,也可以纵向划分。
所谓横向划分,就是在数据建模后,根据模型,以及预设的数据血缘,尽量不同的人负责不同的分支,那么这些分支所用到的数据源表,以及有中间表,都有其访问或者开发权限。
纵向划分,如同我们将开发团队对应数据仓库的分层进行分配(ODS,CDM,ADS)
。。。 不多做赘述了,总之,还是最小化原则,开发者对数据的权限需要是必要的,且开发权限尽可能互不干扰。
3、数据测试
我们知道,数据测试至关重要,只有通过数据测试的数据才会被对外输出,那么数据测试阶段,不同的测试人员会有不同的数据访问权限,将测试中遇到的问题,提交给开发对应的开发人员进行核查及修复。这个过程中,开发角色的权限不变,测试人员则需要对其负责测试的部分拥有完整的数据访问权限。等测试结束后,权限收回。 当然,测试人员可能还需要拥有外部的数据权限,这我会在关于数据测试的文章中说明。
4、数据分析
(未完待续)
See you