银联分布式数据库安全设计

时间:2022-11-30 14:05:39

随着个人信息和隐私数据对于保密要求越来越高,各行各业对安全的要求也越来越高。而支撑各行各业的信息系统在设计和开发时,面临着安全方面的新挑战。数据库作为信息系统中数据存储和数据管理一个重要模块,其安全和设计显得尤为重要。近年来,分布式数据库在金融业加速落地,金融机构对分布式数据库安全有哪些需求?金融机构分布式数据库要如何进行安全设计?

本文整理自DTCC 2021中国数据库技术大会上嘉宾演讲,分享嘉宾是中国银联云计算中心高级工程师李永峰,他介绍了分布式数据库安全体系,以及银联分布式数据库UPDRDB在安全设计方面的探索实践。本文主要包括以下部分:

1. 分布式数据库的安全诉求

2. 用户安全

3. SQL安全

4. 数据安全

5. 未来工作

1.分布式数据库安全诉求

银联分布式数据库安全设计

首先看一下分布式数据库安全体系的定义,根据金融行业标准对分布式数据库安全体系的定义。分布式数据库安全体系包括基础支撑保障、用户管理、访问控制、数据安全、监控预警、密匙管理、安全管理、安全审计等。

最底层是基础支撑安全保障,包括操作系统、网络以及物理设备的一些安全要求。上面才是真正的分布式数据库内核的一些安全保障,包括用户管理,如身份识别和鉴别,用户授权和角色管理等。还有访问控制,如对象访问控制、一些权限节点访问控制,读写安全控制等。此外,比较重要的一部分是数据安全,数据安全包括数据存储加密、数据备份恢复加密,作为分布式数据库所强调的数据副本一致性的安全保障等。此外,还包括安全审计,如SQL 审计,数据库对SQL审计有很多要求,为了防止恶意的 SQL 攻击,用户对数据库操作 SQL 都要进行一些安全的审计来提供安全保障。

银联作为一个金融机构,严格按照金融标准要求去做分布式设计和改造。银联内自研的分布式数据库是一个演变的过程,从上一代的分布式数据库中间件UPSQL PROXY逐渐演变到新一代的 UPDRDB。

银联分布式数据库安全设计

UPDRDB在原有架构上主要有以下两点创新升级:

一是在部署架构上,采用新型的中间件与分布式存储引擎(Lamost)混合部署架构。其中最新引入的分布式存储引擎(Lamost)主要负责数据的存储以及其他一些复杂语句的处理。

二是引入了独特的 SQL 分类路由和分布式事务管理机制。在新引入的布式存储引擎(Lamost)上,接入层对用户的请求进行了特殊分类,分为简单的连接交易和复杂的管理类查询交易。其中简单的连接交易,直接路由到存储层(InnoDB)处理,对于复杂的管理类查询,如多表Join以及子查询等复杂查询操作,路由到分布式存储引擎(Lamost)来处理。

UPDRDB创新架构较第一代分布式中间件有不少优势,一是支持单点 DDL,可以直接建表,对复杂语句的支持更完备,同时也支持了在纯中间件下不太容易实现的扩缩容,新一代架构实现了在线的水平扩缩容。而且较上一代产品,对简单的联机交易,在性能上也有提升。

同时新一代UPDRDB产品考虑到更多安全,在安全方面也做了加固。

在银联新一代分布式数据库设计时,银联内部的安全诉求主要体现在用户安全、SQL安全、数据安全三个方面。用户安全,主要是对用基于分布式中间件架构数据库的用户管理、鉴权以及访问控制。SQL安全主要是引入了 SQL 黑白名单以及 SQL 审计。数据安全主要是数据存储安全和数据传输安全。数据存储安全对于用户密码以及用户数据的存储引入了国密的算法,作为金融机构,银联需要满足国密的要求。

2.用户安全

UPDRDB底层存储是基于MySQL构建,整个用户体系也是在 MySQL原生用户体系上扩展新的访问控制策略。一方面在代理层增加更细致的IP黑白名单,另一方面用户密码支持国密存储和传输。

