KMS加密
功能描述
Vastbase支持使用KMS加密保护数据安全。KMS模式支持SWS-KMS-SM4(三未信安)算法、TAS-KMS-SM4(江南天安)算法、光电安辰算法、KOAL_SM4_MOD2(格尔)算法。
支持使用gs_encrypt函数、gs_decrypt函数分别进行KMS加密和解密。其中不支持使用KOAL_SM4_MOD2(格尔)算法。
支持使用三未信安、江南天安、光电安辰加密算法通过vb_dump以纯文本格式(即指定-p)/vb_dumpall加密导出,vsql解密导入。
支持使用江南天安加密算法使用vb_dump以非纯文本加密导出,使用vb_restore解密导入。
前提条件
SWS-KMS-SM4(三未信安)算法:KMS相关配置已完成,添加业务用户、密钥、密钥服务。
TAS-KMS-SM4(江南天安)算法:依赖相关动态库文件和配置文件,需要部署好加密机,配置环境变量。
KOAL_SM4_MOD2(格尔)算法:依赖相关动态库文件和配置文件,需要部署好加密机,配置环境变量。
光电安辰:依赖相关动态库文件和配置文件,需要部署好加密机,配置环境变量。
示例
前置步骤
配置好硬件机密机环境。
1、获取KMS的库文件和配置文件,将库文件拷贝到vastbase数据库实例所在环境,和$GAUSSHOME/lib/postgresql/hwcipher.so放在同一目录(可修改路径,只需在同一目录)。
2、配置数据库安装用户下的环境变量。
vi .bashrc
CRYPTDEV_LIBPATH=KMS动态库所在路径(不包含动态库名)
KMS_CNF=KMS=格尔KMS配置文件所在路径(需要包含配置文件名,若非格尔KMS则无需配置本变量)
CRYPTDEV_CFG_PATH=江南天安/三未信安配置文件所在路径(若非江南天安/三未信安KMS则无需配置本变量)
CRYPTDEV_TYPE=KMS类型
CRYPTDEV_KEY=matser_key指明生成加密密钥的密钥索引(江南天安/光电安辰KMS需配置本变量)
CRYPTDEV_TYPE包括:jntakms(即江南天安)、koalkms(即格尔)、swkms(即三未信安)、gdaccard(光电安辰)。
3、使环境变量生效。
source ~/.bashrc
示例1: 使用gs_encrypt和gs_decrypt加解密。
SWS-KMS-SM4(三未信安)算法
1、连接数据库。
vsql -d vastbase -p 9944 -r
2、执行加密语句。
select gs_encrypt('abc','tde_1','kms');
结果显示如下:
gs_encrypt ------------------------------ BdM5xmJ68pWU9SI7DMPEdsViLQ== (1 row)
3、执行解密语句。
select gs_decrypt('BdM5xmJ68pWU9SI7DMPEdsViLQ==','tde_1','kms');
结果显示如下:
gs_decrypt -------------- abc (1 row)
TAS-KMS-SM4(江南天安)算法
1、连接数据库。
vsql -d vastbase -p 9944 -r
2、执行加密语句。
select gs_encrypt('abc', 1 , 'SM4');
3、执行解密语句。
select gs_decrypt('BdM5xmJ68pWU9SI7DMPEdsViLQ==', 1 , 'SM4');
gs_encrypt、gs_decrypt的第二个参数为密钥索引,取值范围:1~2048。
示例2: vb_dump导出数据使用KMS加密。
SWS-KMS-SM4(三未信安)算法
1、导出数据。
vb_dump vastbase -Fp -p 9944 --with-encryption=SM4 --with-key='tde_1' --with-userpin='username:password' -f /home/$username/backup1.sql
2、导入数据。
vsql -d back -p 9944 -f /home/$username/backup1.sql --with-decryption=SM4 --with-key='tde_1' --with-userpin='username:password'
TAS-KMS-SM4(江南天安)算法
1、导出数据。更多可参考vb_dump。
vb_dump vastbase -Fp -p 9944 --with-encryption=SM4 --with-key=1 --with-salt=1111111111111111 -f /home/$username/backup1.sql
2、导入数据。
vsql -d back -p 9944 -f /home/$username/backup1.sql --with-decryption=SM4 --with-key=1 --with-salt=1111111111111111
示例3:vsql使用KMS连接数据库。
SWS-KMS-SM4(三未信安)算法
vsql -d vastbase -p 9944 -r --with-decryption=SM4 --with-key='test_key2' --with-userpin='username:password'
TAS-KMS-SM4(江南天安)算法
vsql -d vastbase -p 9944 -r
1、开启透明数据加密功能。
echo "enable_tde=on" >> $PGDATA/postgresql.conf
2、重启数据库。
vb_ctl restart
3、创建加密表。
create table t_1156593(id int,name text) with (enable_tde=on);
insert into t_1156593 values (1,'abc');
checkpoint;
4、查看加密表结构。
\d+ t_1156593
返回结果为如下,可以查看到enable_tde=on,dek_info=KOAL-DEK,即开启了透明数据加密功能,且加密算法为格尔算法:
Table "public.t 1156539"
Column | Type | Modifiers | Storage | Stats | target |Description
--------+--------+-----------+---------+-------+--------+-----------
id |integer | | plain | | |
name |text | |extended | | |
Has 0IDs: no
Options: orientation=row,enable_tde=on,compression=no,fillfactor=80,dek_info=KOAL-DEK,cmk_id=KOAL-CIPHE-KEY,,encrypt algo=SM4_CTR
5、查询数据库的数据文件中是否包含明文信息。若返回结果为空,则表示存储数据已被加密。且正确结果应为空。
cd $PGDATA/base
grep -iR 'abc'