数据安全是数据库安全性的核心要素,优炫数据库从多维度、不同层面对用户数据实现立体式保护。UXDB 拥有业内最高安全机制,依据《GB/T 20273—2019 信息安全技术 数据库管理系统安全技术要求》。采用全库加密、列加密、表、行级访问授权、通信信道加密、基于会话的访问隔离、内置数据库审计等措施保证数据安全。支持SCRAM认证时绑定通道、GSSAPI认证时客户端和服务端加密。明文、密文存储相结合,可保证加密前后的查询性能相近。提供用户加解密权限,灵活控制用户访问敏感数据。满足敏感数据加密存储与应用。
UXDB的自带加密包括全数据库级别加密、列加密和通信信道加密。
全数据库级别加密
全数据库加密是采用AES方式对数据库文件在存储介质(本地磁盘,DFS分布式存储)上的数据据进行加密,用于对数据文件的保护。UXDB的做法是在数据离开内存之前进行加密(即数据在写入存储介质之前就是加密的)当开启全数据库级别加密的时候,数据库中的数据共享性高,会同时被多个用户和应用访问使用,因此,全库加密会对系统性能会产生一定的影响。
创建对象并插入数据,通过查看数据文件中的数据是否是密文来验证全库加密。
1. 初始化集群时用参数M指定对存储文件加密,并启动:
./initdb -k fnv -M -W -D uxdb_enc
./ux_ctl -M -D uxdb_enc start
2. 登录控制台,创建表并插入数据:
CREATE TABLE sjjm(no int, name varchar(32));
INSERT INTO sjjm VALUES(1, 'pizza');
INSERT INTO sjjm VALUES(2, 'sandwich');
CHECKPOINT;
3. 查询表文件的路径:
SELECT ux_relation_filepath('sjjm');
ELECT ux_relation_filepath('sjjm');
4. 进入集群目录查看表文件:
数据保密性
表文件全是密文。
列数据加密
UXDB支持对列进行加密,该加密需要借助uxcrypto组件完成。具体来说,用户需要指定密钥进行对敏感列的加密。
在加密的时候,需要将密钥和明文数据发送到UXDB端,UXDB进行加密并存储密文;在进行解密的时候,数据在UXDB数据库端进行解密,然后将解密的结果发送给客户端。
批量加密指定列数据,既可以指定不同的算法,可供选择的算法有AES-128、AES-192、AES-256、DES-64、DES-128、DES-196、SM4-128、SM2、SM3、SM9,又可以指定每次加密的数据条数。此功能同样是对表的特定域进行加密,只对某些敏感数据有用。
指定列批量加密功能既可以通过可视化界面UXKMS操作,又可以通过后台命令行工具操作。UXKMS中可创建用户映射、对表指定列进行加密信息配置、数据批量加密、数据脱密、数据同步等功能。
通信信道加密
UXDB可以设置服务端和客户端之间的数据传输是加密的。UXDB利用openssl的库实现这一要求,但前提条件是服务端和客户端都要安装openssl工具包。在服务端安装好openssl之后,就可以利用openssl指令生成一对私钥和证书,用以对数据进行加解密,然后再对配置文件稍作修改即可。
同样的,UXDB数据库内部的数据引擎端与存储端之间的通信也可以设置基于openssl的加密,但前提条件也是数据库引擎端和分布式存储的DIR/MRC/OSD都要安装openssl工具包。
-FIN-