![](https://i-blog.csdnimg.cn/blog_migrate/0b7aa0054fd29b8f5c88a89c8e714b54.png)
达梦数据库的加密管理,主要两个方面: 通信加密和存储加密。
通信加密方面,DM 提供以下三种通信方式: 不加密 、SSL 加密 、SSL 认证。是否使用通信加密以 DM 数据库服务器端的设置为准,客户端以服务器 采用的通信方式与其进行通信。可以通过设置服务器配置文件 dm.ini 中的 ENABLE_ENCRYPT 和 COMM_ENCRYPT_NAME 参数来指定通信加密。ENABLE_ENCRYPT 取值 0、1 和 2 分别代表不加密、SSL 加密、SSL 认证,默认值为1。COMM_ENCRYPT_NAME 参数用来指定消息通信的加密算法名,如果为空则不进行通信加密;如果给的加密算法名错误,则使用加密算法 DES_CFB。
在存储加密方面,达梦数据库为了防止用户直接通过数据文件获取用户信息,DM 提供了全面的数据加密的功能,包括使用:透明加密、半透明加密、非透明加密。在透明加密中,密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见。创建用户时可以指定存储加密密钥,这个密钥就是为了进行半透明加密时使用的。使用半透明加密时,用户仅能查看到自己插入的数据。DM 对非透明加密的支持是通过对用户提供加解密接口实现的。用户在使用非透明加密时,需要提供密钥并调用加解密接口。采用非透明加密可以保证个人私密数据不被包括DBA在内的其他人获取。存储加密在保证数据文件安全性的同时,也会带来一定的性能影响。
达梦数据库提供加密引擎功能,系统中内置了常用的 DES,AES,RC4 等类型的加密算法供用户使用,用户可以使用自己特殊的加密算法,或强度更高的加密算法。达梦数据库的加密引擎功能可以满足这样的需求,用户只需要按照 提供的加密引擎 C 语言编程接口,封装自己的加密算法,并编译成第三方加密动态库,即可以在达梦数据库的存储加密中使用自己的加密算法。
达梦数据库还对登录用户名和密码进行了增强加密。在非加密通讯的情况下,为了实现对登录用户名、密码的安全管理,达梦对登录消息中的用户名密码进行了增强加、解密处理。 具体实现分为四步:一是通过 dmkey 工具生成公钥文件和私钥文件。二是配置服务器参数,使用私钥对客户端发送过来的登录名和密码进行解密。三是配置客户端参数,使用公钥文件对登录用户名和密码进行加密。四,启动数据库服务器。
达梦数据库还提供了客体重用安全功能。为防止非法进程利用数据库客体的内存泄露来攻击数据库,达梦数据库主要从内存和文件两个方面进行了处理:1、内存重用:达梦数据库从系统分配内存及释放内存时均对内存内容进行清零,以保证不利用内存中前一进程所残留内容,且不泄漏数据库的内容给其他进程。2、文件重用:达梦数据库在系统生成、扩展及删除文件时,对文件内容也进行了清零。
首先,进行权限验证操作之前的准备工作
首先创建一个表空间 "TS_TEST" ,为了防止数据存放混乱,不是必须的。
CREATE TABLESPACE "TS_TEST" DATAFILE 'TS_TEST.DBF' SIZE 128 AUTOEXTEND ON NEXT 2048;
二、权限操作实践
(1)创建用户TESTUSER并赋予基本数据库访问权限
CREATE USER "TESTUSER" IDENTIFIED BY "Testuser12#" DEFAULT TABLESPACE "TS_TEST" DEFAULT INDEX TABLESPACE "TS_TEST";
GRANT "PUBLIC","RESOURCE","VTI","SOI" TO "TESTUSER";
创建用户可以指定该用户的口令策略。
查看数据库系统配置的用户密码策略:
可以设置PWD_POLICY 参数的值。
由于PWD_POLICY为动态INI参数,新的参数值设置后立即生效。
示例将 PWD_POLICY 置为 8,同时修改文件和内存参数。
SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);
(3)用户创建表
CREATE TABLE TESTUSER.TEST_TAB( ID INT NOT NULL, NAME VARCHAR(50) NOT NULL, SEX CHAR(1) NOT NULL, PHONE VARCHAR(20));
(4)用户的操作系统身份认证方式的参数知识
操作系统身份认证参数主要有3个参数,查看3个参数的默认值。
SQL> select * from v$parameter where name like '%AUTH%' ;
SQL> select * from v$parameter where name = 'ENABLE_ENCRYPT' ;
可以使用系统过程修改参数:
SP_SET_PARA_VALUE(2,'ENABLE_LOCAL_OSAUTH',1);
COMMIT;
重启数据库:
查看参数的修改值。
select * from v$parameter where name like '%AUTH%' ;
(5)修改用户信息的操作
1、修改用户口令
ALTER USER TESTUSER IDENTIFIED BY "TESTUSER1234#"
2、修改用户空间限制
下面的语句修改用户 TESTUSER 的空间限制为 20M。
ALTER USER TESTUSER DISKSPACE LIMIT 20;
(6)创建用户onetuser:
CREATE USER onetuser ;
查看已经创建的用户,列示onetuser。
删除用户onetuser
DROP USER onetuser ;
数据库权限的分配实践操作
准备工作
INSERT INTO TESTUSER.TEST_TAB VALUES(1001,'BBB','1','223456789');
INSERT INTO TESTUSER.TEST_TAB VALUES(1002,'CCC','1','223456789');
INSERT INTO TESTUSER.TEST_TAB VALUES(1003,'DDD','1','333456789');
INSERT INTO TESTUSER.TEST_TAB VALUES(1004,'EEE','0','444456789');
Create view TESTVIEW as select * from testuser.test_tab where sex='0';
(8)把建表和建视图的权限授给用户 TESTUSER ,并允许其转授。
GRANT CREATE TABLE, CREATE VIEW TO TESTUSER WITH ADMIN OPTION;
(9)数据库权限的回收
不让用户TESTUSER转授 CREATE VIEW权限。
REVOKE ADMIN OPTION FOR CREATE VIEW FROM TESTUSER ;
把用户 TESTUSER 的建视图权限收回。
REVOKE CREATE VIEW FROM TESTUSER ;
(10)使用TESTUSER用户 ,查询TESTU2.TU2_TAB表
1、创建另一个用户TESTU2
CREATE USER "TESTU2" IDENTIFIED BY "TESTU2000" DEFAULT TABLESPACE "TS_TEST" DEFAULT INDEX TABLESPACE "TS_TEST";
GRANT "PUBLIC","RESOURCE","VTI","SOI" TO "TESTU2";
2、创建表TESTU2.TU2_TAB
CREATE TABLE TESTU2.TU2_TAB( ID INT NOT NULL, NAME VARCHAR(20) NOT NULL);
INSERT INTO TESTU2.TU2_TAB VALUES(999,'mike');
INSERT INTO TESTU2.TU2_TAB VALUES(888,'rose');
3、赋权之前TESTUSER用户没有权限查询TESTU2.TU2_TAB表
4、给TESTUSER赋权查询 TESTU2.TU2_TAB表的权限。
GRANT SELECT ON TESTU2.TU2_TAB TO TESTUSER;
5、使用TESTUSER用户再次查询 TESTU2.TU2_TAB表,成功查询
(11)收回TESTUSER用户查询TESTU2.TU2_TAB表的权限,查询失败
REVOKE SELECT ON TESTU2.TU2_TAB FROM TESTUSER;
(12)角色管理
角色是一组权限的组合,使用角色的目的是使权限管理更加方便。
使用角色的关键之处是给角色一定要赋予一组特定权限,才能真正发挥角色的高效作用。
最后在需要时,将这个角色授予用户,这个用户就具有了角色中的所有权限。
创建角色 TESTROLE,赋予其 TESTUSER.TEST_TAB 表的 SELECT 权限。
CREATE ROLE TESTROLE;
GRANT SELECT ON TESTUSER.TEST_TAB TO TESTROLE;
(13)将角色给用户赋权
GRANT TESTROLE TO TESTU2;
使用TESTU2用户查询TESTUSER用户的表,查询成功,证明角色权限成功赋权。
SELECT * FROM TESTUSER.TEST_TAB;
(14)将角色 TESTROLE 禁用
SP_SET_ROLE('TESTROLE', 0);
验证已经没有权限
(15)启用角色 TESTROLE
SP_SET_ROLE('TESTROLE', 1);
验证用户的角色权限
(16)删除角色
DROP ROLE TESTROLE;
验证权限,可以看到禁用或者删除角色,用户之前获得的角色的一组权限都会失去。
用户的资源限制实践
DM 支持在创建和修改用户时指定对用户进行资源限制,资源限制用于限制用户对 DM 数据库系统资源的使用。
(17)创建对失败登录次数进行控制的用户,如果用户失败的登录次数达到 3 次,这个用户账号将被锁定。
CREATE USER USER01 IDENTIFIED BY USER01PASSWORD LIMIT FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 5;
(18)创建对修改口令进行限制的用户,要求用户在 30 天内必须把口令修改过 5 次后,
才能使用过去用过的口令。
CREATE USER USER02 IDENTIFIED BY USER02PASSWORD LIMIT PASSWORD_REUSE_TIME 30, PASSWORD_REUSE_MAX 5;
达梦技术社区 https://eco.dameng.com