银联分布式数据库安全设计

客户端与UPDRDB数据库建立连接的时候,主要是接入层做连接处理。在接入层会依次执行Host校验和User校验。

校验的过程分为两个阶段。第一个阶段是在 TCP 建链阶段,根据客户端Src执行Host校验,在初始阶段进行防护。

第二阶段是在用户认证阶段,会根据的用户名和访问源端地址进行用户匹配和校验,这与MySQL 原生用户匹配同样的策略,在用户认证完之后,还会再根据客户端Src进行 IP 黑白名单校验。

银联分布式数据库安全设计

分布式中间件这种架构,代理层会有一个访问地址,存在不透明的问题。如创建一个用户U1,仅限于10.0.1.%网段访问,代理层的整个用户的控制仅10.0.1.%网段网段ID的客户端可以访问。由于代理层的存在,在数据库层的用户访问只能限于代理层的服务器访问地址,可能变成了 172 这样一个网段地址,导致代理层的访问控制策略和存储层的访问控制策略不一致。

如何将整个代理层和存储层的节点访问控制策略保持一致?银联的实现方式是 IP 透传(IP Transparency)。

IP 透传的实现是在代理层扩展了 MySQL通信协议,在代理层与存储层建立连接的时候,将客户端原始IP 地址作为连接属性透传给存储层,存储层在接到代理层连接时,实际上并没有用代理层的连接去做 IP 校验,而是识别扩展字段,用扩展的字段来表示原始的 IP 进行最终的用户Host校验。这样可以做到整个代理层和存储层的访问策略是一样的,都是10.0.1.%网段。

3.SQL安全

(1)SQL相似性

银联分布式数据库安全设计

银联新一代UPDRDB中在SQL 安全方面,对接入层SQL 解析做了很大改进。在SQL解析阶段,根据词法分析(lex)和语法分析(yacc)生成SQL摘要,并基于单词序列来判断和查找相似SQL语法树,并获得了美国专利授权。 SQL相似性检测有以下几个好处:

在性能方面,相似SQL规避语法解析和CASE分析等阶段,复用语法树和执行计划,使得SQL解析与分布式执行计划构建的整体性能提升1倍左右;在数据安全方面,SQL 摘要可以达到数据脱敏效果,脱敏的信息可以用于 SQL 审计等方面;在访问控制方面,可以基于SQL 摘要实现SQL 黑白名单控制;在态势监控方面,对SQL运行状态进行实施监控和告警,也便于用户及时调优。

(2) SQL黑白名单

关于SQL 安全的SQL黑白名单,顾名思义就是通过设置SQL黑白名单来实现SQL访问控制和告警。整个 SQL 黑白名单是在SQL 相似性的基础上,基于SQL摘要来做。

银联分布式数据库安全设计

银联SQL黑白名单包括三个阶段,第一阶段是 learning 阶段,即学习阶段,用户可以在线下或设置环境对业务上所有的 SQL 进行执行,做一个全量回归,学习到所有的用户SQL列表,将整个列表里面新的SQL请求标记为灰名单。第二阶段是识别阶段,在识别阶段,用户可以根据学习到的列表将所有的 SQL 划分到白名单和黑名单。到第三阶段生产运行的时候,用户应用执行的任何请求,在接入层都会根据 SQL 黑白名单进行校验。如果是白名单,则允许SQL执行,如果是黑名单,则拒绝执行。如果是灰名单,有不同的控制策略,可以控制它拒绝执行,也可以控制它允许执行。同时也可以对灰名单设置更高级的告警,让用户感知到有新的 SQL 执行。

实际上这三个阶段是一个不断循环的过程,在运行阶段进行时,学习阶段也在进行。当运行阶段用户变更业务,有新的 SQL 执行,则进入 learning 阶段,重新进行学习得到灰名单列表,识别阶段用户会根据自己的需求将新SQL划分成白名单或黑名单。通过SQL 黑白名单,可以有效防止用户未授权的 SQL 在数据库中执行,避免一些高危 SQL 执行带来的风险。

