用户及权限管理

一、用户管理

DM 数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类 型进行划分,为每个管理员分配相应的权限,管理员之间的权限相互制约又相互协助,从而 使整个系统具有较高的安全性和较强的灵活性。

可在创建 DM 数据库时通过建库参数 PRIV_FLAG 设置使用“三权分立”或“四权分立”安全机制,0 表示“三权分立”,1 表示“四权分立”。此参数仅在 DM 安全版本下提供, 即仅 DM 安全版本提供“四权分立”安全机制,缺省采用“三权分立”安全机制

1.1、用户创建介绍

创建用户的操作一般只能由系统预设用户 SYSDBASYSSSO SYSAUDITOR 完成, 如果普通用户需要创建用户,必须具有 CREATE USER 的数据库权限。

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

1.2、用户创建常用语法

1.1.1、语法格式

CREATE USER <用户名>IDENTIFIED<身份验证模式> [PASSWORD_POLICY <口令策略>][<锁定子

句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][<禁止 IP

子句>][<允许时间子句>][<禁止时间子句>][< TABLESPACE 子句>];

<身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式>

<数据库身份验证模式> ::= BY <口令>[<散列选项>]

<散列选项> ::= HASH WITH [<密码引擎名>.]<散列算法> [<加盐选项>]

<散列算法> ::= MD5 | SHA1 | SHA224 | SHA256 | SHA384 | SHA512

<加盐选项> ::= [NO] SALT

<外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN>

<口令策略> ::= 口令策略项的任意组合

<锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK

<存储加密密钥> ::= ENCRYPT BY <口令>

<空间限制子句> ::= DISKSPACE LIMIT <空间大小>| DISKSPACE UNLIMITED

<只读标志> ::= READ ONLY | NOT READ ONLY

<资源限制子句> ::= DROP PROFILE |

PROFILE <profile 名> |

[LIMIT <资源设置>]

<资源设置> ::= <资源设置项>{,<资源设置项>} |

<资源设置项>{ <资源设置项>}

<资源设置项> ::= SESSION_PER_USER <参数设置>|

CONNECT_IDLE_TIME <参数设置>|

CONNECT_TIME <参数设置>|

CPU_PER_CALL <参数设置>|

CPU_PER_SESSION <参数设置>|

MEM_SPACE <参数设置>|

READ_PER_CALL <参数设置>|

READ_PER_SESSION <参数设置>|

FAILED_LOGIN_ATTEMPS <参数设置>|

PASSWORD_LIFE_TIME <参数设置>|

PASSWORD_REUSE_TIME <参数设置>|

PASSWORD_REUSE_MAX <参数设置>|

PASSWORD_LOCK_TIME <参数设置>|

PASSWORD_GRACE_TIME <参数设置>

<参数设置> ::=<参数值>| UNLIMITED| DEFAULT

<允许 IP 子句> ::= ALLOW_IP <IP 项>{,<IP 项>}

<禁止 IP 子句> ::= NOT_ALLOW_IP <IP 项>{,<IP 项>}

<IP 项> ::= <具体 IP>|<网段>

<允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>}

<禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>}

<时间项> ::= <具体时间段> | <规则时间段>

<具体时间段> ::= <具体日期><具体时间> TO <具体日期><具体时间>

<规则时间段> ::= <规则时间标志><具体时间> TO <规则时间标志><具体时间>

<规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN

<TABLESPACE 子句> ::=DEFAULT TABLESPACE <表空间名>

1.1.2、口令策略

用户口令最长为 48 字节,创建用户语句中的 PASSWORD POLICY 子句用来指定该用

户的口令策略,系统支持的口令策略有:

l 0 无策略

l 1 禁止与用户名相同

l 2 口令长度不小于 9

l 4 至少包含一个大写字母(A-Z

l 8 至少包含一个数字(0-9

l 16 至少包含一个标点符号(英文输入法状态下,除和空格外的所有符号)

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

--查询当前数据库口令策略,默认是2

SQL> SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';

行号     ID          NAME       TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION             DEFAULT_VALUE ISDEFAULT 

---------- ----------- ---------- ---- ----- --------- ---------- ----------------------- ------------- -----------

1          463         PWD_POLICY SYS  2     2         2          Flag of password policy 2             1

--修改口令策略

例如,将 PWD_POLICY 置为 8,同时修改文件和内存参数,由于 PWD_POLICY 为动态INI 参数,这样设置后新的参数值可以立即生效。

--调用过程进行修改,1代表的是both2代表spfile

SQL> SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);

DMSQL 过程已成功完成

已用时间: 4.663(毫秒). 执行号:455.

--修改完查询结果

SQL>  SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';

行号     ID          NAME       TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION             DEFAULT_VALUE ISDEFAULT 

---------- ----------- ---------- ---- ----- --------- ---------- ----------------------- ------------- -----------

1          463         PWD_POLICY SYS  8     8         8          Flag of password policy 2             0

已用时间: 9.210(毫秒). 执行号:456.

1.1.3、资源限制

用户的资源限制管理有两种方式:

方式一,将用户关联到某个已存在的 PROFILE 对象上,之后用户的资源限制由关联的 PROFILE 统一管理配置,且无法再使用方式二中的 LIMIT <资源设置>设置资源设置项。

方式二,未关联 PROFILE 的用户使用 LIMIT <资源设置>设置资源设置项。 新建用户默认使用方式二管理资源设置,在关联到 PROFILE 时,之前已设置的资源限制项会立即失效。

资源设置项

说明

最大值

最小值

缺省值

SESSION_PER_USER

在一个实例中,一个用户可以同时拥有的会话数量

32768

1

安全版本中默认值为 4096;其他版本中默认值为系统所能提供的最大值

CONNECT_TIME

一个会话连接、访问和操作数据库服务器的时间上限(单位:1 分钟)

1440

1 天)

1

无限制

CONNECT_IDLE_TIME

会话最大空闲时间(单位:1 分 钟)

1440

1 天)

1

无限制

FAILED_LOGIN_ATTEMPS

将引起一个账户被锁定的连续注 册失败的次数

100

1

3

CPU_PER_SESSION

一个会话允许使用的 CPU 时间 上限(单位:秒)

31536000

365 天)

1

无限制

CPU_PER_CALL

用户的一个请求能够使用的 CPU 时间上限(单位:秒)

86400

1 天)

1

无限制

READ_PER_SESSION

会话能够读取的总数据页数上限

2147483646

1

无限制

READ_PER_CALL

每个请求能够读取的数据页数

2147483646

1

无限制

MEM_SPACE

会话占有的私有内存空间上限 (单位:MB

2147483647

1

无限制

PASSWORD_LIFE_TIME

一个口令在其终止前可以使用的天数

365

1

无限制

PASSWORD_REUSE_TIME

一个口令在可以重新使用前必须经过的天数

365

1

无限制

PASSWORD_REUSE_MAX

一个口令在可以重新使用前必须改变的次数

32768

1

无限制

PASSWORD_LOCK_TIME

如果超过FAILED_LOGIN_ATTEMPS 设置 值,一个账户将被锁定的分钟数

1440

1 天)

1

1

PASSWORD_GRACE_TIME

以天为单位的口令过期宽限时 间,过期口令超过该期限后,禁 止执行除修改口令以外的其他操作

30

1

10

1.1.4、创建用户

--创建用户失败的登录次数达到3次被锁定5分钟

SQL> create user test identified by test123456 limit failed_login_attemps 3, password_lock_time 5;

操作已执行

已用时间: 132.451(毫秒). 执行号:459.

SQL>

--创建用户在30天内修改过5次后,才能重新使用过去口令

SQL> create user test2 identified by test2123456 limit password_reuse_time 30, password_reuse_max 5;

操作已执行

已用时间: 112.136(毫秒). 执行号:460.

--创建允许的IP段和工作时间段可以访问的用户

SQL> create user test3 identified by test3123456 allow_ip "192.168.10.*" allow_datetime mon "8:30:00" to fri "17:30:00";

操作已执行

已用时间: 75.151(毫秒). 执行号:461.

--创建允许具体IP和具体时间可以访问的用户

SQL> create user test4 identified by test4123456 allow_ip "192.168.10.100" allow_datetime "2022-6-21" "8:30:00" to "2022-6-22" "17:30:00";

操作已执行

已用时间: 70.991(毫秒). 执行号:462.

SQL>

1.1.5、修改用户

ALTER USER <用户名> [IDENTIFIED <身份验证模式>][PASSWORD_POLICY <口令策略>][<锁定子 >][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<SCHEMA 子句>];

例子:

--修改用户的资源属性,登录失败5次锁定时间5分钟,口令终止前可以使用30天,最大宽限时间30天,超过只能修改口令,不允许其他操作

SQL> alter user test identified by test123456 limit failed_login_attemps 5, password_lock_time 5, password_life_time 30, password_grace_time 30;

操作已执行

已用时间: 38.130(毫秒). 执行号:0.

SQL>

--修改用户的默认表空间                 

SQL> select file_name, tablespace_name from dba_data_files;

行号     FILE_NAME                     TABLESPACE_NAME

---------- ----------------------------- ---------------

1          +DMDATA/data/dsc/system.dbf   SYSTEM

2          +DMDATA/data/dsc/test3_02.dbf TEST3

3          +DMDATA/data/dsc/test3_01.dbf TEST3

4          +DMDATA/data/dsc/DTS_TEST.dbf DTS_TEST

5          +DMDATA/data/dsc/test.dbf      TEST

6          +DMDATA/data/dsc/main.dbf     MAIN

7          +DMDATA/data/dsc/TEMP0.DBF    TEMP

8          +DMDATA/data/dsc/roll.dbf     ROLL

8 rows got

已用时间: 16.083(毫秒). 执行号:1.

SQL>

SQL> alter user test default tablespace test default index tablespace test;

操作已执行

已用时间: 11.345(毫秒). 执行号:2.

SQL>

SQL> select username, user_id, default_tablespace from dba_users where username in ('TEST','TEST2','TEST3','TEST4');

行号     USERNAME USER_ID     DEFAULT_TABLESPACE

---------- -------- ----------- ------------------

1          TEST3       50331753    MAIN

2          TEST       50331751    TEST

3          TEST4       50331754    MAIN

4          TEST2       50331752    MAIN

已用时间: 39.811(毫秒). 执行号:4.

SQL>

1.1.6、删除用户

DROP USER [IF EXISTS] <用户名> [RESTRICT | CASCADE];

指定 IF EXISTS 关键字后,删除不存在的用户时不会报错,否则会报错。

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

如果在删除用户时使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删

除外,若其他用户创建的对象引用了该用户的对象,DM 还将自动删除相应的引用完整性约

束及依赖关系。

--删除用户t1

SQL> drop user test cascade;

操作已执行

已用时间: 503.633(毫秒). 执行号:5.

二、权限管理

2.1权限管理

用户权限有两类:数据库(系统)权限和对象权限。数据库权限主要是指针对数据库对象的创建、删除、修改的权限,对数据库备份等权限。而对象权限主要是指对数据库对象中的数据的访问权限。数据库权限一般由SYSDBA、SYSAUDITOR和SYSSSO指定,也可以由具有特权的其他用户授予。对象权限一般由数据库对象的所有者授予用户,也可由SYSDBA用户指定,或者由具有该对象权限的其他用户授权。

2.1.1数据库权限

常用数据库权限如下:

CREATE SESSION: 创建会话的权限,新建用户默认具有此权限

CREATE VIEW: 在自己的模式中创建视图的权限

CREATE USER: 创建用户的权限

CREATE TRIGGER: 在自己的模式中创建触发器的权限

ALTER USER: 修改用户的权限

ALTER DATABASE: 修改数据库的权限

CREATE TABLE:创建表

CREATE ANY TABLE:在任意模式下创建表

ALTER ANY TABLE:修改任意表

DROP ANY TABLE:删除任意表

INSERT TABLE:插入表记录

INSERT ANY TABLE:向任意表插入记录

UPDATE TABLE:更新表记录

UPDATE ANY TABLE:更新任意表的记录

DELETE TABLE:删除表记录

DELETE ANY TABLE:删除任意表的记录

SELECT ANY TABLE:查询任意表的记录

REFERENCES TABLE:引用表

REFERENCES ANY TABLE:引用任意表

DUMP TABLE:导出表

DUMP ANY TABLE:导出任意表

GRANT TABLE:向其他用户进行表上权限的授权

GRANT ANY TABLE:向其他用户进行任意表上权限的授权

--存储程序对象,其相关的数据库权限则包括:

CREATE PROCEDURE:创建存储程序

CREATE ANY PROCEDURE:在任意模式下创建存储程序

DROP PROCEDURE:删除存储程序

DROP ANY PROCEDURE:删除任意存储程序

EXECUTE PROCEDURE:执行存储程序

EXECUTE ANY PROCEDURE:执行任意存储程序

GRANT PROCEDURE:向其他用户进行存储程序上权限的授权

GRANT ANY PROCEDURE:向其他用户进行任意存储程序上权限的授权

2.1.2预定义角色

DBA 类型对应 DBA、RESOURCE、PUBLIC、VTI、SOI 预定义角色

1)  新建的用户默认只有create session的权限,即只能连接数据库无法进行任何操作。

2)  SOI具有系统表的查询权限,即SYS模式下SYS开头的数据字典表。

3)  VTI具有系统动态视图的查询权限,即SYS模式下V$开头的视图。

