目录
openGauss数据库SQL引擎

openGauss数据库执行器技术

openGauss存储技术

openGauss事务机制

openGauss数据库安全

Ⅰ.openGauss平安机制概览
Ⅱ.openGauss平安认证
1.客户端配置信息
2.服务端认证办法
3.平安认证通道
4.RFC5802认证协定
Ⅲ.openGauss角色管理机制
Ⅳ.openGauss审计与追踪
Ⅴ.openGauss数据安全技术
Ⅵ.openGauss云平安技术
Ⅶ.openGauss智能平安机制

openGauss数据库安全

随着数字化浪潮的飞速发展,数字、连贯、信号、人工智能充斥着人们生存的各个领域。这些数字化信息被疾速地转换成数据寄存在各式各样的数据库系统中,通过进一步的数据管理与剖析产生商业价值。这些价值数据或被寄存在企业绝对关闭的公有网络内,或被寄存在绝对凋谢的私有云环境下,又或是集成在智能零碎中。人们在享受由数字化倒退所带来的便捷生存同时,也可能面临着无处不在的隐衷泄露、信息篡改、数据失落等平安危险。

数据库安全作为数据库系统的护城河,通过拜访登录认证、用户权限治理、审计与监督、数据隐衷爱护以及平安信道等技术手段避免歹意攻击者拜访、窃取、篡改和毁坏数据库中的数据,阻止未受权用户通过系统漏洞进行仿冒、提权等门路歹意应用数据库。

openGauss作为新一代自治平安数据库,为无效保障用户隐衷数据、避免信息泄露,构建了由内而外的数据库安全保护措施。本章节将介绍和剖析openGauss所采纳的平安技术以及在不同利用场景下所采取的不同的平安施行策略。

一.openGauss平安机制概览

传统数据库系统作为独立的组件构建于特定的操作系统平台上以对外提供数据服务或对接可视化治理界面对外提供数据治理服务,整个零碎部署在一个关闭的网络环境中。零碎中的数据寄存于物理存储介质上,存储介质能够为机械磁盘,也能够为SSD高速硬盘。硬件的稳定性和可靠性作为重要的一个环节,保障了数据整体的存储平安。

随着云化技术的疾速倒退,数据逐渐上云,零碎所处的环境越来越简单,绝对应的零碎危险也逐渐减少。openGauss作为分布式系统须要横跨不同的网络区域进行部署。除了须要像传统数据库那样从零碎拜访、数据导入导出、数据存储等维度来思考系统安全体系外,还须要思考网络安全、虚构隔离等等与理论业务场景严密相干的安全措施。一个残缺的openGauss平安机制体系如图11-1所示。openGauss平安机制充分考虑了数据库可能的接入方,包含DBA运维人员、用户、应用程序以及通过攻打路径连贯数据库的攻击者等。

图1 openGauss平安机制体系

openGauss提供了用户拜访所需的客户端工具GaussSQL(简称为gsql),同时反对JDBC/ODBC等通用客户端工具。整个openGauss零碎通过认证模块来限度用户对数据库的拜访,通过口令认证、证书认证等机制来保障认证过程中的平安,同时能够通过黑白名单限度拜访IP。

用户以某种角色身份登录零碎后,通过基于角色的访问控制机制(Role Based Access Control,RBAC),可取得相应的数据库资源以及对应的对象拜访权限。用户每次在拜访数据库对象时,均须要应用存取控制机制(Access Control List,ACL)进行权限校验。常见的用户包含超级用户、管理员用户和普通用户,这些用户根据本身角色的不同,获取相应的权限,并根据ACL来实现对对象的访问控制。所有拜访登录、角色治理、数据库运维操作等过程均通过独立的审计过程进行日志记录,以用于前期行为追溯。

openGauss在校验用户身份和口令之前,须要验证最外层拜访源的安全性,包含端口限度和IP地址限度。拜访信息源验证通过后,服务端身份认证模块对本次拜访的身份和口令进行有效性校验,从而建设客户端和服务端之间的平安信道。整个登录过程通过一套残缺的认证机制来保障的,满足RFC5802通信规范。登录零碎后用户根据不同的角色权限进行资源管理。角色是目前支流的权限治理概念,角色理论是权限的汇合,用户则归属于某个角色组。管理员通过减少和删除角色的权限,可简化对用户成员权限的治理。

