浅谈DM达梦数据库安全管理之用户身份验证与权限管理
达梦数据库的加密管理,主要两个方面: 通信加密和存储加密。
通信加密方面,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
浅谈DM达梦数据库安全管理之用户身份验证与权限管理相关推荐
- 浅谈DM达梦数据库体系结构概念
浅谈DM达梦数据库体系结构概念 DM逻辑结构 DM和Oracle一样也分数据库和实例,两者的概念也基本一致. 但是不同点在于:达梦是单进程.多线程,而oracle是多进程的. DM这种对称服务器构架在 ...
- 关于DM达梦数据库,获取用户表信息、数据表结构、数据表创建语句、主键等信息的sql
1.获取数据表中的字段名.类型.长度.描述 select name,reftype,length,descrip from ( select distinct A.COLUMN_ID as id, A ...
- 达梦数据库安全管理与体系
达梦数据库安全管理与体系 达梦数据库产品的安全等级 安全体系结构 达梦数据库安全产品版本 ⚫ 标准版:只包含基本安全功能(可免费下载试用) ⚫ 企业版:功能最全,运行最稳定 ⚫ 安全版:增加强制访问控 ...
- oracle数据库计数器,DM 达梦数据库 表的 行计数器(COUNTER)属性
1 表行计数器 说明 默认情况下,DM 达梦数据库count() 是秒回结果的,不受表中实际行数的影响,执行select count() 都能立即返回正确的结果.因为达梦数据库的count(*)操作不 ...
- DM达梦数据库的使用以及数据迁移工具的使用
1.找不到DM数据库的相关软件 我们打开虚拟机的终端,在根目录下输入命令: ./manager ------->是打开达梦数据库的管理工具 ./dts --------------->是打 ...
- DM达梦数据库删除表时提示锁超时的解决方法
DM 达梦数据库删除表时提示锁超时的问题 1. 问题描述 达梦数据库删除表时,删除失败,提示的报错信息是 锁超时 2. 解决方法 查询所删除表对应的SESS_ID,sql语句如下: select a. ...
- 达梦数据库 查询当前用户连接数命令
达梦数据库 查询当前用户连接数命令 查询当前用户连接数 select count(*) from v$sessions where state='ACTIVE'; 查询最大连接数 select SF_ ...
- dm服务器未能启动,DM 达梦数据库 创建服务 无法创建目录_REPLACE_SELF_DM_HOME 错误解决方法...
在升级DM 8.1.1.19升级到8.1.1.48 的操作中,创建的服务无法正常启动. 但手工执行dmserver 命令是可以启动达梦实例. https://www.cndba.cn/dave/art ...
- 国产数据库--DM(达梦数据库)
公司简介 武汉华工达梦数据库有限公司(达梦公司)是国家规划布局内重点软件企业.公司成立于2000年11月,得到了国家计委.科技部.信息产业部.总装备部.公安部等中央部委.省市政府的支持扶植. 达梦数据 ...
最新文章
- impala 本年格式化时间_hive,hbase,impala之间的对比
- app 404 html,静态页面错误404(Flask框架)
- python怎么读文件里的某一行-Python如何获取文件指定行的内容
- ubuntu 配置dns访问外网
- java log4j 多个文件_为什么log4j会记录到两个单独的文件? [重复]
- JAVA_WEB--jsp语法
- 【渝粤题库】陕西师范大学300008 历史教学论
- 小米刷第三方recovery_小米平板4/Plus LTE版本开启电话功能
- 《零基础》MySQL 管理(三)
- 兼容FF/IE的添加收藏夹的代码
- java定时器小程序_【微信小程序】使用setTimeout试试定时器
- VS2013 community卸载后不能重装的问题
- 关于BMC ipmi oem cmd和redfish
- 基于html5的城市公交查询系统,城市公交在线查询系统的设计与实现
- [uboot 移植]uboot 移植过程
- TestReport目录
- idea中自动生成Java类图和时序图
- matlab画多個平面,matlab的平面二维图的绘制.ppt
- b和kb的换算_b和bit换算(KB转换G)
- 2009年的MACBOOK苹果电脑重装MAC OS 10.8.5系统