Oracle 密码策略

本文介绍了Oracle数据库的密码策略,包括如何查询和修改用户的密码状态、账户锁定时间、密码有效期等。通过示例展示了如何使用SQL命令设置密码限制,如FAILED_LOGIN_ATTEMPTS、PASSWORD_LIFE_TIME和PASSWORD_GRACE_TIME等,以及如何开启和关闭resource_limit参数来控制资源限制的生效。

--密码策略


--修改密码
alter user FIN identified by FIN account unlock;
alter user FINCHINA identified by finchina account unlock;

--查询user是否锁定、及时间
SELECT USERNAME,ACCOUNT_STATUS,LOCK_DATE,CREATED,PROFILE FROM DBA_USERS WHERE USERNAME='USER';

--查询用户默认profile
select profile from dba_users where username='PATROL';

--查询用户密码策略
set linesize 333
col profile for a20
col resource_name for a25
col resource for a15
col limit for a20
select * from dba_profiles where profile='DEFAULT'
and resource_type='PASSWORD';


--修改资源限制状态
--用户所有拥有的PROFILE中有关资源的限制与resource_limit参数的设置有关,当为TRUE时生效,当为FALSE时(默认值)设置任何值都无效。
--这个初始化参数是可以动态修改的。
--开启resource_limit=true
show parameter resource_limit;
alter system set resource_limit=true;

--修改无限制
alter profile default limit PASSWORD_LIFE_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;

--修改用户默认profile
alter user PATROL profile default;

--关闭resource_limit=FALSE
alter system set resource_limit=FALSE;
show parameter resource_limit;


--字段含义:
--密码出错次数(超过次数后账号将锁定)
DEFAULT     FAILED_LOGIN_ATTEMPTS     PASSWORD 3
--密码有效期(天)
DEFAULT     PASSWORD_LIFE_TIME        PASSWORD 180
--密码不能重新用的天数
DEFAULT     PASSWORD_REUSE_TIME       PASSWORD UNLIMITED 
--密码重用之前修改的最少次数
DEFAULT     PASSWORD_REUSE_MAX        PASSWORD UNLIMITED 
--密码复杂度
DEFAULT     PASSWORD_VERIFY_FUNCTION  PASSWORD NULL 
--超过了1天后,帐号自动解锁
DEFAULT     PASSWORD_LOCK_TIME        PASSWORD 1  
--密码到期提前7天提配
DEFAULT     PASSWORD_GRACE_TIME       PASSWORD 7 

--(例子)修改策略(60s内非法登陆3次之后锁定,30分钟才能再次登陆):
alter profile default limit PASSWORD_LIFE_TIME 180;
alter profile default limit FAILED_LOGIN_ATTEMPTS 3;
alter profile default limit PASSWORD_LOCK_TIME 3/144;
alter profile default limit PASSWORD_GRACE_TIME 7;

### 配置Oracle数据库的密码策略 #### 设置密码复杂度要求 为了增强安全性,建议启用并自定义Oracle数据库中的密码复杂度验证函数。默认情况下,Oracle提供了`UTL_VERIFY`包来实现基本的密码校验功能。然而,在实际应用中通常会创建更严格的自定义验证逻辑。 对于希望实施高级别的安全控制的企业环境而言,编写自己的PL/SQL程序作为密码验证插件是一个不错的选择。下面给出了一段用于检查新设密钥是否满足特定条件(长度至少8位字符;包含大小写字母、数字以及特殊符号)的简单示例代码: ```plsql CREATE OR REPLACE FUNCTION verify_password Complexity ( username IN VARCHAR2, password IN VARCHAR2, old_password IN VARCHAR2 ) RETURN BOOLEAN IS BEGIN IF LENGTH(password) < 8 THEN RAISE_APPLICATION_ERROR(-20001,'Password too short'); END IF; -- Check for at least one digit, uppercase letter and special character. IF NOT REGEXP_LIKE (password , '^(?=.*\d)(?=.*[A-Z])(?=.*[\W_]).+$') THEN RAISE_APPLICATION_ERROR (-20002 ,'Password does not meet complexity requirements.'); END IF; RETURN(TRUE); END; / ``` 此部分描述了如何通过编程方式强化用户账户的安全属性[^1]。 #### 启用密码锁定机制 当检测到多次连续登录失败尝试时,自动触发账号临时冻结措施能够有效防止暴力破解攻击行为的发生。具体操作可以通过调整参数文件(`spfile` 或者 `init.ora`)内的相应条目完成: - `FAILED_LOGIN_ATTEMPTS`: 定义允许的最大错误次数; - `PASSWORD_LOCK_TIME`: 设定被锁住后的持续时间段(单位为小时),在此期间内无法再次登陆直到超时解除或由DBA手动解锁。 上述设置有助于及时阻止恶意入侵企图,并减少潜在风险暴露窗口期[^2]. #### 实施密码有效期管理 定期更换口令也是维护信息系统整体防护水平不可或缺的一环。为此目的,应当考虑引入如下几个方面考量因素: - `PASSWORD_LIFE_TIME`: 控制单个凭证的有效期限长短,默认值一般设定为90天左右较为合适; - `PASSWORD_GRACE_TIME`: 当接近到期日之前给予一定宽限期提醒使用者尽快更新个人信息; - `PASSWORD_REUSE_MAX`: 规避重复利用旧版凭据的可能性,即规定两次相同内容之间需间隔多久才可重新采用。 以上各项均可以在资源概要文件(profiles)里找到对应选项进行个性化定制化处理. #### 查询现有用户的密码状态 有时可能需要查看某个指定用户名下的认证详情,比如确认该对象当前处于何种状况之下——正常可用还是已被禁用?亦或是其他特殊情况呢? 这时就可以借助于内置视图`dba_users`来进行快速检索工作,命令格式如下所示: ```sql SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE, CREATED, PROFILE FROM DBA_USERS WHERE USERNAME='SPECIFIC_USER'; ``` 这段语句可以帮助管理员迅速掌握目标实体的相关信息,以便做出进一步决策安排[^3][^4].
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值