4)  PUBLIC不可以创建数据库对象,即相较RESOURCE没有CREATE权限,有绝大多数数据库权限。

5)  RESOURCE可以创建数据库对象,但只能在对应模式下创建、修改对象等,有绝大多数数据库权限。

6)  DBA具有数据库系统中对象与数据操作的最高权限集合,比REOUSRCE多了CREATE ANY、ALTER ANY、DROP ANY等跨模式的权限操作,也可认为在最高层级进行数据库整体结构的修改。

AUDITOR 对应 DB_ADUTI_ADMIN、DB_AUDIT_OPER、DB_AUDIT_PUBLIC、DB_AUDIT_VTI、DB_AUDIT_SOI 预定义角色;

SSO 对应 DB_POLICY_ADMIN、DB_POLICY_OPER、DB_POLICY_PUBLIC、 DB_POLICY_VTI、DB_POLICY_SOI 预定义角色;

DBO 对应 DB_OBJECT_ADMIN、DB_OBJECT_OPER、DB_OBJECT_PUBLIC、 DB_OBJECT_VTI、DB_OBJECT_SOI 预定义角色。

2.1.3角色的创建

具有“CREATE ROLE”数据库权限的用户也可以创建新的角色,其语法如下:

CREATE ROLE <角色名>;

使用说明:

1. 创建者必须具有 CREATE ROLE 数据库权限;

2. 角色名的长度不能超过 128 个字符;

3. 角色名不允许和系统已存在的用户名重名;

4. 角色名不允许是 DM 保留字

创建角色role_test,并赋予查询test.test表的权限

SQL> create role role_test;

操作已执行

已用时间: 64.407(毫秒). 执行号:300.

SQL> grant select on test.test to role_test;

操作已执行

已用时间: 65.337(毫秒). 执行号:301.

SQL>

2.1.4角色的删除

具有“DROP ROLE”权限的用户可以删除角色,其语法如下:

DROP ROLE [IF EXISTS] <角色名>;

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

--删除角色role_test

SQL>  drop role role_test;

操作已执行

已用时间: 70.549(毫秒). 执行号:600.

2.1.5、角色的禁用与启用

使用 DM 系统过程 SP_SET_ROLE 来设置这个角色为不可用,将第二参数置为 0 表示禁用角色。

例如,下面的语句将角色 TEST_ROLE 禁用。

SP_SET_ROLE('TEST_ROLE', 0);

例如,下面的语句将启用角色 TEST_ROLE。

SP_SET_ROLE(' TEST_ROLE ', 1);

使用说明:

1. 只有拥有 ADMIN_ANY_ROLE 权限的用户才能启用和禁用角色,并且设置后立即生效;

2. 凡是包含禁用角色 A 的角色 M,M 中禁用的角色 A 将无效,但是M 仍有效;

3. 系统预设的角色是不能设置的,如:DBA、PUBLIC、RESOURCE。

2.1.6、查看指定用户的权限

查看指定用户拥有的所有权限(系统权限、对象权限、角色),分别是通过dba_sys_privs,dba_tab_privs,dba_role_privs三个视图来查看。

SQL> select * from dba_sys_privs where grantee='SYSDBA';

行号     GRANTEE PRIVILEGE      ADMIN_OPTION

---------- ------- -------------- ------------

1          SYSDBA  CREATE SESSION YES

已用时间: 3.222(毫秒). 执行号:602.

SQL> select * from dba_tab_privs where grantee='SYSDBA';

行号     GRANTEE OWNER TABLE_NAME  GRANTOR PRIVILEGE GRANTABLE HIERARCHY

---------- ------- ----- ----------- ------- --------- --------- ---------

1          SYSDBA  SYS   DBMS_XMLGEN SYS     EXECUTE   NO        NO

已用时间: 9.774(毫秒). 执行号:603.

SQL> select * from dba_role_privs where grantee='SYSDBA';

行号     GRANTEE GRANTED_ROLE ADMIN_OPTION DEFAULT_ROLE

---------- ------- ------------ ------------ ------------

1          SYSDBA  DBA          Y            NULL

2          SYSDBA  RESOURCE     Y            NULL

3          SYSDBA  PUBLIC       Y            NULL

4          SYSDBA  SYS_ADMIN    N            NULL

5          SYSDBA  SOI          Y            NULL

已用时间: 3.313(毫秒). 执行号:604.

SYSDBA拥有下述权限:

1create session的系统权限

2执行DMBS_XMLGEN系统包的对象权限

3DBA、RESOURCE、PUBLIC、SYS_ADMIN、SOI的角色权限

达梦云适配技术社区
https://eco.dameng.com/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值