-- 口令复杂度策略,及登陆失败措施
show parameter resource_limit;
show parameter FAILED_LOGIN_ATTEMPTS;
show parameter SEC_CASE_SENSITIVE_LOGON;
-- 确保以下两个参数为TRUE
alter system set resource_limit = true;
alter system set SEC_CASE_SENSITIVE_LOGON = TRUE;
-- 启用密码复杂度规则
sqlplus / as sysdba
@?/rdbms/admin/utlpwdmg.sql -- 创建密码验证函数(请查看?/rdbms/admin/utlpwdmg.sql里面生成的验证函数)
alter profile default limit password_verify_function verify_function; -- 启用密码验证
alter profile default limit password_verify_function ORA12C_VERIFY_FUNCTION; -- 启用密码验证
alter profile default limit password_verify_function null; -- 取消密码复杂度
-- 查看当前用户状态,锁定时间,过期时间
col ACCOUNT_STATUS for a16
col USERNAME for a30
select USERNAME,ACCOUNT_STATUS,LOCK_DATE,EXPIRY_DATE from dba_users;
-- 查看当前配置profile
set line 190 pages 90
col PROFILE for a25
col LIMIT for a25
select PROFILE,resource_type,RESOURCE_NAME,LIMIT from dba_profiles where PROFILE='DEFAULT';
SELECT profile,resource_type,resource_name,limit FROM dba_profiles WHERE resource_type='PASSWORD' AND profile='DEFAULT';
-- 修改当前配置profile
alter profile default limit FAILED_LOGIN_ATTEMPTS 5;
alter profile default limit PASSWORD_LOCK_TIME 30/24/60; -- 单位天(配置30分钟)
alter profile default limit PASSWORD_LIFE_TIME 90;
alter profile default limit PASSWORD_GRACE_TIME 7;
-- alter profile default limit PASSWORD_REUSE_TIME UNLIMITED;
alter profile default limit PASSWORD_REUSE_TIME 30;
alter profile default limit PASSWORD_REUSE_MAX 7;
alter profile default limit IDLE_TIME 10; -- 会话空闲超过10分钟之后自动断开
-- 1.FAILED_LOGIN_ATTEMPTS: 用户在登录尝试失bai败n次后被锁定。
-- 2.PASSWORD_LOCK_TIME: 登录尝试失败达到指定次数,用户锁定时长,以“Day”为单位。
-- 3.PASSWORD_LIFE_TIME: 用户口令的生命周期。
-- 4.PASSWORD_GRACE_TIME: 表示用户口令使用时间超过其生命周期后,可以延续使用的天数,并且可延续时间内登录会有相应口令即将过期的提示。
-- 5.PASSWORD_REUSE_TIME: 指定了口令不能重用之前多少天之内的使用的密码。
-- 6.PASSWORD_REUSE_MAX: 在达到PASSWORD_REUSE_TIME指定时间后,要再次使用同一口令前必须改变的次数。
-- 如:PASSWORD_REUSE_TIME=30,PASSWORD_REUSE_MAX=10,用户可以在30天以后重用该口令,要求口令必须被改变超过10次。
-- 7.PASSWORD_VERIFY_FUNCTION: Oracle允许将复杂的PL/SQL密码验证脚本做为参数传递给PASSWORD_VERIFY_FUNCTION。并且其自己提供了一个默认的脚本,但是用户可以创建自己的验证规则或使用第三方软件验证。
-- 8.Password Verify Function:
-- 复合检测函数说明:不能包含双引号"(防注入)
--- ?/rdbms/admin/utlpwdmg.sql可能使用到的参数说明
-- ora_complexity_check(
-- password varchar2,
-- chars integer := null, -- 口令长度
-- letter integer := null, -- 大小写字母数
-- upper integer := null, -- 大写字母数
-- lower integer := null, -- 小写字母数
-- digit integer := null, -- 数字数
-- special integer := null -- 特殊字符数
-- )