用户登录后可拜访的数据库对象包含表(Table)、视图(View)、索引(Index)、序列(Sequence)、数据库(Database)、模式(Schema)、函数(Function)以及语言(Language)等。在11.3.3章节将介绍到其余的一些对象。理论利用场景中,不同的用户所取得的权限均不雷同,因而每一次对象拜访操作,都须要进行权限查看。当用户权限产生变更时,须要更新对应的对象拜访权限,且权限变更即时失效。

用户对对象的拜访操作实质上是对数据的治理,包含增、删、改、查等各类操作。数据在存储、传输、解决、显示等阶段都会面临信息泄露的危险。openGauss提供了数据加密、数据脱敏以及加密数据导入导出等机制保障数据的隐衷平安。

二.openGauss平安认证

openGauss数据库是一款规范的基于客户端/服务端(C/S)模式工作的数据库系统,每一个残缺的会话连贯都由后盾服务过程和客户端过程组成。一个残缺的客户端认证过程如图2所示。


图2 openGauss认证具体流程

(1) 客户端根据用户需要配置相干认证信息,这里次要指SSL(Secure Sockets Layer,安全套接层)认证相干信息,建设与服务端之间的连贯。

(2) 连贯建设实现后,客户端发送拜访所须要的连贯申请信息给服务端,对申请信息的验证工作都在服务端实现。

(3) 服务端首先须要进行拜访源的校验,即根据配置文件对拜访的端口号、拜访IP地址、容许用户拜访范畴以及拜访数据对象进行校验。

(4) 在实现校验后连同认证形式和必要的信息返回给客户端。

(5) 客户端根据认证形式加密口令并发送认证所需的信息给服务端。

(6) 服务端对收到的认证信息进行认证。认证通过,则启动会话工作与客户端进行通信提供数据库服务。否则回绝以后连贯,并退出会话。

客户端平安认证机制是openGauss数据库的第一层平安爱护机制,解决了拜访源与数据库服务端间的信赖问题。通过这层机制可无效拦挡非法用户对数据库进行歹意拜访,防止后续的非法操作。

客户端配置信息01
如上一大节所形容的,平安认证机制首先要解决拜访源可信的问题。openGauss通过系统配置将拜访形式、拜访源IP地址(客户端地址)以及认证办法寄存在服务端的配置文件中。与这些信息同时寄存的还包含数据库名、用户名。这些信息会组成一条认证记录,寄存在配置文件(Host-Based Authentication File,HBA文件)中。HBA文件记录的格局可为如下四种格局中的一种:

local DATABASE USER METHOD [OPTIONS]
host DATABASE USER ADDRESS METHOD [OPTIONS]
hostssl DATABASE USER ADDRESS METHOD [OPTIONS]
hostnossl DATABASE USER ADDRESS METHOD [OPTIONS]
一个HBA文件中能够蕴含多条记录,一条记录不能跨行存在,每条记录外部是由若干个空格、“/”和制表符分隔的字段组成。在理论认证过程中,身份认证模块须要根据HBA文件中记录的内容对每个连贯申请进行查看,因而记录的程序是十分要害的。每一条记录中各个字段的具体含意如下所述:

§ local:示意这条记录只承受通过Unix域套接字进行的连贯。没有这种类型的记录,就不容许Unix域套接字的连贯。只有在从服务器本机连贯且在不指定-U参数的状况下,才是通过Unix域套接字连贯。

§ host:示意这条记录既承受一个一般的TCP/IP套接字连贯,也承受一个通过SSL加密的TCP/IP套接字连贯。

§ hostssl:示意这条记录只承受一个通过SSL加密的TCP/IP套接字连贯。

§ hostnossl:示意这条记录只承受一个一般的TCP/IP套接字连贯。

