暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

【干货攻略】带你了解:达梦数据库的存储加密

达梦大学 2021-02-25
4932

为了防止用户直接通过数据文件获取用户信息,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 2
              2 3 4
              复制

              例2:设置列加密

              查看数据:

              test查看数据:
                SQL> select * from test.test_encrypt7;
                行号 C1 C2
                ---------- ----------- -----------
                1 1 2
                2 3 4
                复制
                sysdba查看数据:
                  SQL> select * from test.test_encrypt7;
                  行号 C1 C2
                  ---------- ----------- -----------
                  1 1 NULL
                  2 3 NULL
                  复制
                  例3:
                  使用sysdba插入数据
                    insert into TEST.TEST_ENCRYPT7 VALUES (5,6);
                    commit;
                    SQL> select * from test01.test_encrypt7;
                    行号 C1 C2
                    ---------- ----------- -----------
                    1 1 NULL
                    2 3 NULL
                    3 5 6
                    复制
                    使用test查看:
                      SQL> select * from test_encrypt7;
                      行号 C1 C2
                      ---------- ----------- -----------
                      1 1 2
                      2 3 4
                      3 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
                              复制
                              以上是本次干货攻略的分享内容,希望能给大家带来帮助,谢谢。



                              往期回顾

                              干货攻略‍‍数据库还原之指定映射路径还原‍‍

                              干货攻略丨dmfldr大字段数据装载

                              干货攻略丨达梦SQL优化之LIKE前后百分号
                              干货攻略丨DM8锁等待和死锁
                              干货攻略丨DM8并行查询


                              文章转载自达梦大学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                              评论