zoukankan      html  css  js  c++  java
  • 【翻译自mos文章】oraclepassword管理策略

    oraclepassword管理策略

    參考原文:
    Oracle Password Management Policy (Doc ID 114930.1)

    细节:
    password管理通过使用profile来建立。

    当password过期后,假设user有能力独立地从 end-user application(前台业务软件)改动password的话,通常的推荐是仅仅指派给这些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上的 password管理特性。
    dba能够把它(该脚本)作为一个样例使用,以查看password management特性时怎么被enabled的。
    复制该脚本并依据你的须要自定义该脚本,请在上生产之前測试该脚本(或者你自定义的脚本)

    在oracle database profile中。有7个password管理的參数能够被指定。以下分别讨论:

    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中指定的时间之后。password会expire,然后 user or  dba 必须改掉该password。A grace period(以天为单位,也就是PASSWORD_GRACE_TIME指定的period)能够被设置,以同意user 在passwordexpired之后直到 grace period 期间之内, 改变他们的password。
    user 进入 grace period 期间的依据是:在他们的passwordexpired后。而且他们第一次登陆到db中的那个时刻。

    在 grace period 期间之内, 在用户每一次登陆到db之后。都会显示一条warning的消息,该消息会持续出现,直到grace period expired。在grace period 期内,用户必须改动password,假设在grace period 期内不改动password。则该account expired 而且不会被同意登陆。直到password被改动。

    注意: password不会也不能被locked。即使是因为 超过life time 和后来的 grace time。可是该user除非改动password,否则是不能login的。

    Profile parameters:
     PASSWORD_LIFE_TIME
     PASSWORD_GRACE_TIME

    3. Password History

    user 不能重用原来password的时间间隔 就是 (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能被重用之前,用户必须改变很多次password,也就是说PASSWORD_REUSE_MAX是指定的改password的次数?

    4. Password Complexity Verification
    dba能够使用PL/SQL建立自己的 password verification routines (password验证程序)。然后就能够让oracle db 使用该routine 来检查password复杂度。

    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

    默认的password验证函数在 $ORACLE_HOME/rdbms/admin/utlpwdmg.sql文件里。

    该文件能够作为一个样例或者依据你的须要进行改动。

    该函数能够被profile关联使用。
    alter profile default limit password_verify_function <routine_name>;

    禁用某 default profile上的password验证函数的方法例如以下:
    SQL> alter profile default limit password_verify_function null;

    password复杂验证一旦启用,用户能够通过非常多方法来改动他们自己的password:

    第一个方法: 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 keyword的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;

查看全文
  • 相关阅读:
    类和对象
    循环结构(二)
    循环结构(一)
    Java数据类型
    对Java的初识
    函数的作用域、作用域链以及return关键字
    var、fucntion关键字优先级问题
    JavaScript中定义函数的几种方式
    JavaScript变量名与函数名的命名规范
    使用JavaScript分别实现4种样式的九九乘法表(1X1分别在左上、左下、右上、右下)
  • 原文地址:https://www.cnblogs.com/ldxsuanfa/p/10888097.html
  • Copyright © 2011-2022 走看看