前文说到,写这系列文章的目的是试图总结近几年我在参与构建和学习构建数据应用项目中趋同的部分,所以,我先描述一下我认为目前主流数据应用的组成以及构建这些组件的注意事项。

数据架构组件

总的来说,目前主流的数据应用从数据的被处理时间维度上可以分为 3 类大的部分:

  • 数据流水线和数据湖

    这是整个数据架构中最基础也是最重要的部分,负责所有数据的 接入,收集,ETL,建模,暂存,最终存储等。

  • 数据分析

    规整的数据存入数据湖后,需要经过进一步的处理和分析后才能产生真正的业务价值。

  • 数据应用于业务

    这是整个数据架构的最终端,有业务价值的数据只有最终真正地被应用到业务中,才是有意义的,否则整个架构地构建都是没有意义的。

数据架构安全

在详细介绍这 3 个组件之前,我想说一下一个非常重要但是常常被忽略的方面 — 安全

由于大部分数据架构都是处于一个企业非常靠后而且几乎完全属于内部的位置,所以很多(小型)组织(企业)对于数据架构的安全问题在开始的时候不是非常重视,或者将这个问题的优先级放得比较靠后。当企业业务变得比较成熟后,想要在已经部署好的数据架构中再完善安全方面的问题需要额外花费大量时间成本。

因此,最好在构建之初就将安全因素考虑进来。总的来说,数据架构中需要考虑的安全因素主要有下面几个方面:

认证

验证一个用户是否是这个数据系统中合法的用户。常见的用于企业内部的认证协议有:

授权

系统需要决定一个认证通过的用户具有的权限。一个优秀的授权系统应该兼具功能完善易于管理两方面。

功能完善

所谓功能完善是指:

  • 该拥有某权限的用户具有这个权限
  • 不该拥有某权限的用户没有这个权限

在设计授权系统时,可以参考最小权限原则基于角色的访问控制方法。举个例子,权限可以控制到某个用户是否具有读写数据库某张表中的某一列的权限,某个用户是否具有重跑某个 workflow 中某个具体任务的配置的权限。

易于管理

如果使用上述的最小权限原则构建授权系统,运行不久之后就会发现,给每个合法用户配置权限是一件责任重大而且费时费力的工作。因此,考虑到这一点,一个完善的授权系统应该将这个功能做得方便易用而且符合企业业务场景。

加密

除了认证授权,数据加密更可以防止非法用户对数据的获取和篡改。数据加密主要分为两种情况:

  • 数据存储

    数据以被加密状态存储。可以参考选择自己实现,也可以使用第三方服务,如果用的是云服务,就更加方便了。

  • 数据传输

    数据在传输过程中是被加密的。常见的就是 TLS 了。

审计

记录整个数据架构中各个部分都发生了什么是保证发生安全事故后追责和防止类似事故继续发生的必要手段。

简单来说,就是构建一套完善的事件记录日志系统。

需要注意的点是:

  • 事件的粒度
  • 日志留存时间

小结

对于安全方面,可以参考开源的或者付费的第三方服务,避免在此花太多时间。