達夢加密之外部加密函式的半透明列加密

林口的鵰翎發表於2022-05-04

達夢建立使用者時可以指定儲存加密金鑰,這個金鑰就是為了進行半 透明加密時使用的。如果在建立使用者時並沒有指定儲存加密金鑰,系統也會自動為使用者生成 一個預設的加密金鑰 , 也可以使用者自己指定加密演算法。 半透明是表內資料對當前操作的使用者是透明的,對其他的使用者是非透明的(包括管理員使用者)。 如果在建立表或修改表時指定對錶列進行半透明加密, 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;

 

小結:半透明加密適用於不同的使用者對同一張表做操作,還要做到使用者資料隔離的場景。列加密模式具備⽤戶隔離,即誰寫⼊,誰解密,其他⽤戶⽆法檢視。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017378/viewspace-2890670/,如需轉載,請註明出處,否則將追究法律責任。

相關文章