數(shù)據(jù)安全是數(shù)據(jù)庫安全性的核心要素,優(yōu)炫數(shù)據(jù)庫從多維度、不同層面對用戶數(shù)據(jù)實現(xiàn)立體式保護。UXDB 擁有業(yè)內(nèi)最高安全機制,依據(jù)《GB/T 20273—2019 信息安全技術 數(shù)據(jù)庫管理系統(tǒng)安全技術要求》。采用全庫加密、列加密、表、行級訪問授權、通信信道加密、基于會話的訪問隔離、內(nèi)置數(shù)據(jù)庫審計等措施保證數(shù)據(jù)安全。支持SCRAM認證時綁定通道、GSSAPI認證時客戶端和服務端加密。明文、密文存儲相結合,可保證加密前后的查詢性能相近。提供用戶加解密權限,靈活控制用戶訪問敏感數(shù)據(jù)。滿足敏感數(shù)據(jù)加密存儲與應用。
UXDB的自帶加密包括全數(shù)據(jù)庫級別加密、列加密和通信信道加密。
全數(shù)據(jù)庫級別加密
全數(shù)據(jù)庫加密是采用AES方式對數(shù)據(jù)庫文件在存儲介質(zhì)(本地磁盤,DFS分布式存儲)上的數(shù)據(jù)據(jù)進行加密,用于對數(shù)據(jù)文件的保護。UXDB的做法是在數(shù)據(jù)離開內(nèi)存之前進行加密(即數(shù)據(jù)在寫入存儲介質(zhì)之前就是加密的)當開啟全數(shù)據(jù)庫級別加密的時候,數(shù)據(jù)庫中的數(shù)據(jù)共享性高,會同時被多個用戶和應用訪問使用,因此,全庫加密會對系統(tǒng)性能會產(chǎn)生一定的影響。
創(chuàng)建對象并插入數(shù)據(jù),通過查看數(shù)據(jù)文件中的數(shù)據(jù)是否是密文來驗證全庫加密。
1. 初始化集群時用參數(shù)M指定對存儲文件加密,并啟動:
./initdb -k fnv -M -W -D uxdb_enc
./ux_ctl -M -D uxdb_enc start
2. 登錄控制臺,創(chuàng)建表并插入數(shù)據(jù):
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. 進入集群目錄查看表文件:
數(shù)據(jù)保密性
表文件全是密文。
列數(shù)據(jù)加密
UXDB支持對列進行加密,該加密需要借助uxcrypto組件完成。具體來說,用戶需要指定密鑰進行對敏感列的加密。
在加密的時候,需要將密鑰和明文數(shù)據(jù)發(fā)送到UXDB端,UXDB進行加密并存儲密文;在進行解密的時候,數(shù)據(jù)在UXDB數(shù)據(jù)庫端進行解密,然后將解密的結果發(fā)送給客戶端。
批量加密指定列數(shù)據(jù),既可以指定不同的算法,可供選擇的算法有AES-128、AES-192、AES-256、DES-64、DES-128、DES-196、SM4-128、SM2、SM3、SM9,又可以指定每次加密的數(shù)據(jù)條數(shù)。此功能同樣是對表的特定域進行加密,只對某些敏感數(shù)據(jù)有用。
指定列批量加密功能既可以通過可視化界面UXKMS操作,又可以通過后臺命令行工具操作。UXKMS中可創(chuàng)建用戶映射、對表指定列進行加密信息配置、數(shù)據(jù)批量加密、數(shù)據(jù)脫密、數(shù)據(jù)同步等功能。
通信信道加密
UXDB可以設置服務端和客戶端之間的數(shù)據(jù)傳輸是加密的。UXDB利用openssl的庫實現(xiàn)這一要求,但前提條件是服務端和客戶端都要安裝openssl工具包。在服務端安裝好openssl之后,就可以利用openssl指令生成一對私鑰和證書,用以對數(shù)據(jù)進行加解密,然后再對配置文件稍作修改即可。
同樣的,UXDB數(shù)據(jù)庫內(nèi)部的數(shù)據(jù)引擎端與存儲端之間的通信也可以設置基于openssl的加密,但前提條件也是數(shù)據(jù)庫引擎端和分布式存儲的DIR/MRC/OSD都要安裝openssl工具包。
-FIN-






