点击蓝字 · 关注我们
前文回顾:
1.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(1)
2.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(2)
3.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(3)
4.如何掌握openGauss数据库核心技术?秘诀一:拿捏SQL引擎(4)
5.如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(1)
6.如何掌握openGauss数据库核心技术?秘诀二:拿捏执行器技术(2)
7.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(1)
8.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(2)
9.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(3)
10.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(4)
11.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(5)
12.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(6)
13.如何掌握openGauss数据库核心技术?秘诀三:拿捏存储技术(7)
14.如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(1)
15.如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(2)
16.如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(3)
17.如何掌握openGauss数据库核心技术?秘诀四:拿捏事务机制(4)
18.如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(1)
19.如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(2)
20.如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(3)
21.如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(4)
22.如何掌握openGauss数据库核心技术?秘诀五:拿捏数据库安全(5)
目录
- openGauss数据库SQL引擎
- openGauss数据库执行器技术
- openGauss存储技术
- openGauss事务机制
- openGauss数据库安全
Ⅰ.openGauss安全机制概览Ⅱ.openGauss安全认证Ⅲ.openGauss角色管理机制Ⅳ.openGauss审计与追踪Ⅴ.openGauss数据安全技术Ⅵ.openGauss云安全技术1.IAM认证2.安全chroot技术3.防篡改技术Ⅶ.openGauss智能安全机制
六.openGauss云安全技术
传统的数据库对于企业来说,运维是一个重大的难题,因为每个企业需要拥有针对特定数据库专业知识的DBA人员。且数据库运维成本很高,对于小企业来说是很难持续维持的。随着云技术的成熟,越来越多的企业将应用和数据搬迁上云。不同于传统的IT业务场景,在云环境下,系统所面临的风险远远多于私有环境。因此,除基本的安全能力外,我们需要额外的考虑云环境所面临的风险。
IAM认证
01
当用户需要把数据库部署到云上时,用户首先需要通过Portal界面创建数据库服务。创建成功后,用户则可以下载对应的客户端来进行数据管理操作。为了提升数据库使用过程中的便捷性和安全性,云服务一般会提供IAM服务(Identity and Access Management)认证机制。
openGauss搬迁上云后所提供的服务称为华为数据仓库服务(Data Warehouse Service,DWS)服务。当我们与IAM进行对接时,需要对应的服务和数据库的C/S两端协作完成。完整的IAM认证对接组件如图10所示。
图10 IAM认证对接组件流程图
在上述流程图中,我们要求云数据库服务管控侧和openGauss内核侧分别具备如表2的功能:
序号 | 云数据库服务管控侧 | openGauss内核侧 |
---|---|---|
1 | 与IAM对接,支持配置具有登录数据库权限的IAM角色信息 | 支持创建支持IAM认证的数据库用户,该用户没有密码,只支持IAM连接认证使用 |
2 | 支持获取凭证API接口,以ak/sk信息为入参获取token,且返回token前需要校验token中IAM用户名信息 | 服务端新增认证类型,通过用户属性判断使用IAM认证,而非账户口令认证 |
3 | 获取凭证API接口需支持用户自动创建及群组添加用户功能 | 客户端JDBC支持使用凭证API接口获取IAM临时凭据信息,并作为密码参数,传递给服务器 |
4 | 在DB开始认证前,将集群标识码、解析token用的证书传递到数据库服务器上 | 数据库服务侧支持获取region证书对token进行解签名 |
5 | 将集群标识码信息与token信息进行封装,返回给DB client使用 | 数据库服务根据token(含集群标识码)、policy等信息check解签名后的token是否符合数据库连接请求的要求,进行最终认证 |
表12 云数据库服务管控侧和openGauss内核侧功能表
事实上,openGauss支持两种方式来创建用于IAM认证的用户。第一种方式是手动创建,起使用语法如下,我们无需指定该用户的密码。
CREATE USER 'db_iam_user' PASSWORD DISABLE;
第二种方式为自动创建,由DWS管控侧提供凭证来指定自动创建参数(参数为AutoCreate),如果指定的数据库用户不存在则会自动创建,需openGauss内核侧适配,工具支持以下参数:
§ 集群标识符:包含数据库的集群名称。
§ 数据库用户名:现有或新的数据库用户名称。如果数据库中不存在此用户且AutoCreate为true,则将创建支持IAM认证的数据库新用户。如果此用户不存在且AutoCreate为false,则请求会失败。
§ AutoCreate (可选):如果数据库用户名不存在,则创建新用户。
获取凭证API接口将通过DWS Service和管控侧工具将AutoCreate、数据库用户名信息传递到管控域,GuestAgent需要内部连接数据库查询DWS Service传递的数据库用户名是否存在,如果存在则直接退出。如果不存在则判断AutoCreate是否为true,如果AutoCreate为ture,则拼接如下SQL语句发给数据库创建用于IAM认证的用户:
CREATE ROLE user_name PASSWORD DISABLE;
安全chroot技术
02
数据库搬迁上云后需要解决的另外一个问题是目录安全。当攻击者知道数据库的安装目录后,可以破坏数据库的目录结构。Chroot(Change Root)技术通过改变程序执行时所参考的根目录位置,来增进系统的安全性限制使用者能做的事。
chroot是当前云环境必须具备的一种技术,chroot的作用包括:
§ 切换运行系统的根目录所在位置,可引导Linux系统启动和系统急救;
§ 增强系统的安全性,限制用户的可见性和权力;
§ 建立与原始系统相隔离的系统目录结构,降低失败传播等问题;
openGauss采用基于chroot目录内容最小化这个方案将集群所有相关文件配置在chroot目录下的/var/chroot文件,在经过chroot之后,系统读取到的目录和文件将不在是旧系统根下的而是新根下,建立一个与原系统隔离的系统目录结构,增加了系统的安全性,限制了用户的权力。默认chroot的目录路径设置为/var/chroot。
防篡改技术
03
数据库从线下搬迁到云上后,除了解决基本的风险之外,还有一个最为重要的风险,那就是恶意DBA的运维风险。DBA用户及恶意运维人员可以登录系统,并恶意修改系统数据。在修改完数据信息后,DBA用户可以删除对应的审计日志而不被审计管理员发现。这里实际上体现的是第三方可信源监守自盗的问题。
当前解决第三方可信源监守自盗的最有效方法是去中心化思想。区块链就是这种思想最好的体现,在牺牲一点效率的情况下,可获得极大的安全性。在区块链系统中,首先没有一本中央大帐本了(如第三方机构),所以无法摧毁。其次,无法作弊,除非篡改者能够控制系统内的大多数人对电脑都进行修改,否则系统会参考多数人的意见来决定什么才是真实结果,而自己修改的账本完全没有意义。
区块链的本质即分布式多活数据库,两者在很多概念上具有共同之处。下面就一些区块链中的基本概念进行比对。
§ 共识算法:在分布式数据库中,最为关键的一点是需要保持数据一致性。当前普遍采用PAXOS或RAFT算法达成分布式数据库的数据一致性协商。在实施时,数据分片会同时存放在数据库的主从节点上,主节点负责数据的读写操作,从节点进行只读操作。当主节点写入数据时,其事务日志会被实时同步给其他从节点进行回放,以达到主从节点之间数据一致性的目标。
相比于区块链体系,数据库的主节点即为日志生成节点,其每次生成事务日志的功能,与区块链中每次出块时矿工的功能完全等价。但是分布式数据库每次操作时对日志实时广播到节点中,并且在事务提交时进行一致性判断。
§ 智能合约:在区块链系统中,智能合约其实是一段被存储在一个区块链上的代码,由区块链交易触发,并与区块链状态模式相互影响。这里所说的代码可以是任意支持的语言:Java、Fortran、C 等。当我们使用SQL语言时,它就是写在扩展SQL的存储过程。
除了上述关键技术点对比分析外,区块链和数据库在其他技术细节上还可以做如表3所示分析:
分析点 | 数据库 | 区块链 |
---|---|---|
参与者 | 单方参与 | 多方参与 |
管理 | Centralized | Decentralized |
最新记录 | Table Value | World State |
历史记录 | Log | Chain |
查询 | Table Value | World State Chain |
数字签名 | No | Yes |
容错机制 | CFT(Crash Fault Tolerance) | BFT(Byzantine Fault Tolerance) |
用户自定义逻辑 | Stored Procedure/User Define Function | Smart Contract |
表3 区块链和数据库技术分析
事实上,通过上述的分析我们可以看到,数据库和区块链具有很多相似之处,我们可以在数据库中融入区块链的思想将区块链天生具备的防篡改能力集成到数据库中。
openGauss数据将支持两种形态的防篡改系统:中心化部署及去中心化部署方式。中心化部署和去中心化部署方案的主要区别在于:
§ 中心化部署情况下,对外提供服务的节点即为Master节点。
§ 不需要通过拜占庭等类似的共识算法进行共识和校验。
因此,在中心化部署下,除Master节点外的剩余节点主要为日志备份节点,或提供对外的查询服务。在去中心化部署下,交易连接的任务节点即为Master节点(整个系统是一个多主的关系),然后在本地交易完成后与其他节点进行背书共识和验证。当复制节点验证成功后方可提交当前事务。
由于结合了数据库的优点和区块链的优点,openGauss防篡改系统有如下优势:系统内数据不可更改、记录历史可追溯、数据加密可验证、系统高可靠、整体易用性高。
七.openGauss智能安全机制
随着攻防理念的发展,系统中的安全特性变得越来越复杂。这些更加系统化、精细化的安全技术虽然可以有效的防御和解决环境中存在的各类风险,但是对DBA人员和运维人员都提出了较高的要求。无论这部分工作是由企业来做还是云服务提供商来完成,都是一个较大的挑战。另外一方面,不同国家和不同地区对安全的诉求和定义也是不一样的,服务提供商在选择对应的安全策略时很容易遗忘彼此之间的差异。因此我们需要系统变得更加的智能,变得可以自己管理这些安全机制。我们称之为自治安全机制或智能安全机制。
事实上,越来越多的数据库服务商正在聚焦于通过使用AI技术来提升系统的安全性,这不仅包括我们常说的智能数据安全,还包括系统自治管理安全。
在众多的智能安全机制中,首当其冲的敏感数据发现。数据库最重要的是保护用户数据,而数据里面最为重要的是敏感数据。随着数据格式的多样化,用户实际的隐私数据隐藏在了海量数据潮中。更为困难的一点是,不同的行业,不同的国家其法律法规所定义的敏感数据是不一样的。我们不仅要实现敏感数据发现这类特性,还要基于AI底座来实现该功能。
除了敏感数据发现外,另外一个重要的需要使用AI功能的特性是AI防SQL注入攻击。SQL注入通过动态拼接SQL注入传入Web服务端或者数据库服务端。其呈现的方式多种多样。与之类似的还包括AI异常行为发现和AI日志分析。通过这些特性我们可以快速的了解到我们的系统在遭遇什么样的风险。这些风险行为的特征是什么。AI系统会告诉我们这些风险,然后由系统自己根据当前的风险来进行安全策略制定。一个完整的AI自反馈机制如图12所示。这也是openGauss数据库未来重点发力的方向。
图12 openGauss智能安全机制全景图
在整个智能安全机制图中:
(1) 数据库仍然可以接受来自不同行为的连接,包括终端手机数据、包括数据库用户、包括各类应用,也可能涵盖攻击者。所有的这些访问行为均为记录在数据库内核日志中。
(2) 除了对外的这些连接行为外,数据库迁移上云后还会有一个特殊类的连接用户,DBA用户或集群维护用户,这些用户存在第三方信任问题。
(3) 在数据库内部,服务端会记录大量数据库内部发生的动作,并产生行为日志和审计日志。通过日志分析归类,结合人工智能模块,系统可以获取所有这些行为的特征,并提取异常行为。依据异常行为系统就可以自行决定采取何种防范策略,并加以实施应用。
(4) 在整个系统中,还需要注意存储的安全,包括本地盘和云环境对象存储服务的安全。这也是整个智能系统的重要一环。
至此,openGauss全系列连载完毕。
END
推荐阅读:331页!2021年度数据库技术年刊
推荐下载:2021数据技术嘉年华视频回放及PPT下载
2021数据技术嘉年华50余个PPT下载、视频回放已上传墨天轮平台,可在“数据和云”公众号回复关键词“2021DTC”获得!
你知道吗?我们的视频号里已经发布了很多精彩的内容,快去看看吧!↓↓↓
点击下图查看更多 ↓
云和恩墨大讲堂 | 一个分享交流的地方
长按,识别二维码,加入万人交流社群
请备注:云和恩墨大讲堂
点个“在看”
你的喜欢会被看到❤