VastbaseG100

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

Menu

表级存储加密

功能描述

Vastbase支持通过密码卡对开启加密的表中数据进行加密存储。该功能涉及的内容如下:

  • 通过环境变量配置使用光电安辰密码卡进行加解密。

  • 修改了三未信安和江南天安的存储加密使用流程。

创建表时使用with语句携带参数enable_tde表示开启透明加密。

enable_tde

参数说明: 透明数据加密功能开关。创建加密表前需要将此参数置为on。当前参数值为off时,禁止创建新的加密表,对于已经创建的加密表只在读取数据时解密,写入数据时不再加密。

该参数属于POSTMASTER类型参数,请参考[重设参数表1]()中对应设置方法进行设置。

取值范围: 布尔型

  • on:开启透明数据加密功能。

  • off:关闭透明数据加密功能。

默认值:off

注意事项

  • 使用该功能必须配置对应的硬件密码卡,并配置相关的系统环境变量,具体配置请参考使用流程

  • 由于索引号会随着加密卡而变化,因此配置参数CRYPTDEV_KEY和dek_info只有在长度为128位时才是可用于表加密的密钥索引。

    加密索引的查询方法如下:

    1、使用root用户登录。

    2、切换到光电安辰加密卡工具目录(路径以实际为准),执行如下命令:

    ./kmt 
    

    3、输入3(密钥管理)回车、输入1(查看密钥状态)回车、输入5(密钥加密密钥)回车,显示如下所示内容,其中长度为128位的就是可用于表加密的密钥索引。

使用流程

光电安辰密码卡

1、配置光电安辰密码卡。

2、获取光电安辰的硬件动态库文件(libskf.so、libsdf.so),并将库文件拷贝到数据库实例所在目录下,使库文件和hwcipher.so处在同一目录(可自定义路径)。

3、在~/.bashrc文件中配置如下环境变量:

  • 设置环境变量CRYPTDEV_LIBPATH为动态库所在路径(不需要包含动态库名称)。

  • 设置环境变量CRYPTDEV_TYPE=gdaccard表示使用光电安辰密码卡进行数据加密。

  • 设置环境变量CRYPTDEV_KEY=master_key指明为加密表生成数据加密密钥的密钥索引。

4、设置GUC参数enable_tde=on,创建表时使用with设置enable_tde=on开启存储加密,并可以使用dek_info指定表加密密钥索引。例如:

  • 内部自动生成数据加密密钥。

    create table t1 (context text) with (enable_tde=on);
    
  • 指定加密密钥索引。

    create table t1 (context text) with (enable_tde=on,dek_info=1);
    

江南天安密码机

1、配置江南天安加密机。

2、获取江南天安的硬件动态库文件(libTassSDF4GHVSM.so)和配置文件(tassConfig.ini),将库文件和数据库实例的lib/postgresql目录下hwcipher.so放在同一目录(该目录用户可以自定义)。

3、在~/.bashrc文件中配置如下环境变量:

  • 设置环境变量CRYPTDEV_LIBPATH为硬件动态库libTassSDF4GHVSM.so和hwcipher.so所在路径(不要包含动态库名称)。

  • 设置环境变量CRYPTDEV_CFG_PATH为江南天安配置文件tassConfig.ini所在路径。

  • 设置环境变量CRYPTDEV_TYPE=jntakms表示使用江南天安密码机进行数据加解密。

  • 设置环境变量CRYPTDEV_KEY=master_key指明为加密表生成数据加密密钥的密钥索引。

4、设置GUC参数enable_tde=on,创建表时使用with设置enable_tde=on开启存储加密,并可以使用dek_info指定表加密密钥索引。例如:

  • 内部自动生成数据加密密钥。

    create table t1 (context text) with (enable_tde=on);
    
  • 指定加密密钥索引。

    create table t1 (context text) with (enable_tde=on,dek_info=1);
    

三未信安KMS

三未信安存储加密流程同江南天安,区别在于步骤3,环境变量CRYPTDEV_TYPE和CRYPTDEV_KEY。

  • CRYPTDEV_TYPE=swkms

  • CRYPTDEV_KEY为三未kms秘钥名称

示例

1、服务器已安装配置光电安辰密码卡。

2、在~/.bashrc文件中配置环境变量。

vi ~/.bashrc

添加如下内容(CRYPTDEV_LIBPATH已实际路径为准):

export CRYPTDEV_TYPE=gdaccard
export CRYPTDEV_LIBPATH=/home/wzr1
export CRYPTDEV_KEY=1

3、重新加载配置文件。

source ~/.bashrc

4、连接数据库安装用户,启动数据库。

vb_ctl start

5、连接数据库更改GUC参数。

alter system set enable_tde=on;

6、重启数据库服务并连接数据库。

vb_ctl restart
vsql -r

7、创建加密表并插入数据。

create table tb1(col_int2 int2 primary key,col_int int,col_integer integer(5,2),col_int4 int4,col_int8 int8)with(enable_tde=on,dek_info=2);
create table tb2(id int,col_char char(10) not null,col_nchar nchar(5),col_character_varying character varying(30),col_varchar2 varchar2(20))with(enable_tde=on);
insert into tb1 values(1,10,15.34,17,25);
insert into tb1 values(2,20,null,17,49);
insert into tb1 values(3,40,148.66,17,3);
insert into tb1 values(4,10,57.3,null,1196);
insert into tb1 values(5,10,9,null,2);
insert into tb2 values(1,'abc','abcde',17,' ');
insert into tb2 values(2,'abc ','112a','mmm',null);
insert into tb2 values(3,'cccc','mmno1',17,'');
insert into tb2 values(4,'abc','ccdef',null,null);
insert into tb2 values(5,'wow','aaaaa','okkk',2);
insert into tb2 values(6,'cool','4%1','k',265);

8、执行检查点让数据落盘。

checkpoint;

9、查看物理文件名称。

select pg_relation_filepath('tb1');
select pg_relation_filepath('tb2');

返回如下结果表示表加密成功:

10、切换到$PGDATA/base目录下,使用如下命令查询物理文件加密后的信息(文件名为步骤9查询到的物理文件名称)。

hexdump -C 文件名

如下所示,物理文件返回加密后的信息: