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

04.达梦DCA认证课程-DM用户和权限管理

原创 让世界为你转身 2024-10-10
326

1.用户管理

DM 默认的预定义用户:

  • SYS:系统内置用户,不允许登录。
  • SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)
  • SYSAUDITOR:系统审计管理员,具有审计相关权限。
  • SYSSSO:系统安全管理员,具有强制访问控制等权限;
  • SYSDBO:安全版本才有的用户,安全操作员

1.1 创建用户

数据库系统在运行的过程中,往往需要根据实际需求创建用户,然后为用户指定适当的权限。创建用户的操作一般只能由系统预设用户 SYSDBA 、SYSSSO 和 和 SYSAUDITOR 完成,如果普通用户需要创建用户,必须具有 CREATE USER 的数据库权限。

创建用户的命令是 CREATE USER, 创建用户所涉及的内容包括为用户指定用户名、认证模式、口令、口令策略、空间限制、只读属性以及资源限制。其中用户名是代表用户账号的标识符,长度为 1~128 个字符。用户名可以用双引号括起来,也可以不用,但如果用户名以数字开头,必须用双引号括起来。

语法格式:

create user XXX identified by XXX;
复制

使用示例:

--创建用户 create user hr identified by dameng123 password_policy 0 default tablespace tbs default index tablespace tbsidx;
复制

密码带有特殊字符的登录处理:

达梦中密码带有特殊字符需要双引号括起来,在 linux 系统下可以使用单引号‘转义

disql hrtest/'"Dameng@123"' --也可以使用右斜杠\转义 disql dmoa/\"Dameng@123\"
复制

1.2 配置口令策略

用户口令最长为 48 字节,创建用户语句中的 PASSWORD Y POLICY 子句用来指定该用户的口令策略,系统支持的口令策略有:

0 无策略 1 禁止与用户名相同 2 口令长度不小于 9 4 至少包含一个大写字母(A-Z) 8 至少包含一个数字(0-9) 16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
复制

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。

除了在创建用户语句中指定该用户的口令策略,隐含参数 PWD_POLICY(不在dm.ini中) 可以指定系统的默认口令策略,其参数值的设置规则与 PASSWORD POLICY 子句一致,缺省值为2。若在创建用户时没有使用 PASSWORD POLICY 子句指定用户的口令策略,则使用系统的默认口令策略。

查询系统默认口令策略:

--PWD_POLICY是隐含参数,只能通过函数或者sql语句修改 SQL> select name,type,value,sys_value,file_value from v$parameter where name='PWD_POLICY'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ---------- ---- ----- --------- ---------- 1 PWD_POLICY SYS 0 0 0
复制

查询用户当前的口令策略:

SQL> select username,account_status,password_versions from dba_users; 行号 USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS ---------- ---------- -------------- ----------------- 1 SYSAUDITOR OPEN 0 2 SYSSSO OPEN 0 3 SYSDBA OPEN 0 4 SYS OPEN 0 --修改用户口令策略 alter user sysdba password_policy 31; SQL> select username,account_status,password_versions from dba_users where username='SYSDBA'; 行号 USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS ---------- -------- -------------- ----------------- 1 SYSDBA OPEN 31
复制

修改系统默认口令策略:

  • 方法1:通过alter system
select name,type,value from v$parameter where name='PWD_POLICY'; alter system set 'pwd_policy'=6 both;
复制
  • 方法2:通过console工具

console为脱机工具,对参数值的修改是通过修改dm.ini文件中的参数值来进行,无论参数是静态还是动态,都需要重启DM数据库才能使新设置的参数值生效。

[dmdba@dmserver tool]$ pwd /home/dmdba/dmdbms/tool [dmdba@dmserver tool]$ ./console
复制
  • 方法3:使用系统过程

使用系统过程 SP_SET_PARA_VALUE 来配置 PWD_POLICY 参数值。

SQL> SP_SET_PARA_VALUE(1, 'PWD_POLICY',2); DMSQL 过程已成功完成 已用时间: 2.139(毫秒). 执行号:56607. SQL> select name,value from v$parameter where name='PWD_POLICY'; 行号 NAME VALUE ---------- ---------- ----- 1 PWD_POLICY 2 已用时间: 34.398(毫秒). 执行号:56608.
复制

1.3 修改用户信息

使用 ALTER R USER 语句可修改用户口令 。 除口令外 , 这个语句还可以修改用户的口令策略 、 空间限制 、只读属性以及资源限制等。当然,系统固定用户的系统角色和资源限制不能被修改。

语法格式:

alter user xxx 选项
复制

使用示例:

--用户锁定 alter user hr ACCOUNT UNLOCK; --用户解锁 alter user hr ACCOUNT LOCK; --修改用户的默认表空间 alter user hr DEFAULT TABLESPACE dmtbs; --修改用户密码 alter user hr IDENTIFIED by "Dameng@123";
复制

设置操作系统认证:

