VastbaseG100

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

Menu

身份鉴别-传输安全

功能描述

Vastbase数据库支持在客户端与服务端传输数据时调用加密卡进行数据加解密,包括以下功能:

1、客户端与服务端进行秘钥协商。

2、客户端与服务端根据协商的秘钥各自进行收发数据的加密与解密。

注意事项

  • 使用该功能必须配置光电安辰密码卡,并配置相关的系统环境变量,具体配置请参考使用流程

  • 服务端开启硬件加密功能时客户端需要使用-h进行网络连接才能进入硬件加密模式,即客户端vsql在连接数据库时要指定-h选项,成功进行硬件加密传输连接时会输出如下信息:

  • 该功能加解密算法只支持SM4 CTR模式算法。

  • 硬件加密传输需要进行秘钥协商可能出现客户端与服务端连接超时的情况,此时需要调整连接的超时时间。

使用流程

1、服务器已配置光电安辰密码卡,并配置了相关的系统环境变量,具体步骤如下:

(1)配置光电安辰密码卡。

(2)获取光电安辰的硬件动态库文件(libskf.so、libsdf.so),并将库文件与数据库实例$GAUSSHOME/lib/postgresql目录下的hwcipher.so放在同一目录下(可自定义路径)。

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

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

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

2、开启硬件加密传输功能的GUC参数。

hw_trans_enc_enable

参数说明:是否开启硬件传输加密功能。

取值范围:布尔型

  • on:表示开启硬件传输加密功能。
  • off:表示关闭硬件传输加密功能。

默认值:off

3、在服务端配置秘钥索引值和权限访问码。

  • 配置密码索引值

环境变量:CRYPTDEV_PRIVATE_KEY_INDEX

说明:设备内部存储加密密钥的索引值,用于参与密钥协商,在开启hw_trans_enc_enable参数后需要在数据库中配置该环境变量。

取值范围:[1,16]的整数。

  • 配置权限访问码

环境变量:CRYPTDEV_KEY_ACCESS_PWD

说明:验证私钥使用权限的可用字,在开启hw_trans_enc_enable参数后需要在数据库中配置该环境变量。

取值范围:不少于8字节的无符号字符,需要于创建密钥时设定的访问码一致。

4、启动数据库服务。

5、客户端使用-h参数连接数据库服务进行业务操作,输出结果及行为应与未加密时一致。

示例

vsql连接数据库验证数据传输是否加密

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

2、已经通过密码卡创建加密密钥对,并记录密钥索引为001和签名私钥的私钥访问控制码为Aa123456。

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

vi ~/.bashrc

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

export CRYPTDEV_TYPE=gdaccard
export CRYPTDEV_LIBPATH=/home/wzr1
export CRYPTDEV_PRIVATE_KEY_INDEX=1
export CRYPTDEV_KEY_ACCESS_PWD='Aa123456';

4、重新加载配置文件。

source ~/.bashrc

5、修改postgresql.conf文件,设置参数hw_trans_enc_enable=on,开启硬件传输加密功能。

hw_trans_enc_enable=on

6、启动数据库。

vb_ctl start

7、打开会话1,在root用户下使用tcpdump抓包查看数据是否被加密传输(其中端口号和网卡名称以实际为准)。

tcpdump -s 1000 -i lo(网卡名称) dst net 127.0.0.1 and port 22050(端口号) -XvvnnAx

8、打开会话2,连接数据库,执行创建、修改、删除用户/角色等操作。

vsql -d vastbase -r -h 127.0.0.1
create user test1 with password'Test@123';
create role test2 identified by 'Test@123';
alter user test1 password 'Test@1234';
alter role test2 identified by 'Test@1234' replace 'Test@123';
alter user test1 rename to test1a;
alter role test2 sysadmin;
drop user test1a;
drop role if exists test2;

9、会话1抓包的结果如下所示没有明文信息,表示数据是加密传输的。