VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

KMS加密

功能描述

Vastbase支持使用KMS加密保护数据安全。KMS模式支持SWS-KMS-SM4(三未信安)算法、TAS-KMS-SM4(江南天安)算法、光电安辰算法、KOAL_SM4_MOD2(格尔)算法。

  • 支持使用gs_encrypt函数gs_decrypt函数分别进行KMS加密和解密。其中不支持使用KOAL_SM4_MOD2(格尔)算法。

  • 支持表级存储加密,可参见示例4透明数据加密

  • 支持使用三未信安、江南天安、光电安辰加密算法通过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 
    

示例4:表级存储加密。如下以格尔加密算法为例。

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'

相关链接

透明数据加密vb_dumpvb_restore