Oracle 密码相关策略

前言

数据库安全配置中,访问安全是最优先考虑的问题,弱密码是第一杀手。Oracle数据库在不断的发展中,为管理员预设置许多的安全设置,比如Oracle 11g起,密码大小写敏感;默认密码180天会失效;10次密码错误账号会被锁定等。这些都会失效与锁定都会反应在dba_users表的account_status字段,它有9种不同的状态:

  STATUS# STATUS
---------- ------------------------------
 
     0 OPEN
     1 EXPIRED
     2 EXPIRED(GRACE)
     4 LOCKED(TIMED)
     8 LOCKED
     5 EXPIRED & LOCKED(TIMED)
     6 EXPIRED(GRACE) & LOCKED(TIMED)
     9 EXPIRED & LOCKED
    10 EXPIRED(GRACE) & LOCKED

前面四种是基本状态,而后面五种是组合状态。基本状态说明参考如下:

  • OPEN: 这个是大家最常见的,就是表示这个是可用的,没有任何限制的帐户。
  • LOCKED: 表示这个帐户被DBA锁定. 一般通过如下命令可以接触与锁定账户:
    alter user username account lock(unlock);
  • EXPIRED: 表示该帐户被设置为口令到期,要求用户在下次logon的时候修改口令(系统会在该account被设置为expire后的第一次登陆是提示你修改密码)
  • EXPIRED(GRACE): 当设置了grace以后(第一次成功登录后到口令到期后有多少天时间可改变口令,在这段时间内,帐户被提醒修改口令并可以正常登陆,account_status显示为EXPIRED(GRACE).
  • LOCKED(TIMED): 这种状态表示失败的login次数超过了FAILED_LOGIN_ATTEMPTS,被系统自动锁定,需要注意的是,在Oracle 10g中,默认的DEFAULT值是10次。
实操步骤
  1. 开启密码复杂度函数
@?/rdbms/admin/utlpwdmg.sql

※ 密码复杂度函数可以自行调整,详细参考脚本内容。11g函数名:verify_function_11G12c函数名:ora12c_verify_function

密码复杂度包含如下内容:

  • 密码长度不低于8位
  • 密码不能跟用户名一致
  • 密码不能跟用户名反过来的字符一致
  • 密码不能跟服务器名一致
  • 包含了一些数据字典的验证,不能与其一致,比如(oracle123,database1等)
  • 密码不能跟oracle(1…100)一致
  • 密码至少包含一个数字与字母
  • 密码跟旧密码至少三个以上字符不同
  1. 设置DEFAULT PROFILE
ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFT_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT FAILED_LOGIN_ATTEMPTS UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_LOCK_TIME UNLIMITED;
ALTER PROFILE DEFAULT LIMIT PASSWORD_GRACE_TIME UNLIMITED;

※ 在执行密码复杂度脚本后,DEFAULT PROFILE将会指定一系列的默认值。如恢复默认密码180天会失效,因此记得要重新设置默认的PROFILE避免业务中断的。

  1. 新建SYSTEM_PROFILE并设置参数:
create profile SYSTEM_PROFILE limit
// 密码出错次数(超过后账号将锁定)
FAILED_LOGIN_ATTEMPTS 10
// 密码有效期180天
PASSWORD_LIFE_TIME 180
// 密码重用之前修改的最少次数
PASSWORD_REUSE_MAX 5
// 密码不能重新用的天数
PASSWORD_REUSE_TIME 60
// 密码验证函数
PASSWORD_VERIFY_FUNCTION verify_function_11G;
// 超过了1天后,帐号自动解锁
PASSWORD_LOCK_TIME 1
// 密码到期前宽限期30天
PASSWORD_GRACE_TIME 30
  1. 检查PROFILE配置
SELECT * FROM DBA_PROFILES WHERE PROFILE='SYSTEM_DEFAULT' AND RESOURCE_NAME LIKE 'PASSWORD%';
  1. 查询业务系统账户当前PROFILE设置
SELECT username,PROFILE FROM dba_users where username="&USERNAME";
  1. 业务系统账户设置SYSTEM_PROFILE
alter user mesadmin profile SYSTEM_PROFILE;
  1. 定期变更密码命令
ALTER USER <username>  IDENTIFIED BY <newpassword> REPLACE <oldpassword>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值