§ DATABASE:申明以后记录所匹配且容许拜访的数据库。特地地,该字段可选用all、sameuser以及samerole。其中all示意以后记录容许拜访所有数据库对象;sameuser示意拜访的数据库须与申请的用户同名才可拜访;samerole示意拜访申请的用户必须是与数据库同名角色中的成员才可拜访。

§ USER:申明以后记录所匹配且容许拜访的数据库用户。特地地,该字段可选用all以及“+角色(角色组)”。其中all示意容许所有数据库用户对象拜访;“+角色(角色组)”示意匹配任何间接或间接(通过继承的形式)这个角色(角色组)的成员。

§ ADDRESS:指定与记录匹配且容许拜访的IP地址范畴。目前反对IPv4和IPv6两种模式的地址。

§ METHOD:申明连贯时所应用的认证办法。目前openGauss所反对的认证形式包含trust、reject、sha256、cert以及gss。咱们将在11.2.2大节着重介绍。

§ OPTIONS:这个可选字段的含意取决于抉择的认证办法。目前作为保留项不便后续认证形式扩大,如反对基于ident认证时须要指定映射选项。

在openGauss数据库系统装置部署实现后,HBA文件中默认蕴含了超级用户的配置记录。对于其余管理员新创建的用户则须要从新进行配置。对于认证规定的配置倡议遵循如下根本准则:

§ 靠前的记录有比拟严格的连贯参数和比拟弱的认证办法。

§ 靠后的记录有比拟宽松的连贯参数和比拟强的认证办法。

openGauss除了反对手工配置认证信息外,还反对应用GUC(Grand Unified Configuration)工具进行规定配置,如容许名为jack的用户在客户端工具所在的IP地址为122.10.10.30的中央以sha256形式登录服务端数据库database1:

gs_guc set -Z coordinator -N all -I all -h "host database1 jack 122.10.10.30/32 sha256"
这条命令将在所有的CN实例侧对应的HBA文件中增加对应规定。

服务端认证办法02
openGauss平安认证的认证办法在HBA文件中由数据库运维人员配置,反对的认证办法包含trust认证、口令认证和cert认证。

  1. trust认证
    trust认证意味着采纳以后认证模式时,openGauss无条件承受连贯申请,且拜访申请时无需提供口令。这个办法如果使用不当,可容许所有用户在不提供口令的状况下间接连入数据库。为保障平安,openGauss以后仅反对数据库超级用户在本地以trust形式登录,不容许近程连贯应用trust认证办法。
  2. 口令认证
    openGauss目前次要反对sha256加密口令认证。因为整个身份认证过程中,不须要还原明文口令,因而采纳PBKDF2单向加密算法。其中hash函数应用sha256算法,盐值则通过平安随机数生成。算法中波及的迭代次数可由用户本人视不同的场景决定,需思考平安和性能间的一个均衡。

为了保留对历史版本的兼容性,在某些兼容性场景下,openGauss还反对MD5算法对口令进行加密,但默认不举荐。

特地地,openGauss数据库管理员用户在创立用户信息时不容许创立空口令,这意味着非超级用户在拜访登录时必须提供口令信息(命令形式或交互式形式)。用户的口令信息被寄存在零碎表pg_authid中的rolpassword字段中,如果为空则示意呈现元信息谬误。

  1. cert认证
    openGauss反对应用SSL平安连贯通道(将在第3大节具体介绍)。cert认证示意应用SSL客户端进行认证,不须要提供用户明码。在该认证模式下,客户端和服务端数据通过加密解决。在连贯通道建设后,服务端会发送主密钥信息给客户端以响应客户端的握手信息,这个主密钥将是服务端辨认客户端的重要依据。值得注意的是,该认证形式只反对hostssl类型的规定。

在第1大节中,咱们提到openGauss所反对的METHOD字段选项包含trust、reject、sha256、cert以及gss。除去上述介绍的三种认证形式外,reject选项示意对于以后认证规定无条件回绝,个别用于“过滤”某些特定的主机。gss示意应用基于gssapi的kerberos认证,该认证形式依赖kerberos server组件,个别用于反对openGauss集群外部通信认证和内部客户端连贯认证,内部客户端仅反对gsql或JDBC连贯时应用。

未完待续......