金融行业全密态数据库研究报告 北京金融科技产业联盟2022年12月 版权声明 本报告版权属于北京金融科技产业联盟,并受法律保护。转载、编摘或利用其他方式使用本白皮书文字或观点的,应注明来源。违反上述声明者,将被追究相关法律责任。 编制委员会 主编 潘润红 编委会成员 郭志军聂丽琴林承军 编写组成员(按姓氏拼音排序) 曹 健 冯 程 郭 亮 江智睿 彭卫华 苏 强 汪主审 晟 王 栩 王 枫 杨锐 赵琼 黄本涛统稿张蕾 参编单位: 交通银行股份有限公司、中国工商银行股份有限公司、北京金融科技产业联盟、华为技术有限公司、阿里云计算有限公司、腾讯云计算(北京)有限责任公司、百度云计算技术(北京)有限公司、北京奥星贝斯科技有限公司 目录 一、研究背景1 二、主流安全技术3 (一)访问控制4 (二)全链路加密7 (三)数据脱敏16 (四)数据库审计19 (🖂)数据库防火墙22 (六)数据库漏洞扫描25 三、全密态数据库技术26 (一)硬件全密态技术26 (二)软件全密态技术26 (三)其他相关技术26 四、产品现状与应用场景30 (一)产品现状26 (二)应用场景26 五、应用挑战与应对33 (一)保障密态计算机制的安全性26 (二)实现业务的无缝迁移或轻量化迁移26 (三)避免服务切换带来的性能损耗26 六、研究情况总结34 一、研究背景 数据库是数据存储的主要技术手段,数据库系统在整个IT架构中的重要地位不言而喻。攻击数据库,窃取信息是当今信息系统的一个主要安全问题。数据泄露或被篡改等安全事件对企业和组织带来的损失将是多方面的,既有可量化的经济损失,也有不可量化的品牌信誉和业务影响。因此,确保数据库安全越来越重要。 数据库安全,是指以保护数据库系统、数据库服务器和数据库中的数据、应用、存储,以及相关网络连接为目的,是防止数据库系统及其数据遭到泄露、篡改或破坏的安全技术。与传统的网络安全防护体系不同,数据库安全技术更加注重从客户内部的角度做安全,即信息安全。其内涵包括了保密性、完整性和可用性,即所谓的CIA(Confidentiality, Integrity,Availability)三个方面。 机密性专指受保护数据只可以被合法的(或预期的)用户可访问,其主要实现手段包括数据的访问控制、数据加密和密钥管理等手段; 完整性是保证只有合法的(或预期的)用户才能修改数据,主要通过访问控制来实现,同时在数据的传输和存储中可以通过校验算法来保证用户数据的完整性; 可用性主要体现在整体的安全能力、容灾能力、可靠度,以及各个相关系统(存储系统、网络通路、身份验证机制和权限校验机制等等)的正常工作保障。 事实上,数据库经过长期发展已经构建出体系化的安全 能力,同时许多专业化的评估测试机构也在帮助数据库厂商挖掘产品缺陷,加速完善数据库安全能力的构建,并出具专业化评估报告,作为第三方背书让用户“信得过”。这些成熟的安全技术手段,构建了数据库纵深防御的安全体系,保障数据库在应用中的安全。 由于云数据库服务的应用便捷性、高可靠、低成本等优势可降低企业运营成本,加速企业应用创新,云数据库已成为数据库业务未来重要的增长点。但无论是传统的线下数据库服务,还是日益增长的云数据库服务,数据库的核心任务都是帮助用户存储和管理数据,且在复杂多样的环境下保证数据不丢失、隐私不泄露、数据不被篡改以及服务不中断。这就要求面向开放市场的云数据库具备多层次的安全防御机制,以面对相较于传统数据库更加多样化、复杂化的风险。应用程序漏洞、系统配置错误还是恶意管理员都可能对数据安全与隐私保护造成巨大风险。云数据库的部署网络由“私有环境”向“开放环境”转变,系统运维管理角色被拆分为业务管理员和运维管理员。业务管理员拥有业务管理的权限,属于企业业务方,而运维管理员属于云服务提供商。数据库运维管理员虽然被定义成系统运维管理,其实际依旧享有对数据的完全使用权限,可通过运维管理权限或提权来访问数据甚至篡改数据。同时,由于开放式的环境和网络边界的模糊化,用户数据在整个业务流程中被更充分地暴露给攻击者,无论是传输、存储、运维还是运行态,都有可能遭受来自攻击者的攻击。 面对越来越复杂的云环境,我们需要一种能够彻底解决数据全生命周期隐私保护的系统性解决方案。事实上,近年来学术界以及工业界陆续提出了许多创新思路。其一是数据离开客户端时,在用户侧对数据进行加密,且不影响服务端的检索与计算,从而实现敏感数据保护。此时即便数据库管理员也无法接触到用户侧的密钥,进而无法获取明文数据。这一思路被称为密态数据库解决方案,或全加密数据库解决方案。 正如密态数据库定义所描述的那样,密态数据库的核心 任务是保护数据全生命周期安全并实现基于密文数据的检索计算。在加密算法足够安全的情况下,外部攻击者及内部管理员均无法获取有效的数据信息。 二、主流安全技术介绍 目前,主流数据库安全技术包括权限与访问控制、全链路加密、数据脱敏、数据库审计、数据库漏洞扫描和数据库防火墙。目前国内分布式数据库产品基本具备这些安全特性。 权限与访问控制是利用授权和鉴权的方法来控制数据库用户对授权数据的访问。在权限分配的过程中,应遵循最小权限原则,实现细粒度的访问控制,从而提升数据资源的完整性和资源访问的安全性,实现访问控制过程的动态管理。 “全链路”指的是数据在传输、计算,存储的过程,而“全链路加密”指的是端到端的数据加密保护能力,即从应用系统到数据库的传输过程、到数据在应用运行时的计算过程(使用/交换),和到数据最终被持久化落盘的存储过程 中的加密能力。 数据脱敏是一种采用专门的脱敏算法对敏感数据进行变形、屏蔽、替换、随机化、加密,并将敏感数据转化为虚构数据的技术。按照作用位置、实现原理不同,数据脱敏可以划分为静态数据脱敏(StaticDataMasking,SDM)和动态数据脱敏(DynamicDataMasking,DDM)。 数据库审计能够实时记录数据库的活动,对数据库操作进行细粒度审计。除此之外,数据库审计还应能对数据库遭受到的风险行为进行告警,如:数据库漏洞攻击、SQL注入攻击、高危风险操作等。数据库审计信息生成可以由数据库内核提供,也可通过旁路部署,通过镜像流量或探针的方式采集流量,并基于语法语义的解析技术提取出SQL中相关的要素(用户、SQL操作、表、字段等)进而实时记录来自各个层面的所有数据库活动。 数据库漏洞扫描是专门对数据库系统进行自动化安全 评估的专业技术,通过数据库漏洞扫描能够有效的评估数据库系统的安全漏洞和威胁并提供修复建议。 数据库防火墙系统是针对应用侧异常数据访问的数据库安全策略。一般采用主动防御机制,通过学习期行为建模,预定义风险策略;并结合数据库虚拟补丁、注入规则和应用关联防护机制,实现数据库的访问行为控制、高危风险阻断和可疑行为审计。 (一)访问控制 访问控制,就是通过某种途径显式地允许或者限制访问 能力及范围,以限制对关键资源的访问,防止非法用户的侵入或合法用户的不慎操作所造成的破坏。采用可靠的访问控制机制是数据库系统安全的必要保证。目前主流的访问控制技术包括自主访问控制,强制访问控制,和基于角色的访问控制。项目所选数据库很好的支持了自主访问控制、基于角色的访问控制,以及基于安全标记的细粒度访问控制能力,防止越权访问和信息泄漏。 1.基于角色的访问控制 用户分配 特权分配 用户角色操作 对象 权限 用户登录 激活/去活角色 会话 随着数据库结构的日益复杂,规模增大,用户增多,传统访问控制技术存在的问题越来越突出,权限的分配和管理很困难。如图1所示,基于角色的访问控制应运而生。其基本思想是授权和角色相联系,拥有某角色的用户可以获得该角色对应的权限。角色可以根据组合中不同的工作创建,再根据用户的职责和资格来分配。用户可以轻松的进行角色转换。 图1基于角色的访问控制 2.基于权限的访问控制 包括五个基本的静态集合:用户集,角色集,对象集,操作集和权限集。如图一,用户集是可以执行操作的用户;对象集是被动实体,包括系统中需要保护的信息;操作集是 3.安全标记及强制访问控制 定义在对象上的一组操作;对象上的一组操作构成了一个权限集;角色集是基于权限的访问控制的核心,是角色成员授予的职责和责任,通过用户分配和权限分配将用户和特权关联起来。这样,用户的大幅增加不会导致权限管理强度的大幅提高,只需根据工作需要设立和调整角色及其拥有的权限,并将用户加入相应的角色即可。分布式数据库系统应独立支持基于角色的访问控制方式,简化权限控制的复杂度。 图2行安全标记的处理流程 不论是自主访问控制,还是基于角色的访问控制,都是通过授予主体对客体的访问权限,进行访问控制,通常客体是一个对象。但是,有时候这种访问控制无法满足更高层次的安全需求。例如,对一个对象的某一部分的访问控制。因此,开发实现基于行标签的安全标记方法是十分必要的,如 图2所示,利用安全标记控制某用户只有对某表内的某些行具有访问限,无法访问其他行数据,实现了更高级别的数据权限管理。 4.权力分立 为了避免管理员权限的过于集中,数据库系统应能够更细致的对权限进行细分。参照行政、立法、司法三权分立的原则,可以设立数据库的三权分立如图3所示。区分管理员角色分别为系统管理员,安全管理员和审计管理员。分别完成数据库系统管理,安全规则/审计规则的创建和管理,以及数据库审计等功能。权限角色基于租户内置,不可删,不可改,避免系统管理员权限过于集中。 图3权力分立 另外,为了强化用户管理,符合信息系统等级保护的要求。数据库系统应具有对用户密码的复杂度控制、失效控制,以及对用户身份检查能力进行优化,防止恶意的密码攻击,进一步提升数据库的安全性。 (二)全链路加密 1.传输加密 典型的分布式关系型数据库,从产品架构层面可以分为以下三个基本部分,如图4所示: 图4典型分布式数据库产品架构 数据库层:由若干个分布式数据库服务节点组成。包含SQL引擎、存储引擎和分布式事务引擎,共同配合提供一个高可用、可扩展的分布式关系型数据库系统。 数据链路层:提供从用户端到数据库端的最佳链路访问功能,屏蔽用户对分布式数据库的感知,保障分布式数据库的最高性能服务。 驱动层:直接面向用户和应用程序,提供访问分布式数据库的通信能力。主要组件应包括数据库客户端、jdbc驱 动、odbc驱动等。 加密方法。客户端和数据库端的通信协议一般采用SSL/TLS协议,该方面本身相对成熟。部分国内分布式数据库产品支持在不同租户里每个用户可采用不同的SSL认证机制,包括:SSL单向认证,X509双向认证,以及特殊的双向认证,如指定加密算法认证,指定发行方认证、指定SSL主题认证等。用户可以通过MySQL兼容的语法进行设置。 秘钥管理。数据库层的数据库服务节点、数据链路层和驱动层都需要使用SSL依赖的秘钥文件(私钥/公钥/证书)。数据库层和数据链路层的秘钥管理提供三种方式: 秘钥文件本地存放。密钥产生:数据库层面不负责CA颁发机构的建设,依赖外部认证的CA颁发中心。密钥存放:密钥被明文存储在数据库节点服务器端/代理端程序所在目录,服务器端/代理端启动时读取秘钥文件开启SSL。密钥更新:人工将新的秘钥文件覆盖原文件进行更新。密钥生效:重启单个数据库节点服务器端/代理端进程后,即刻生效。整个分布式数据库集群生效需要全部数据库服务节点重启。风险:明文本地存储,容易泄露和篡改。 秘钥文件系统表存放。密钥产生:数据库层面不负责CA 颁发机构的建设,依赖外部认证的CA颁发中心。密钥存放:密钥文件内容以字符串密文存储在数据库系统表中,使用对称加密方式,对称加密的算法和密码写在代码里不透明。系统表中的秘钥文件从数据库下载到本地配置文件中,数据库节点服务器端/代理端启动时读取配置文件中秘钥的密文, 内部解密后使用。密钥更新:使用系统租户更新秘钥文件对应的三个配置项为新的秘钥字符串。数据库系统表更新机制会保证秘钥更新同