DM数据库密码策略和登录限制设置
在数据库的用户安全中,口令复杂度策略和资源限制是用户安全重要的一部分。在DM数据库中,口令策略分为系统口令策略和用户口令策略。只有安全版本才支持对每个用户设置口令策略(即用户口令策略),非安全版本,只支持系统口令策略。
DM数据库提供了用户IP地址和登录时段限制功能,本章介绍DM数据库系统口令策略设置和用户登录限制设置。
1 系统口令策略
1.1 查看口令策略
数据库在创建用户时,需要指定用户的密码,密码的复杂度要求由系统的口令策略PWD_POLICY参数决定。系统支持的口令策略有:
0无策略
1禁止与用户名相同
2口令长度不小于9
4至少包含一个大写字母(A-Z)
8至少包含一个数字(0-9)
16至少包含一个标点符号(英文输入法状态下,除”和空格外的所有符号)
口令策略可单独应用,也可组合应用。比如我们即要求禁止用户名与密码相同,又要求口令至少包含一个大写字母,则设置口令策略为1+4=5即可。
SQL> select * from v$dm_ini a where a.PARA_NAME = 'PWD_POLICY';
行号 PARA_NAME PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE
---------- ---------- ---------- --------- --------- ------- ---------- ----------
DESCRIPTION PARA_TYPE
----------------------- ---------
1 PWD_POLICY 2 0 31 N 2 2
Flag of password policy SYS
已用时间: 16.146(毫秒). 执行号:4.
可以看出PWD_POLICY参数为动态参数,我们可以通过使用DM控制台工具或调用系统过程SP_SET_PARA_VALUE重新设置PWD_POLICY的值。
1.2 控制台工具修改
在DM安装目录tool下使用DM安装用户执行./console,打开DM控制台工具,在安全相关参数中找到PWD_POLICY参数选项(也可以直接在查找项输入PWD_POLICY参数),即可修改PWD_POLICY参数的值。
注意:DM控制台工具为脱机工具,对参数值的修改通过修改dm.ini文件中参数值来实现,无论参数类型是静态还是动态,都需要重启DM服务器才能使新设置的参数值生效。
1.3 系统过程修改
使用系统过程SP_SET_PARA_VALUE来配置PWD_POLICY参数值。
例如,将PWD_POLICY置为3(1+2),由于PWD_POLICY为动态参数,我们可以同时修改文件和内存参数,此时设置后新参数值立即生效。
执行如下函数修改参数:
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',3);
DMSQL 过程已成功完成
已用时间: 10.188(毫秒). 执行号:7.
修改完成后插叙参数可以看到修改后的结果:
SQL> select PARA_NAME,PARA_VALUE, PARA_TYPE from v$dm_ini a where a.PARA_NAME = 'PWD_POLICY';
行号 PARA_NAME PARA_VALUE PARA_TYPE
---------- ---------- ---------- ---------
1 PWD_POLICY 3 SYS
已用时间: 2.872(毫秒). 执行号:9.
新建test12345用户,指定密码和用户名相同,系统将会提示密码口令与登录名相同,修改新的密码复杂程度符合要求即可成功。
SQL> create user test12345 identified by test12345;
create user test12345 identified by test12345;
第1 行附近出现错误[-2160]:口令与登录名相同.
已用时间: 1.339(毫秒). 执行号:0.
SQL> create user test12345 identified by test1234567;
操作已执行
已用时间: 17.127(毫秒). 执行号:10.
查询DBA_USERS视图,可以看到新建用户TESTUSER对应的口令策略为15,而SYSSSO、SYSDBA、SYS、SYSAUDITOR系统用户口令策略为0,其他普通用户的口令策略使用原来的口令策略2(创建用户时系统的口令策略)。
SQL> select username,password_versions,account_status from dba_users;
行号 USERNAME PASSWORD_VERSIONS ACCOUNT_STATUS
---------- ---------- ----------------- --------------
1 SYSDBA 0 OPEN
2 SYS 0 OPEN
3 TEST12345 3 OPEN
4 TEST 2 OPEN
5 SYSSSO 0 OPEN
6 SYSAUDITOR 0 OPEN
6 rows got
已用时间: 185.814(毫秒). 执行号:11.
注释:系统口令策略只对新创建的用户有效,而原来已创建的用户仍然使用原有的系统口令策略。
修改用户的口令策略,非安全版本是不支持的,只有安全版本才支持。非安全版本显示错误如下图。
SQL> alter user test PASSWORD_POLICY 15;
alter user test PASSWORD_POLICY 15;
第1 行附近出现错误[-5630]:非安全版本不能进行此操作.
已用时间: 0.197(毫秒). 执行号:0.
2 资源限制
DM数据库提供用户资源限制、IP地址限制和用户时间段限制功能。
2.1 登录限制
限制test12345用户的登录,当用户连续登录失败10次后将会锁定,限制其登录IP为192.168.3.*的IP网络,登录时间限制为周一01:00至周一8:00。
SQL> alter USER test12345 LIMIT FAILED_LOGIN_ATTEMPS 10 ALLOW_IP "192.168.3.*" ALLOW_DATETIME "MON" "1:00:00" TO "MON" "8:00:00";
操作已执行
已用时间: 5.544(毫秒). 执行号:13.
执行成功后,查询sysusers数字字典可以看到test12345已经限制了IP和时段。
SQL> select username,password_versions,account_status from dba_users;
行号 USERNAME PASSWORD_VERSIONS ACCOUNT_STATUS
---------- ---------- ----------------- --------------
1 SYSDBA 0 OPEN
2 SYS 0 OPEN
3 TEST12345 3 OPEN
4 TEST 2 OPEN
5 SYSSSO 0 OPEN
6 SYSAUDITOR 0 OPEN
6 rows got
已用时间: 12.709(毫秒). 执行号:14.
SQL> set linesize 200;
SQL> select id,failed_num,grace_time,pwd_policy,allow_addr,allow_dt from sysusers;
行号 ID FAILED_NUM GRACE_TIME PWD_POLICY ALLOW_ADDR ALLOW_DT
---------- ----------- ----------- ----------- ----------- ----------- -----------------------
1 50331649 0 0 0 NULL NULL
2 50331648 0 0 0 NULL NULL
3 50331650 0 0 0 NULL NULL
4 50331651 0 0 0 NULL NULL
5 50331749 3 10 2
6 50331752 10 10 3 192.168.3.* MON&1:00:00&MON&8:00:00
6 rows got
已用时间: 0.333(毫秒). 执行号:16.
修改登录限制
SQL> alter USER test12345 LIMIT FAILED_LOGIN_ATTEMPS 10 ALLOW_IP NULl ALLOW_DATETIME NULL;
操作已执行
已用时间: 10.595(毫秒). 执行号:19.
SQL> select id,failed_num,grace_time,pwd_policy,allow_addr,allow_dt from sysusers;
行号 ID FAILED_NUM GRACE_TIME PWD_POLICY ALLOW_ADDR ALLOW_DT
---------- ----------- ----------- ----------- ----------- ---------- --------
1 50331649 0 0 0 NULL NULL
2 50331648 0 0 0 NULL NULL
3 50331650 0 0 0 NULL NULL
4 50331651 0 0 0 NULL NULL
5 50331749 3 10 2
6 50331752 10 10 3
6 rows got
已用时间: 0.224(毫秒). 执行号:20.