身份鉴别-强化管理和存储
功能描述
Vastbase数据库适配光电安辰密码卡,针对SM3方式的口令认证和存储算法,以及用户口令认证过程和存储涉及到的密码运算都使用光电安辰密码卡来实现。
用户口令存储
数据库中创建的用户口令通过配置文件指定算法加密后保存在系统表中,当使用SM3算法时替换相关接口为光电安辰密码卡接口实现。
用户口令认证
Vastbase G100口令认证使用标准的RFC5802认证机制,客户端和服务端均涉及到密码运算,因此客户端也需要配置光电安辰密码卡并且做软件接口替换。
当用户的认证方法配置为SM3时,客户端和服务端密码运算接口都使用密码卡来实现。
注意事项
使用该功能必须配置光电安辰密码卡,并配置相关的系统环境变量,具体配置请参考使用流程。
该功能仅支持SM3算法。
使用流程
1、服务器已配置光电安辰密码卡,并配置了相关的系统环境变量,具体步骤如下:
(1)配置光电安辰密码卡。
(2)获取光电安辰的硬件动态库文件(libskf.so、libsdf.so),并将库文件与数据库实例$GAUSSHOME/lib/postgresql
目录下的hwcipher.so放在同一目录下(可自定义路径)。
(3)在~/.bashrc
文件中配置如下环境变量:
设置环境变量
CRYPTDEV_LIBPATH
为动态库所在路径(不需要包含动态库名称)。设置环境变量
CRYPTDEV_TYPE=gdaccard
表示使用光电安辰密码卡。
2、口令存储使用:数据库服务端配置环境变量CRYPTDEV_TYPE=gdaccard
和CRYPTDEV_LIBPATH=动态库所在路径
,启动数据库并配置GUC参数password_encryption_type为3,此时创建的用户口令存储均使用密码卡完成。
password_encryption_type
参数说明: 该参数决定采用何种加密方式对用户密码进行加密存储。修改此参数的配置不会自动触发已有用户密码加密方式的修改,只会影响新创建用户或修改用户密码操作。
取值范围: 0、1、2、3
- 0表示采用md5方式对密码加密。
- 1表示采用sha256和md5两种方式分别对密码加密。
- 2表示采用sha256方式对密码加密。
- 3表示采用sm3方式对密码加密。
md5加密算法安全性低,存在安全风险,不建议用户使用。
默认值: 1
3、口令认证使用:
对于使用密码卡存储口令的用户,vsql连接登录时需要保证vsql所在客户端和数据库服务端都配置好了密码卡,否则将会认证失败。
对于未使用密码卡存储口令的用户,vsql登录时需要保证数据库服务端不要配置密码卡即可。
客户端可以识别用户是否使用密码卡存储口令,然后判断客户端是否必须要配置密码卡。
示例
1、服务器已安装配置光电安辰密码卡。
2、在~/.bashrc文件中配置如下环境变量。
vi ~/.bashrc
添加如下内容(CRYPTDEV_LIBPATH已实际路径为准):
export CRYPTDEV_TYPE=gdaccard
export CRYPTDEV_LIBPATH=/home/wzr1
3、重新加载配置文件。
source ~/.bashrc
4、启动数据库。
vb_ctl start
5、连接数据库,修改GUC参数password_encryption_type为3,表示采用SM3方式加密。
alter system set password_encryption_type=3;
6、创建用户并修改用户密码。
create user u1 password "Aa123456$%^";
alter user u1 password 'ABb888888';
7、查看用户密码。
SELECT rolpassword from pg_authid where rolname='u1';
返回结果为:
8、由于审计内容较多,为了更加直观的显示,通过\x
方式启用列式方式显示结果。
\x
9、使用函数pg_query_audit查看审计日志。
select * from pg_query_audit(now()-0.1,now()) where type='ddl_user';
返回结果如下所示,审计日志已加密: