甲骨文认证体系
Vmware认证体系
AWS亚马逊
阿里云认证体系
红帽认证体系
ZStack云计算认证体系
思科认证体系
华为认证体系
CDA数据分析师认证
达梦认证体系
麒麟
定制化课程
腾科教育带你了解:达梦数据库的存储加密
发布日期:2021-04-07 10:46:13阅读次数:

图片

为了防止用户直接通过数据文件获取用户信息,DM提供了全面的数据加密的功能,包括:

①透明加密

②半透明加密

③非透明加密

存储加密在保证数据文件安全性的同时,也会带来一定的性能影响,不同的加密算法对性能的影响各有不同,用户需要根据自己的需求来决定是否进行加密以及加密算法的选择。

由于透明加密中,密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见,本次不做测试。

本次测试中使用的用户有两个,一是SYSDBA,一是TEST,默认建表使用TEST用户。


一、半透明加密

01

用户秘钥


用户密钥:创建用户时可以指定存储加密的密钥,这个密钥就是为了进行半透明加密时使用的。创建用户时指定密钥的方式如下:

①图形化界面:新建用户时,可以指定存储加密密钥;

图片

②命令行:




 

SQL> create user "TEST" identified by "123456789" encrypt by "enc_003";操作已执行已用时间: 765.088(毫秒). 执行号:400.


02

列的半透明加密设置


如果在创建用户时并没有指定存储加密密钥,系统也会自动为用户生成一个默认的加密密钥。如果在创建表或修改表时指定对表列进行半透明加密,DM 会使用用户的存储加密密钥对数据进行加密。

设置列半透明加密方式如下:

①图形化界面:使用DM管理工具,右键表名,选择“修改

图片

②命令行:


CREATE TABLE TEST_ENCRYPT7(C1 INT, C2 INT ENCRYPT WITH DES_ECB MANUAL);

测试:

例1:不加密创建表


CREATE TABLE TEST_ENCRYPT7(C1 INT, C2 INT);

①向表中插入数据




insert into TEST.TEST_ENCRYPT7 VALUES (1,2);insert into TEST.TEST_ENCRYPT7 VALUES (3,4);commit;

②使用test用户和sysdba用户分别查看数据:


select * from TEST.TEST_ENCRYPT7;

③查询结果均为






SQL> select * from test.test_encrypt7;行号       C1          C2---------- ----------- -----------1          1           22          3           4

例2:设置列加密

图片

查看数据:

①test查看数据:






SQL> select * from test.test_encrypt7;行号       C1          C2---------- ----------- -----------1          1           22          3           4

②sysdba查看数据:






SQL> select * from test.test_encrypt7;行号       C1          C2---------- ----------- -----------1          1           NULL2          3           NULL

例3:

①使用sysdba插入数据









insert into TEST.TEST_ENCRYPT7 VALUES (5,6);commit;SQL> select * from test01.test_encrypt7;行号       C1          C2---------- ----------- -----------1          1           NULL2          3           NULL3          5           6

②使用test查看:







SQL> select * from test_encrypt7;行号       C1          C2---------- ----------- -----------1          1           22          3           43          5           NULL

可以看出,非透明加密模式只能看到自己插入的数据。


二、非透明加密


非透明加密通过用户调用存储加密函数来进行,可以参考达梦官方手册《DM8安全管理》。

测试中使用对varchar类型加密的函数CFALGORITHMSENCRYPT,包含三个参数,使用方法例如:CFALGORITHMSENCRYPT(‘test’, 514, ‘测试口令’),其中,“test”为需要加密的varchar字段,“514”为加密算法,“测试口令”为KEY 采用的密钥。

测试:

①创建表


CREATE TABLE test.enc_004(c1 VARCHAR(200));

②插入数据



INSERT INTO test.enc_004 VALUES(CFALGORITHMSENCRYPT('test', 514, '测试口令'));commit;

③在sysdba和test用户下查询表中的数据:

查询结果均为:





SQL> select * from enc_004;行号       C1---------- ----------------------------------1          B969389614197FC0B39C56B550C0E496FE


④在sysdba和test用户下调用解密函数查询:

两个用户下查询结果均为





SQL> SELECT CFALGORITHMSDECRYPT(c1, 514, '测试口令') FROM enc_004;行号       CFALGORITHMSDECRYPT(C1,514,'测试口令')---------- --------------------------------------1          test
腾科教育是华为授权的培训合作伙伴,专业提供华为ICT技术架构认证、平台与服务认证、行业服务认证等华为职业认证服务,连续多年荣获华为年度最佳合作伙伴贡献奖、华为优秀战略合作伙伴、上海HCIE精英俱乐部伙伴,连续多年举办腾科技术嘉年华华为专场,并协办华为ICT大赛、华为生态伙伴精英赛伙伴赛分赛场、华为人才双选会上海场等活动和赛事,提供面向华为生态合作伙伴和ICT学员的人才供需双选平台及ICT学员就业通道,培养ICT行业所需创新型、融合型人才。

腾科教育是华为优秀战略合作伙伴、红帽交付培训合作伙伴、思科优秀合作伙伴、红帽年度优秀合作伙伴、Oracle亚太区优秀合作伙伴,每年协办华为、红帽等厂商技术大赛,定期举办各种技术峰会等技术交流活动。同时也是培生集团(Pearson VUE)与Prometric(普尔文)两大全球国际考试中心授权的双国际电子考试中心,提供一站式ICT认证考试服务,十年来专注于为考生提供包括华为,思科,红帽,Oracle,VMware,ITIL,微软,Citrix等数千种ICT认证考试服务,每年通过腾科教育培训并参加HCIE(华为认证专家)、RHCA(红帽认证架构师)、OCM(甲骨文认证大师)等高级职业认证考试的学员,其通过率高达94.32%。