數據安全是數據庫安全性的核心要素,優炫數據庫從多維度、不同層面對用戶數據實現立體式保護。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-