(3)SQL态势监控

银联分布式数据库安全设计

SQL 态势监控,在接入层定期将相似的 SQL 执行状态按照不同的维度汇总到监控平台上,进行监控和展示。

具体的维度分为 SQL 类型和 SQL 摘要。银联将 SQL类型 分为几大类,如DML 里面有update 和 delete 这样的操作,此外还有 DDL 的一些操作,都按照类型进行划分并监控。而SQL 摘要,可以看到某一个类型里面更详细的一些 SQL 执行状态。可以看到每一个SQL类型执行平均延时、最大延时以及执行次数等指标。同时也支持针对每一个指标设置告警策略,超过限值会对用户告警通知。

(4)SQL审计

银联分布式数据库安全设计

SQL 审计是现在数据库常见的功能,从客户端连接到接入层、发送请求到请求处理结束,最后客户端断开连接,对整个生命周期中请求的行为进行审计。这里分成了前端审计事件和后端审计事件两类事件。前端审计事件主要审计客户端与接入层直接接入的一些信息,包括前端应用跟接入层的连接建立和退出,后端审计事件会审计整个 SQL 执行的一些计划,后端接入层和数据层的连接的建立退出,以及整个过程中请求执行时间、结果、耗时、错误码,包括分布式数据库的整个执行计划到了哪个分片等都会有记录。

4.数据安全

数据安全包括存储加密和传输加密两方面。

(1)存储加密

银联分布式数据库安全设计

存储加密方面。首先是用户密码加密存储和传输,MySQL 本身支持密码加密,有一个加密插件 mysql_native_password,是基于sha1的加密,密码属于密文传输。银联的UPDRDB引入了upsql_sm3_password插件,引入了新的加密算法 sm3(国密)。在传输的过程中,UPDRDB支持用国密的算法对密码加密进行传输和校验。

数据存储UPDRDB做了一个 InnoDB 表空间加密,MySQL 本身是基于keyring_file.so插件调用加密算法对表空间进行加密,InnoDB原生默认AES加密,为了满足金融机构对国密的需求,UPDRDB对整个插件进行了扩展,引入了新的SM4(国密)加密算法。在设置存储参数时,可以指定使用哪种加密算法。

(2)传输加密

银联分布式数据库安全设计

传输加密方面,MySQL 本身支持 SSL/TLS加密数据传输。在UPDRDB架构下,由于前面有接入层、存储层,所以做了两部分的加密。

一种是只在前端加密传输,就是客户端和接入层做加密,如传统的SSL/TLS卸载那样,在这种方式下,接入层和存储层之间并没有做数据加密传输。第二种是做全链路加密传输,相当于客户端到接入层,以及接入层到数据存储层的整个传输过程中都采用加密传输。

客户端采用上述两种加密传输的任何一种,需要在各个层面做证书配置。考虑到性能,银联自己内部实践一般都是推荐选用前端加密传输,但是因为有一些要求全链路加密传输,所以UPDRDB也支持全链路加密传输。

5.未来工作

在易用性方面,将进一步提升SQL兼容性,如触发器、临时表等,以及扩展分布式索引等;在安全方面,增强数据加密传输,如双向认证、国密认证;运维方面,深度挖掘SQL审计,进一步加强SQL防御功能,加强对分布式锁等待、慢查询SQL等分析;性能方面,优化复杂SQL执行效率,如条件下推,尽可能把各种条件都下推到存储层做数据查询,复杂计算尽量用少量的数据做计算,同时优化接入层连接池模型,以及锁的优化等。

李永峰在演讲的最后介绍,银联云是中国银联的一个云服务品牌,于 2020 年 9 月 16日正式上线。银联云源于开源安全可控,立足金融为核心理念和服务宗旨,致力于为客户提供云资源服务、云平台服务、云共享服务等多方面的服务,同时结合银联在金融领域长期的研究实践和技术积累,为客户提供一站式金融解决方案。