设为首页 收藏本站
查看: 368|回复: 0

[经验分享] oracle密码管理策略

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-7-18 08:52:32 | 显示全部楼层 |阅读模式
oracle密码管理策略
参考原文:
Oracle Password Management Policy (Doc ID 114930.1)
细节:
密码管理通过使用profile来建立。
当密码过期后,如果user有能力独立地从 end-user application(前台业务软件)修改密码的话,通常的推荐是只指派给这些schemas 一个profile,该profile有  password aging an expiration features 。
通常这意味着application(前台业务软件)必须正确的使用 OCIPasswordChange() OCI call ,比如sqlplus

一个profile 可以在指定password参数时被建立,然后把该profile指派给一个user
SQL> create profile custom limit failed_login_attempts 20;
Profile created.
SQL> alter user scott profile custom;
User altered.
oracle提供一个脚本( $ORACLE_HOME/rdbms/admin/utlpwdmg.sql)来实现  DEFAULT profile上的 密码管理特性。
dba可以把它(该脚本)作为一个例子使用,以查看password management特性时怎么被enabled的。
复制该脚本并根据你的需要自定义该脚本,请在上生产之前测试该脚本(或者你自己定义的脚本)
在oracle database profile中,有7个密码管理的参数可以被指定。下面分别讨论:
1. Account Locking
当一个user 超过了指派给他的失败登陆次数(FAILED_LOGIN_ATTEMPTS),oracle db 会自动lock住该user的账户(account),该lock的持续时间为PASSWORD_LOCK_TIME(该PASSWORD_LOCK_TIME是profile里边的resource)指定的时间。

Profile parameters:
  FAILED_LOGIN_ATTEMPTS
  PASSWORD_LOCK_TIME
2. Password Aging and Expiration
当超过了PASSWORD_LIFE_TIME中指定的时间之后,密码会expire,然后 user or  dba 必须改掉该密码。A grace period(以天为单位,也就是PASSWORD_GRACE_TIME指定的period)可以被设置,以允许user 在密码expired之后直到 grace period 期间之内, 改变他们的密码。
user 进入 grace period 期间的依据是:在他们的密码expired后,并且他们第一次登陆到db中的那个时刻。在 grace period 期间之内, 在用户每一次登陆到db之后,都会显示一条warning的消息,该消息会持续出现,直到grace period expired。在grace period 期内,用户必须修改密码,如果在grace period 期内不修改密码,则该account expired 并且不会被允许登陆,直到密码被修改。
注意: 密码不会也不能被locked,即使是由于 超过life time 和后来的 grace time。但是该user除非修改密码,否则是不能login的。
Profile parameters:
PASSWORD_LIFE_TIME
PASSWORD_GRACE_TIME
3. Password History
user 不能重用原来密码的时间间隔 就是 (PASSWORD_REUSE_TIME。该间隔可以以天为单位指定,
or a number of password changes the user must make before the current password can be reused (PASSWORD_REUSE_MAX).
--->看似这个PASSWORD_REUSE_MAX的含义是:在当前密码能被重用之前,用户必须改变许多次密码,也就是说PASSWORD_REUSE_MAX是指定的改密码的次数?
4. Password Complexity Verification
dba可以使用PL/SQL建立自己的 password verification routines (密码验证程序),然后就可以让oracle db 使用该routine 来检查密码复杂度。
Profile parameter:
PASSWORD_VERIFY_FUNCTION
sys拥有的PL/SQL function 必须遵守 下面的格式:
routine_name( userid_parameter IN VARCHAR2, password_parameter IN VARCHAR2, old_password_parameter IN VARCHAR2) RETURN BOOLEAN
默认的密码验证函数在 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql文件中。该文件可以作为一个例子或者根据你的需要进行修改。
该函数可以被profile关联使用。
alter profile default limit password_verify_function <routine_name>;
禁用某 default profile上的密码验证函数的方法如下:
SQL> alter profile default limit password_verify_function null;
密码复杂验证一旦启用,用户可以通过很多方法来修改他们自己的密码:
第一个方法: sqlplus的password命令
SQL> connect scott/tiger
Connected.
SQL> password
Changing password for SCOTT
Old password:
New password:
Retype new password:
Password changed
SQL>

第二个方法:alter user 命令:
SQL> ALTER USER &MYUSERNAME IDENTIFIED BY &NEWPASSWORD REPLACE &OLDPASSWORD;
使用replace 关键字的alter user 语法 是修复 bug 1231172方案的一部分,因此,该语法可以在当前所有支持的release上使用。
第三个方法:前台业务软件使用 OCIPasswordChange() call。
下面是一个例子:
-- A default password complexity function is provided.
-- This sample function makes no checks and always returns true.
-- The logic in the function should be modified as required.
-- See $ORACLE_HOME/rdbms/admin/utlpwdmg.sql for an idea of kind
-- of logic that can be used.
-- This function must be created in SYS schema.
-- connect sys/ as sysdba before running this.

-- This function will not check the provided password. It is just an example and
-- will return true for any password. For a real password verification routine see
-- script $ORACLE_HOME/rdbms/admin/utlpwdmg.sql.

CREATE OR REPLACE FUNCTION always_true (username varchar2,
password varchar2, old_password varchar2) RETURN boolean IS
BEGIN
RETURN(TRUE);
END;
/
-- This script alters the default parameters for Password Management.
-- This means that all the users on the system have Password Management
-- enabled and set to the following values unless another profile is
-- created with parameter values set to different value or UNLIMITED
-- is created and assigned to the user.
ALTER PROFILE DEFAULT LIMIT
PASSWORD_LIFE_TIME 60 -- (days)
PASSWORD_GRACE_TIME 10 --(days)
PASSWORD_REUSE_TIME 1800
PASSWORD_REUSE_MAX UNLIMITED
FAILED_LOGIN_ATTEMPTS 3 --(times)
PASSWORD_LOCK_TIME 1/1440 --(days)
PASSWORD_VERIFY_FUNCTION always_true;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-22221-1-1.html 上篇帖子: Oracle 常用的修改语句 下篇帖子: Oracle Linux6下安装Oracle 12c实战 oracle 密码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表