扩大
缩小

管理用户和PROFILE ——管理PROFILE——使用PROFILE管理口令

当访问oracle数据库时,必须提供用户名和口令,然后才能连接数据库。为防止其他人员或黑客窃取用户口令,dba必须充分考虑用户口令的安全性,以防止黑客登录到数据库运行非法操作。对于大型数据库管理系统来说,数据库用户众多,并且不用用户担负不同的管理任务,为了有效利用服务器资源,还应该限制不用用户的资源占用。

1.使用PROFILE管理口令

当客户登录到oracle数据库时,需要提供用户名和口令。默认情况下用户名和口令是以明文方式通过网络传输。为了避免黑客通过网络窃取口令,应该在客户端将环境变量ora_encrypt_login设置为true。这样,oracle会自动为口令加密。

1.1账户锁定

账户锁定用于控制用户连续登录失败的最大次数,如果登录失败次数达到限制,那么oracle会自动冻结用户账户。

  • failed_login_attempts:用于指定连续登录的最大失败次数。
  • password_lock_time:用于指定账户被锁定的天数。

例子:将账户usertemp01的连续登录失败次数控制在三次以内,账户锁定时间控制在10天之内:

create profile  lock_account limit
failed_login_attempts 3 password_lock_time 10;
alter user usertemp01 profile lock_account;

注意:如果没有指定pass_word_time 该选项,oracle会自动使用默认值(unlimited)在这种情况下需要dba手工解锁用户。

conn sys/sys as sysdba
alter user usertemp01 account unlock;

1.2口令有效期和宽限期

口令有效期是指用户账户口令的有效期使用时间,口令宽限期是指在用户账户口令到期之后的宽限使用时间。默认情况下,当建立用户并为其提供口令之后,其口令会一直生效。为了防止其他人和黑客破解用户账户口令,出于口令安全的考虑,dba用户应该强制普通用户定期改变口令。为了强制用户定期改变口令,oracle提供了一下两个选项:

password_life_time:指定用户口令有效期(单位天)。

password_grace_time:用于指定口令宽限期(单位天)。

注意:为了强制用户定期改变口令,二者应该同时设置。

例子:口令有限期10天,口令宽限期2天

create profile password_life_time limit
password_life_time 10 password_grace_time 2;
alter user usertemp01 profile password_life_time;

第十天登录时,会显示ora_28002:the password will expire within 2 days。如果第十天没有改变口令,那么在11,12天也会显示类似的警告信息。如果在12天没有改,在13天登录时,oracle会强制改变口令,否则不允许登录。

1.3口令历史

口令历史用于控制口令的可重用次数或者可重用时间。当使用了口令历史选项之后,oracle会将口令修改信息存放在数据字典中。这样当修改口令时,oracle会对新旧口令进行比较,以确保用户不会重用过去已经用过的口令。为了强制用户使用不同的口令,应该使用口令历史选项。口令历史有这两个选项:

password_reuse_time:用于指定口令可重用的时间。

password_reuse_max:用于指定重用口令之前口令需改变的次数。

注意:当使用口令历史选项时,只能使用其中一个选项。当使用一个选项时,必须将另一个选项设置为unlimited 。

例子:强制用户在口令终止10之内不能重用以前的口令:

create profile password_history limit
password_life_time 10 password_grace_time 2
password_reuse_time 10 password_reuse_max unlimited;
alter user usertemp01 profile password_history;

在第十三天登录时,oracle会强制用户改变口令。但如果仍然采用过去的口令,则口令修改不能生效。

1.4口令复杂度校验

口令校验是指使用pl/sql函数确保用户口令的有效性,以强制用户使用复杂口令。通过使用口令校验函数,dba可以强制用户使用复杂口令。当使用口令校验函数时,既可以使用系统口令校验函数也可以使用自定义口令校验函数。在11g之前。系统口令校验函数名称为verify_function,在11g中系统口令校验函数名称为verify_function_11g,并且该函数定义了一下规则:

  • 口令不能少于8个字符
  • 口令不能和用户名相同
  • 口令不能与数据库名称相同
  • 口令至少包含一个字符和一个数字
  • 口令至少有3个字符与以前的口令不用
  • 口令不能使用字符串welcome1,database1,account1,user1234,password1,oracle123,computer1,abcdefg1,change_on_install,oracle.

1.4.1使用系统口令校验函数verify_function_11g

注意必须以sys用户登录建立口令校验函数。脚本utlkpwdmg.sql 用于建立系统口令校验函数 verify_function_11g当运行该脚本时,不仅会建立口令校验函数verify_function_11g,而且会修改default的口令管理选项。

conn sys/sys as sysdba
@?\rdbms\admin\utlpwdmg.sql

1.4.2禁用口令校验函数

为了禁用口令检验函数,可以将password_verify_function 选项设置为null

 

conn sys/sys as sysdba
alter profile password_history limit
password_verify_function null;
alter user usertemp01 identified by usertemp01;

 

 


 

 

 

 

 

 

posted on 2013-05-29 20:23  LinuxPanda  阅读(1893)  评论(0编辑  收藏  举报

导航