本文主要对达梦数据库管理用户和创建用户进行介绍和总结。
任何数据库设计和使用都需要考虑安全机制,达梦数据库采用“三权分立”或“四权分立”的安全机制,将系统中所有的权限按照类型进行划分,为每个管理员分配相应的权限,管理员之间的权限相互制约又相互协助,从而使整个系统具有较高的安全性和较强的灵活性。
DM安全版本下提供建库参数PRIV_FLAG设置使用“三权分立”或“四权分立”安全机制,0 表示“三权分立”,1 表示“四权分立”,即仅DM安全版本提供“四权分立”安全机制,默认采用“三权分立”安全机制。企业版和标准版都采用“三权分立”安全机制。
使用“三权分立”安全机制时,将系统管理员分为:
数据库管理员
数据库安全员
数据库审计员
在安装过程中,DM 数据库会预设数据库管理员账号 SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR,其缺省口令都与用户名一致。
使用“四权分立”的安全机制时,将系统管理员分为:
数据库管理员;
数据库对象操作员;
数据库安全员;
数据库审计员。
在“三权分立”的基础上,新增数据库对象操作员账户 SYSDBO,其缺省口令为 SYSDBO。
通过上面介绍SYSDBA用户是数据库管理员,做为数据库高权用户,其职责主要包括以下任务:
有些应用对于安全性有着很高的要求,传统的由 DBA 一人拥有所有权限并且承担所有职责的安全机制可能无法满足企业实际需要,此时数据库安全员和数据库审计员两类管理用户就显得异常重要,它们对于限制和监控数据库管理员的所有行为都起着至关重要的作用。
数据库安全员的主要职责是制定并应用安全策略,强化系统安全机制。数据库安全员 SYSSSO 是 DM 数据库初始化的时候就已经创建好的,可以以该用户登录到 DM 数据库来创建新的数据库安全员。
SYSSSO 或者新的数据库安全员都可以制定自己的安全策略,在安全策略中定义安全级别、范围和组,然后基于定义的安全级别、范围和组来创建安全标记,并将安全标记分别应用到主体(用户)和客体(各种数据库对象,如表、索引等),以便启用强制访问控制功能。
数据库安全员不能对用户数据进行增、删、改、查,也不能执行普通的 DDL 操作如创建表、视图等。他们只负责制定安全机制,将合适的安全标记应用到主体和客体,通过这种方式可以有效的对 DBA 的权限进行限制。
在 DM 数据库中,审计员的主要职责就是创建和删除数据库审计员,设置/取消对数据库对象和操作的审计设置,查看和分析审计记录等。
数据库对象操作员是“四权分立”新增加的一类用户,可以创建数据库对象,并对自己拥有的数据库对象(表、视图、存储过程、序列、包、外部链接等)具有所有的对象权限并可以授出与回收,但其无法管理与维护数据库对象。
创建用户的操作一般只能由系统预设用户 SYSDBA、SYSSSO 和 SYSAUDITOR 完成,如果普通用户需要创建用户,必须具有 CREATE USER 的数据库权限。
创建用户的命令是 CREATE USER,创建用户所涉及的内容包括为用户指定用户名、认证模式、口令、口令策略、只读属性以及资源限制等。其中用户名是代表用户账号的标识符,长度为 1~128 个字符。用户名可以用双引号括起来,也可以不用,但如果用户名以数字开头,必须用双引号括起来。
通过管理工具图以形方式创建用户,举例,登录SYSDBA用户创建EBANK用户:
点击鼠标右键,选择【新建用户】:
输入【用户名】和【密码】及【密码确认】:
选择【所属角色】选择项,新增下面两个红色框角色:
选择【系统权限】选择项,新增下面两个红色框系统权限:
选择【对象权限】选择项,该选项保持默认:
选择【资源设置】选择项,新增下面两个红色框资源设置项:
选择【连接限制】选择项,新增下面两个红色框资源设置项:
选择【DDL】选择项,列出上面创建用户图形步骤所选填和所选命令行。
最后点解【确定】执行,就创建了用户EBANK。
点击鼠标右键,选择【刷新】,就可以看到新用户【EBANK】:
通过在管理工具【编辑器】或者DISQL客户端使用命令行方式一样可以创建用户:
例如创建【APPUSER】:
CREATE USER "APPUSER" IDENTIFIED BY Dameng123 LIMIT FAILED_LOGIN_ATTEMPS 3, PASSWORD_LOCK_TIME 1, PASSWORD_GRACE_TIME 10 DEFAULT TABLESPACE "MAIN";
具体参考语法格式如下,语法格式和图形创建用户各种选项是一致的:
- CREATE USER [IF NOT EXISTS] <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][<锁定子句>][<存储加密密钥>][<只读标志>][<资源限制子句>][<密码过期子句>][<允许IP子句>][<禁止IP子句>][<允许时间子句>][<禁止时间子句>][
][][<表空间配额子句>]; - <身份验证模式> ::=
- <数据库身份验证模式>|
- <外部身份验证模式>
- <数据库身份验证模式> ::= BY <口令> [<散列选项>]
- <散列选项> ::= HASH WITH [<密码引擎名>.]<散列算法> [<加盐选项>]
- <加盐选项> ::= [NO] SALT
- <外部身份验证模式> ::=
- EXTERNALLY |
- EXTERNALLY AS <用户DN>
- <口令策略> ::= 口令策略项的任意组合
- <锁定子句> ::=
- ACCOUNT LOCK |
- ACCOUNT UNLOCK
- <存储加密密钥> ::= ENCRYPT BY <口令>
- <只读标志> ::= [NOT] READ ONLY
- <资源限制子句> ::=
- DROP 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_ATTEMPTS <参数设置> |
- PASSWORD_LIFE_TIME <参数设置> |
- PASSWORD_REUSE_TIME <参数设置> |
- PASSWORD_REUSE_MAX <参数设置> |
- PASSWORD_LOCK_TIME <参数设置> |
- PASSWORD_GRACE_TIME <参数设置>
- <参数设置> ::=
- <参数值>|
- UNLIMITED|
- DEFAULT
- <密码过期子句> ::= PASSWORD EXPIRE
- <允许IP子句> ::=
- ALLOW_IP NULL |
- ALLOW_IP
{,} - <禁止IP子句> ::=
- NOT_ALLOW_IP NULL |
- NOT_ALLOW_IP
{,} ::= - <具体IP>|
- <网段>
- <允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>}
- <禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>}
- <时间项> ::=
- <具体时间段> |
- <规则时间段>
- <具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间>
- <规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间>
- <规则时间标志> ::=
- MON |
- TUE |
- WED |
- THURS |
- FRI |
- SAT |
- SUN
::= DEFAULT TABLESPACE <表空间名> ::= DEFAULT INDEX TABLESPACE <表空间名> - <表空间配额子句> ::=
- QUOTA UNLIMITED |
- QUOTA 0 |
- QUOTA <配额大小> ON <表空间名>{ QUOTA <配额大小> ON <表空间名>}
- <配额大小> ::=
- UNLIMITED |
- <空间大小>[K|M|G|T]
在创建用户时,要重点关注口令策略:
用户口令最长为 48 字节,创建用户语句中的 PASSWORD POLICY 子句用来指定该用户的口令策略,系统支持的口令策略有:
0 无限制。但总长度不得超过 48 个字节
1 禁止与用户名相同
2 口令长度需大于等于 INI 参数 PWD_MIN_LEN 设置的值
4 至少包含一个大写字母(A-Z)
8 至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)
口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。
除了在创建用户语句中指定该用户的口令策略,DM 的 INI 参数 PWD_POLICY 可以指定系统的默认口令策略,其参数值的设置规则与 PASSWORD_POLICY < 口令策略 > 子句一致,缺省值为 2。若在创建用户时没有使用 PASSWORD_POLICY < 口令策略 > 子句指定用户的口令策略,则使用系统的默认口令策略。
系统管理员可通过查询 V$PARAMETER 动态视图查询 PWD_POLICY 的当前值。
SELECT * FROM V$PARAMETER WHERE NAME= 'PWD_POLICY';
通过上面对达梦数据库管理用户和图形及命令行两种方式创建用户介绍,大家可以了解达梦数据库安全机制及管理用户概念和学会如何创建用户。
关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com