1)创建一个概要文件,其中参数为密码输入三次账户锁定2分钟后自动解除
SYS@ORA11GR2>create profile pro_fpwd limit
failed_login_attempts 3
password_lock_time 2/1440;
Profile created.
SYS@ORA11GR2>
2)创建测试用户xxf,密码xxf
SYS@ORA11GR2>create user xxf identified by xxf profile pro_fpwd;
User created.
SYS@ORA11GR2>
3)给xxf用户dba角色
SYS@ORA11GR2>grant dba to xxf;
Grant succeeded.
SYS@ORA11GR2>
4)查询一下xxf用户使用的概要文件的情况
SYS@ORA11GR2>select d.resource_name, d.resource_type, d.limit, d.profile
from dba_profiles d, dba_users t
where d.profile = t.profile
and t.username = upper('&username');
Enter value for username: xxf
old 4: and t.username = upper('&username')
new 4: and t.username = upper('xxf')
RESOURCE_NAME RESOURCE_TYPE LIMIT PROFILE
------------------------------ --------------- ---------- ----------
FAILED_LOGIN_ATTEMPTS PASSWORD 3 PRO_FPWD
PASSWORD_LOCK_TIME PASSWORD .0013 PRO_FPWD
PASSWORD_GRACE_TIME PASSWORD DEFAULT PRO_FPWD
PASSWORD_VERIFY_FUNCTION PASSWORD DEFAULT PRO_FPWD
PASSWORD_REUSE_MAX PASSWORD DEFAULT PRO_FPWD
PASSWORD_REUSE_TIME PASSWORD DEFAULT PRO_FPWD
PASSWORD_LIFE_TIME PASSWORD DEFAULT PRO_FPWD
PRIVATE_SGA KERNEL DEFAULT PRO_FPWD
CONNECT_TIME KERNEL DEFAULT PRO_FPWD
IDLE_TIME KERNEL DEFAULT PRO_FPWD
LOGICAL_READS_PER_CALL KERNEL DEFAULT PRO_FPWD
LOGICAL_READS_PER_SESSION KERNEL DEFAULT PRO_FPWD
CPU_PER_CALL KERNEL DEFAULT PRO_FPWD
CPU_PER_SESSION KERNEL DEFAULT PRO_FPWD
SESSIONS_PER_USER KERNEL DEFAULT PRO_FPWD
COMPOSITE_LIMIT KERNEL DEFAULT PRO_FPWD
16 rows selected.
SYS@ORA11GR2>
5) 测试输入三次错误密码锁账户
SYS@ORA11GR2>set time on
21:59:38 SYS@ORA11GR2>conn xxf/xxf123
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
21:59:43 @>conn xxf/xxf123
ERROR:
ORA-01017: invalid username/password; logon denied
21:59:47 @>conn xxf/xxf123
ERROR:
ORA-01017: invalid username/password; logon denied
21:59:51 @>conn xxf/xxf
ERROR:
ORA-28000: the account is locked
21:59:56 @>
22:00:38 @>
22:01:01 @>
22:01:12 @>conn xxf/xxf
ERROR:
ORA-28000: the account is locked
22:01:15 @>
22:01:26 @>
6)两分钟后自动解锁,连接成功
22:01:56 @>conn xxf/xxf
Connected.
22:02:02 XXF@ORA11GR2>
二、密码复杂度的校验
1)修改概要文件参数password_verify_function,使用verify_function函数来做密码复杂度的控制
SYS@ORA11GR2>alter profile PRO_FPWD limit password_verify_function verify_function;
alter profile PRO_FPWD limit password_verify_function verify_function
*
ERROR at line 1:
ORA-07443: function VERIFY_FUNCTION not found
SYS@ORA11GR2>
2)报错,说没有发现VERIFY_FUNCTION,看来11g默认情况下,这个函数没有创建(我印象中10g默认情况下是有这个函数的),我们手工创建一下
SYS@ORA11GR2>@?/rdbms/admin/utlpwdmg.sql
Function created.
Profile altered.
Function created.
SYS@ORA11GR2>
3)再次修改概要文件,增加密码复杂度的验证
SYS@ORA11GR2>alter profile PRO_FPWD limit password_verify_function verify_function;
Profile altered.
SYS@ORA11GR2>
4)查看xxf用户所用的概要文件的情况,密码复杂度的函数已经应用,这个函数只有在创建用户或者修改密码的时候才有用,对已存在的用户的密码不做校验。
SYS@ORA11GR2>select d.resource_name, d.resource_type, d.limit, d.profile
from dba_profiles d, dba_users t
where d.profile = t.profile
and t.username = upper('&username'); 2 3 4
Enter value for username: xxf
old 4: and t.username = upper('&username')
new 4: and t.username = upper('xxf')
RESOURCE_NAME RESOURCE_TYPE LIMIT PROFILE
------------------------------ --------------- --------------- ----------
COMPOSITE_LIMIT KERNEL DEFAULT PRO_FPWD
SESSIONS_PER_USER KERNEL DEFAULT PRO_FPWD
CPU_PER_SESSION KERNEL DEFAULT PRO_FPWD
CPU_PER_CALL KERNEL DEFAULT PRO_FPWD
LOGICAL_READS_PER_SESSION KERNEL DEFAULT PRO_FPWD
LOGICAL_READS_PER_CALL KERNEL DEFAULT PRO_FPWD
IDLE_TIME KERNEL DEFAULT PRO_FPWD
CONNECT_TIME KERNEL DEFAULT PRO_FPWD
PRIVATE_SGA KERNEL DEFAULT PRO_FPWD
FAILED_LOGIN_ATTEMPTS PASSWORD 3 PRO_FPWD
PASSWORD_LIFE_TIME PASSWORD DEFAULT PRO_FPWD
PASSWORD_REUSE_TIME PASSWORD DEFAULT PRO_FPWD
PASSWORD_REUSE_MAX PASSWORD DEFAULT PRO_FPWD
PASSWORD_VERIFY_FUNCTION PASSWORD VERIFY_FUNCTION PRO_FPWD
PASSWORD_LOCK_TIME PASSWORD .0013 PRO_FPWD
PASSWORD_GRACE_TIME PASSWORD DEFAULT PRO_FPWD
16 rows selected.
SYS@ORA11GR2>
5)修改xxf用户的密码为xxfa,提示密码需要字母、数字和特殊字符
XXF@ORA11GR2>alter user xxf identified by xxfa;
alter user xxf identified by xxfa
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20003: Password should contain at least one digit, one character and one
punctuation
XXF@ORA11GR2>
6)修改xxf用户的密码为x1#,提示,密码长度不能小于4
XXF@ORA11GR2>alter user xxf identified by x1#;
alter user xxf identified by x1#
*
ERROR at line 1:
ORA-28003: password verification for the specified password failed
ORA-20002: Password length less than 4
XXF@ORA11GR2>
7)修改xxf用户的密码为x1#a,修改成功
XXF@ORA11GR2>alter user xxf identified by x1#a;
User altered.
XXF@ORA11GR2>
小结:
在生产库中,这些校验及限制还是必要的。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/685769/viewspace-744777/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/685769/viewspace-744777/