浅谈DM达梦数据库安全管理之用户身份验证与权限管理

        数据库安全管理是指采取各种安全措施对数据库及其相关文件和数据进行保护。DM达梦数据库提供了包括用户标识与鉴别、自主与强制访问控制、通信与存储 加密、审计等丰富的安全功能。达梦数据库 的安全管理功能体系结构如图所示:
达梦技术社区 https://eco.dameng.com
从数据库的使用角度的不同,使用者关心的安全管理重点也不相同,比如审计和通信加密等。其中某些内容分别简述一下。
        审计提供对日常事件的事后审计监督,不属于数据库原理技术层面。DM数据库可以提供支持,在达梦数据库中开启审计开关,设计审计语句及对象的策略来实现审计功能。审计开关由系统过程控制,SP_SET_ENABLE_AUDIT (1)打开普通审计开关,其后的具体审计工作有专门的审计管理审计分析工具。
        强制访问控制功能仅在 DM 安全版中提供,不进行详述。简要的说,DM 利用策略和标记来实现 DM 数据库的强制访问控制。假设达梦数据库中已经有一个用户和一个此用户创建的表,那么可以使用SYSSSO 用户创建一个策略,并为该用户和表应用策略。而用户也可以设置会话默认标记和会话行标记,其他用户则看不到表中数据,只有使用SYSSSO用户为其他用户应用策略及设置标记才可以读取该用户表中的数据。       

        达梦数据库的加密管理,主要两个方面: 通信加密和存储加密。        
        通信加密方面,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、文件重用:达梦数据库在系统生成、扩展及删除文件时,对文件内容也进行了清零。

        以上管理方面基于算法或接口,以及底层技术支持,此处不进行详述。本文主要以DBA维护管理达梦数据库的常用操作角度,介绍达梦数据库的用户身份验证,和用户资源限制,以及权限管理 常用的操作。

首先,进行权限验证操作之前的准备工作

首先创建一个表空间 "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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值