GBase新闻

专注于数据库软件产品和服务,致力于成为用户最信赖的数据库产品供应商

GBase 8s是如何实现库中数据安全保障的?

发布时间:2021-08-06

随着计算机网络的广泛应用,网上信息的开放性与共享性日益增强,但随之而来的是信息安全问题愈发严重。数据库是这些数据信息存储的主要场所,因此确保数据库中存储以及存取信息的安全是确保网络安全的首要问题。为此,需要在通用的数据库管理系统基础上,围绕安全性功能进行体系化设计,从而增强数据库系统的安全性。

作为广泛应用于金融、电信等超大规模领域的GBase 8s,是如何实现数据安全的呢?本篇文章将从“数据安全、安全功能组成”两个方面为您揭开它的神秘面纱。


一、数据安全


· 数据保密性保护

存储数据的保密性是安全数据库的最重要的功能之一,GBase 安全数据库的数据加密采用库内加密的方式,在数据库管理系统的内核存储引擎级进行数据加解密处理,即数据在进行物理I/O时完成加/解密工作。

由于数据页只有在真正进行I/O时才进行加解密操作,从而对于合法用户来讲是完全透明的,因此也可以称为透明存储加密。

GBase 8s存储数据按页进行加密,页数据的完整性通过page trailer的校验码来保证。数据解密后,使用Page header的校验码对解密后的数据进行校验,防止数据在加解密过程中被篡改。当用户查询数据时,系统将符合要求的数据解密后返回给用户。


· 数据完整性保护

一个GBase 8s实例可以创建多个dbspace,一个dbspace可以包含多个物理chunk,一个chunk分成多个连续扩展区extent,一个表或者索引占用的空间被称为一个tablespace,一个extent包含多个物理页page。如下图所示:

GBase8s存储结构示意图


其中,dbspace、tablespace和extent属于逻辑存储单元;chunk和page属于物理存储单元。

数据页page是最基本的存储单元,是最小的I/O单元,如下图所示。GBase 8s进行一次I/O的最小单元是一个page,即使我们只对一个page里的某一行记录进行了修改,GBase 8s也需要对整个数据页进行读取到内存和写入磁盘的操作。磁盘的一个数据页读取到内存会分配一个同样大小的内存page来存储。GBase8s支持不同大小的数据页:2KB、4KB、8KB、16KB。

一个数据页的内部存储结构如下图所示,一个数据页总体上分成三部分:页头、页尾和数据部分。

GBase8s数据页内部结构


页头中的chksum用于校验该页所存储的数据,用于校验数据的完整性。当write page时写page 的校验码信息到chksum中,当read page时,首先重新计算该page的校验码信息,然后和chksum的校验码信息进行对比。如果不相等,说明此page的完整性信息被破坏了;如果相等,说明该页的数据完整性得到了保证,可正常访问。GBase 8s通过page 中保存校验码信息的方式来检查以页结构形式存储在数据库中的用户数据是否出现完整性错误。

在数据库服务的内部,用户数据存在如下三种形态:密文磁盘、密文缓存、明文结果。当数据库服务从磁盘文件中加载为缓存时,数据库服务通过该数据页chksum内存储的校验信息对该数据页进行完整性校验,当需要返回用户明文结果集时,通过chksum内存储的校验信息对密文数据解密后的明文数据进行完整性校验。防止用户数据在加解密过程中遭到篡改。当数据库服务收到用户写请求时,以上步骤反向执行。

GBase 8s安全数据库在事务处理上通过采用成熟的主流技术来实现高效的事务处理,这些技术主要包括:锁技术、多版本并行控制技术(multiversioning)。这些技术在保证事务ACID特征的前提下大大提高了事务的并发处理能力。

锁是一种软件机制,用于控制对数据库中数据的访问。在出现同时读取和更新数据的多用户环境中,锁能够确保每个事务的原子性、隔离性、一致性和持续性(ACID)不受到威胁,并且维护数据的完整性。

