查看原文
其他

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

任朝阳 ITPUB 2023-03-21

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



 本期分享嘉宾 

李永峰

中国银联云计算中心高级工程师

【嘉宾介绍】中国银联云计算中心数据库高级工程师,银联分布式数据库UPDRDB核心成员。主要从事银联自研数据库(UPSQL Proxy/UPDRDB)研发工作,包括数据库的分布式事务、执行计划、安全、审计等内核方面研发,以及内部私有云和银联云服务化设计。目前,UPSQL Proxy和UPDRDB已经承载银联内部绝大多数核心业务系统。

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

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

2. 用户安全

3. SQL安全

4. 数据安全

5. 未来工作




分布式数据库安全诉求

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

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

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

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

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

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

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

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

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


用户安全

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.%网段。


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类型执行平均延时、最大延时以及执行次数等指标。同时也支持针对每一个指标设置告警策略,超过限值会对用户告警通知。

4SQL审计

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


数据安全

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

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也支持全链路加密传输


未来工作

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

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


 DTCC2022大会门票免费领!等你来拿 



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存