达梦加密之外部加密函数的半透明列加密

达梦创建用户时可以指定存储加密密钥,这个密钥就是为了进行半 透明加密时使用的。如果在创建用户时并没有指定存储加密密钥,系统也会自动为用户生成 一个默认的加密密钥 , 也可以用户自己指定加密算法。 半透明是表内数据对当前操作的用户是透明的,对其他的用户是非透明的(包括管理员用户)。 如果在创建表或修改表时指定对表列进行半透明加密, DM 会使用用户的存储加密密钥 对数据进行加密。

一、 配置外部的加密算法到达梦

1、 如果没有文件夹,就创建一个加密文件夹

mkdir -p /DM_HOME/bin/external_crypto_libs

2 、拷贝外部算法到文件夹,进行赋权限和重启数据库服务。

cp lib*_crypto . so /DM_HOME/bin/external_crypto_libs

3 、通过 V$EXTERNAL_CIPHERS 查看外部算法是否加入数据成功

Select * from V$EXTERNAL_CIPHERS ;

二、 测试半透明加密

1、 查看数据库支持的加密算法

select id,name  from V$EXTERNAL_CIPHERS

union all

select CYT_ID,CYT_NAME from V$CIPHERS;

说明: V$EXTERNAL_CIPHERS ,可查看所有的第三方加密算法。

2、 创建使用用户testuser

create user "TESTUSER" identified by "123456789";

grant "PUBLIC","RESOURCE","SOI","VTI" to "TESTUSER";

3、 TESTUSER 创建需要半透明的表, C1 列做半透明加密

create table test (c1 varchar(16) encrypt with OPENSSL_SM4_ECB manual, c2 int);

4、 分别用 sysdba testuser 用户对这张表插入数据。

使⽤ SYSDBA ⽤户插⼊数据到 test

insert into testuser.test (c1,c2) values ('DM_SYSDBA',1);

commit;

使⽤ TESTUSER ⽤户插⼊数据到 test

insert into sysdba.test (c1,c2) values ('DM_TES T USER', 2 );

commit;

 

5、 sysdba 用户查询这张表

select * from TESTUSER .test;

 

 

6、 TESTUSER 用户查询这张表

select * from test;

 

小结:半透明加密适用于不同的用户对同一张表做操作,还要做到用户数据隔离的场景。列加密模式具备⽤户隔离,即谁写⼊,谁解密,其他⽤户⽆法查看。


请使用浏览器的分享功能分享到微信等