锁的粒度越粗,它就能锁住越多的数据库对象。例如,对于能够在一个磁盘页上包含4 行的表,在该页放置一个锁,将锁住其中包含的所有 4 个行;相反,如果使用行锁,那么将仅锁住一个行。因此,锁的粒度越粗,并发性就越低,从而影响到性能,尤其在应用程序试图访问相同的行集时,不过,粗粒度也意味着在某些情况下锁住相同数量的行需要的锁数量更少。例如,锁住整个表仅需要一个表锁。


1、 锁粒度

GBase 8s提供6种粒度的锁:

图三.png


2、 隔离级别

GBase 8s提供以下五个级别的并发性:

图四.png

GBase 8s安全数据库通过对死锁监测,会自动检测一个事务的死锁并回滚一个或多个事务来防止死锁,并设法提取小的事务来进行回滚,从而降低由于回滚造成的大量磁盘刷新以提高性能。


二、安全功能组成


· 用户认证

DBMS的用户认证分为用户标识与身份鉴别。每个进入DBMS的用户首先需要有一个用户标识,并在DBMS的整个生命周期实现用户标识的唯一性。用户身份鉴别采用了用户密码及数据证书双重认证的鉴别机制。


            · 用户授权

每个授权用户有一组数据库安全域特性,可决定用户下列安全域特性内容:可用特权和授权角色、可用存储空间(如表空间)限额、可用系统资源限制等安全属性。


· 访问控制

1、 自主访问控制

当一个主体访问某个客体时,自主访问控制根据访问控制表检查,以确认主体对客体的访问操作是否合法。

2、 标记与强制访问控制

DBMS中的主体与客体均需标以敏感标记(简称标记),标记分为安全等级标记与范畴标记,等级标记是用正整数表示,而范畴标记则用集合表示,由负责MAC管理的安全管理员设定主体和客体的密级和范畴。


 · 安全审计

GBase 8s提供了审计工具,它能定义有关的审计事件,记录用户的有关操作,并能记录身份鉴别、自主访问控制、标记、强制访问控制中的有关审计数据,能进行相关的审计分析并自动报警,并能对审计数据进行查阅。


· 数据安全

1、 数据加密

GBase 8s安全数据库采用国家密码管理局审批的密码卡加密,密码支持包括密钥生成、密钥销毁、密钥运算。

2、 数据完整性

GBase 8s使用密码卡硬件的杂凑算法实现数据库用户数据完整性保护功能。数据库的数据是以数据页的形式存储在磁盘文件之中,每个数据页都有chksum字段用来保护该数据页的完整性,chksum校验码是通过密码卡杂凑算法生成,数据库在访问数据页时对每个数据页的chksum校验码进行校验,以保护该数据页的完整性。


· 备份恢复

在发生故障后,GBase 8s可快速实现数据的备份。根据不同级别,GBase 8s可实现一下三个级别的备份:

1、 零级备份:全量备份

2、 一级备份:最近一次零级备份后的增量部分备份

3、 二级备份:最近一次一级备份后的增量部分备份


· 角色管理

GBase 8s安全数据管理系统分权的基本安全思想是最小特权的授权原则,对一个主体(用户)仅赋予完成预定任务所必需的最小权限。基于该安全策略,把数据库管理系统的用户由原来单一的超级数据库管理员变成现在的三类角色:安全管理员、审计管理员、数据管理员。它们分别承担着不同的职责,并且期望它们三者之一应不能涉及其他两者的权力范围,从而实现整个数据库系统的分权管理,即所谓的三权分立原则。

图片5.png


· 限制

资源管理主要包括对用户连接数量控制、服务器存储空间监控预警、数据空间占用监控等功能。


· 通讯安全

用户端与数据库服务端的信息访问,使用以SSL为基础的安全协议来建立安全保密数据传输路径。使用加密算法保护链路层安全,使用证书对服务端和客户端进行双向验证,保证客户端和服务端之间通讯的保密性和完整性。


· 可信路径

GBase 8s的可信路径由两部分组成:系统管理用户的安全态下的初始化过程和数据库正常服务时管理员同服务端的安全通道。

 

通过“数据安全、安全功能组成”两个方面的加强,GBase 8s构建了强大的安全机制,有效地保障了库中的数据信息安全,为我国金融、电信等行业的数据信息安全提供中国力量!