DM8 数据库的密码安全策略详解
select para_name,para_value from v$dm_ini where para_name like 'PWD_P%';
行号 PARA_NAME PARA_VALUE
---------- ---------- ----------
1 PWD_POLICY 0
# 查询当前的密码策略设置
密码策略参数简介:
0: 无策略;
1: 禁止与用户名相同;
2: 口令长度不小于 9;
4: 至少包含一个大写字母(A-Z);
8 : 至少包含一个数字(0 -9);
16: 至少包含一个标点符号( 英文输入法状态下, 除“ 和空格外的所有符号;
若为其他数字, 则表示配置值的和, 如 3 =1+2, 表示同时启
用第 1 项和第 2 项策略。
当 COMPATIBLE_MODE=1 时,PWD_POLICY 的实际值均为 0
SQL> select para_name,para_value from v$dm_ini where para_name='COMPATIBLE_MODE';
行号 PARA_NAME PARA_VALUE
---------- --------------- ----------
1 COMPATIBLE_MODE 1
实验一:
在COMPATIBLE_MODE = 1 和PWD_POLICY = 0 时创建用户并设置密码

# 此时秘密不受任何策略限制,因为COMPATIBLE_MODE = 1 的原因。
SQL> sp_set_para_value(2,'COMPATIBLE_MODE',0);
# 将兼容模式设置为0


# 我们在此时更改了一下用户的密码发现没有密码策略的限制。
# 于是选择重新启动数据库后发现还是没有受到密码策略的限制。

# 于是选择重现创建数据库用户发现,此时的密码策略是生效的。于是结论为在用户建立用户时以当时的密码策略为主。后期更改的策略对老用户无效。

# 换其他密码成功。
实验二:策略1
将密码策略设置为PWD_POLICY = 1
1: 禁止与用户名相同;
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',1);


# 修改密码生效
实验三:策略2
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',2);

# 查看策略方式

# 此时我们修改老用户是可以实现的并没与受到密码策略2 不低于6 位的限制。

# 新建用户长度不符合要求
实验四:策略4 (至少包含一个大写字母A-Z )
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',4);

# 已生效

# 报错不符合密码复杂度

# 修改之后执行成功
实验五:策略8 (至少包含一个0-9 的数字)
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',8);


# 提示不符合密码复杂度

# 添加一个数字执行成功
实验六:策略16 (至少包含一个标点符号)
SQL> SP_SET_PARA_VALUE(1,'PWD_POLICY',16);

# 报错密码不符合复杂度规则

# 添加* 号执行成功
实验7 :组合策略2+4 (不小于9 位并且必须包含一个大写字母)

# 修改参数文件,重启数据库使参数生效

# 重启后参数查看

# 密码长度不符合要求

# 当位数达到标准的时候又报密码不符合复杂度

# 添加大写字符A 之后成功完成
结论:
每个用户在新建的时候,属性里的默认口令策略采用系统的口令策略,我们之后修改的口令策略只对之后的用户生效。