--隐含参数 enable_local_osauth SQL> select name,type,value,sys_value,file_value from v$parameter where name='ENABLE_LOCAL_OSAUTH'; 行号 NAME TYPE VALUE SYS_VALUE FILE_VALUE ---------- ------------------- --------- ----- --------- ---------- 1 ENABLE_LOCAL_OSAUTH READ ONLY 0 0 0 --启用操作系统认证 alter system set 'ENABLE_LOCAL_OSAUTH'=1 spfile; --创建dmdba用户组 groupadd dmdba usermode -G dmdba dmdba id dmdba --重启数据库 sql> shutdown immediate; --启动数据库 [dmdba@dmserver ~]$ DmServiceECARD start Starting DmServiceECARD: [ OK ] [dmdba@dmserver ~]$ DmServiceECARD status DmServiceECARD (pid 3527) is running. --操作系统认证登录 [dmdba@dmserver ~]$ disql / as sysdba 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 3.748(ms) disql V8 SQL> select user; 行号 USER() ---------- ------ 1 SYSDBA
复制

1.4 用户资源限制

用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制)

alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;
复制

DM 支持使用 profile 管理用户资源限制(新版本支持,2021 年 10 月以后的版本)

select * from DBA_PROFILES; create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, PASSWORD_LIFE_TIME 180; alter user hrtest PROFILE profile1; --查询用户使用的profile资源限制文件 select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c where a.PID = b.id and a.UID = c.ID;
复制

1.5 删除用户

一个用户被删除后, 这个用户本身的信息,以及它所拥有的数据库对象的信息都将从数据字典中被删除。

语法格式:

DROP USER <用户名> [RESTRICT | CASCADE];
复制

使用示例:

drop user if EXISTS hr; drop user if EXISTS hr CASCADE;
复制

如果在删除用户时未使用 CASCADE 选项(缺省使用 RESTRICT 选项),若该用户建立了 数据库对象, DM 将返回错误信息,而不删除此用户。

如果在删除用户时了 使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删除外,若其他用户创建的对象引用了该用户的对象,DM 还将自动删除相应的引用完整性约束及依赖关系。

2.权限管理

2.1 用户默认权限

SQL> conn test/dameng123 服务器[LOCALHOST:5236]:处于普通打开状态 登录使用时间 : 7.961(ms) select user; 行号 USER() ---------- ------ 1 TEST SQL> select * from session_privs; 行号 PRIVILEGE ---------- -------------- 1 CREATE SESSION 2 PUBLIC 3 SOI --具有查询sys开头系统表的权限
复制

2.3 授予权限

--赋予对象权限 grant select on dmhr.employee to hrtest; --赋予系统权限 grant create table to hrtest; grant create session to hrtest; grant resource to hrtest; --赋予查询对象权限,精确到列 grant select (employee_id, employee_name) on dmhr.employee to hrtest;
复制

2.4 回收权限

--回收对象权限 revoke select on dmhr.employee from hrtest; --回收系统权限 revoke create table from hrtest;
复制

2.4 相关视图

select * from dba_sys_privs t where t.GRANTEE= 'HRTEST'; select * from dba_role_privs t where t.GRANTEE= 'HRTEST'; select * from dba_tab_privs t where t.GRANTEE= 'HRTEST';
复制

3.角色管理

角色是权限的集合,角色使权限管理更加方便。

  • DBA:具有几乎所有权限(除数据库审计和强制访问控制之外),默认赋给 SYSDBA 用户。
  • PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
  • RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
  • SOI:具有查询 sys 开头系统表的权限;
  • VTI:具有查询 v$开头的动态视图权限(动态视图记录在 v$dynamic_tables,如果没有此权限,DM 管理工具上会报没有查询 v$视图权限)

3.1 创建角色

语法:

create role <角色名>;
复制

使用说明:

1.创建者必须具有 CREATE ROLE 数据库权限; 2.角色名的长度不能超过128个字符; 3.角色名不允许和系统已存在的用户名重名; 4.角色名不允许是DM保留字;
复制

查询角色:

select * from dba_roles;
复制

3.2 删除角色

语法:

drop role <角色名>;
复制

说明:

即使已将角色授予了其他用户,删除这个角色的操作也将成功。此时,那些之前被授予该角色的用户将不再具有这个角色所拥有的权限,除非用户通过其他途径也获得了这个角色所具有的权限。
复制

3.3 启用与禁用角色

某些时候, 用户不愿意删除一个角色, 但是却希望这个角色失效,此时可以使用 DM 系统过程 SP_SET_ROLE
来设置这个角色为不可用,将第二参数置为0表示禁用角色。

语法格式:

-- 禁用角色 SP_SET_ROLE('角色名', 0); -- 启用角色 SP_SET_ROLE('角色名', 1);
复制

使用说明:

1.只有拥有ADMIN_ANY_ROLE权限的用户才能启用和禁用角色,并且设置后立即生效; 2.凡是包含禁用角色A的角色M,M中禁用的角色A将无效,但是M仍有效; 3.系统预设的角色是不能设置的,如:DBA、PUBLIC、RESOURCE。
复制
最后修改时间:2024-10-29 08:37:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论