oracle profile 口令和资源限制的配置集合
profiles文件是口令和资源限制的配置集合,包括CPU的时间、I/O的使用、空闲时间、连接时间、并发会话数量、密码策略等对于资源的使用profile可以做到控制会话级别或语句调用级别。oracle自带的默认好多是不限制的,用户创建时都会被指定这个PROFILE。
查看状态
-
查看当前open用户
select username,account_status,expiry_date,profile from dba_users;
-
在系统表user$中,可以查看用户的密码(PASSWORD)和状态(ASTATUS)
select user#, name, password, status from user$ where name in ('SYSTEM', 'SCOTT'); (?) select user#, name, password, astatus from user$ where name in ('SYSTEM', 'SCOTT'); (?)
-
锁定用户
alter user user_name account lock; -- 解锁 alter user user_name account unlock;
-
查看是否锁定
select username, account_status from dba_users where username='USERNAME';
-
查看用户密码到期时间
select username,account_status,expiry_date from dba_users;
dba_profiles配置文件:
-
资源类:(RESOURCE_TYPE=KERNEL)
Session_per_user:
指定限制用户的并发会话的数目。
Cpu_per_session:
指定会话的CPU时间限制,单位为百分之一秒。
Cpu_per_call:
指定一次调用(解析、执行和提取)的CPU时间限制,单位为百分之一秒。
Connect_time:
指定会话的总的连接时间,以分钟为单位。
Idle_time:
指定会话允许连续不活动的总的时间,以分钟为单位,超过该时间,会话将断开。
Logical_reads_per_session:
指定一个会话允许读的数据块的数目,包括从内存和磁盘读的所有数据块。
Logical_read_per_call:
指定一次执行SQL(解析、执行和提取)调用所允许读的数据块的最大数目。
Private_sga:
指定一个会话可以在共享池(SGA)中所允许分配的最大空间,以字节为单位。
Composite_limit:
指定一个会话的总的资源消耗,以service units单位表示。
-
密码类(RESOURCE_TYPE=PASSWORD)含义说明:
Failed_login_attempts:
指定在帐户被锁定之前所允许错误密码尝试登陆的的最大次数。
Password_life_time:
指定同一密码所允许使用的天数。
Password_reuse_time:
密码不能重用前的天数
password_reuse_max:
指的是当前密码可以被重用之前,必须进行密码修改的次数(与原密码相同)。
Password_lock_time:
指定登陆尝试失败次数到达后帐户的重试时间,以天为单位。
Password_grace_time:
指定宽限天数,数据库发出警告到登陆失效前的天数。如果数据库密码在这中间没有被修改,则过期会失效。
Password_verify_function:
该字段允许将复杂的PL/SQL密码验证脚本做为参数传递到create profile语句。Oracle数据 库提供了一个默认的脚本,但是自己可以创建自己的验证规则或使用第三方软件验证。 对 Function名称,指定的是密码验证规则的名称,指定为Null则意味着不使用密码验证功能。
数据库密码区分大小写的设置
SEC_CASE_SENSITIVE_LOGON = TRUE;
创建自定义profile
CREATE PROFILE my_profile LIMIT SESSIONS_PER_USER UNLIMITED CPU_PER_SESSION UNLIMITED CPU_PER_CALL 6000 CONNECT_TIME 60 LOGICAL_READS_PER_SESSION DEFAULT LOGICAL_READS_PER_CALL 6000 COMPOSITE_LIMIT 6000000 PRIVATE_SGA 66K FAILED_LOGIN_ATTEMPTS 6 PASSWORD_LIFE_TIME 60 PASSWORD_REUSE_TIME 60 PASSWORD_REUSE_MAX 5 PASSWORD_LOCK_TIME 1/24 PASSWORD_GRACE_TIME 10;
查询自定义profile
select * from dba_profiles where profile = 'MY_PROFILE';
让用户使用自定义的profile
alter user user_name profile my_profile;
查询用户的profile
select du.username, dp.* from dba_users du, dba_profiles dp where du.username = 'USER_NAME' and dp.profile = du.profile;
查询用户使用的哪个profile
select username profile from dba_users where username='USER_NAME';
修改profile
alter profile DEFAULT limit PASSWORD_LIFE_TIME UNLIMITED; -- 默认策略 alter profile MY_PROFILE limit PASSWORD_LIFE_TIME UNLIMITED; -- 自定义策略
删除并回收已经授予的profile
drop profile my_profile cascade;
用户所有拥有的PROFILE中有关密码的限制立即生效,不受限制。从这个可看出Oracle对用户密码的重视程度。
用户所有拥有的PROFILE中有关资源的限制与resource_limit参数的设置有关,当为TRUE时生效,当为FALSE时(默认值)设置任何值都无效。
-
修改密码复杂度
位置
D:\oracle\oracle\app\oracle\product\11.2.0\server\rdbms\admin
不确定步骤
alter system set resource_limit = true;
在本地找到utlpwdmg.sql脚本并执行
执行脚本会创建verify_function和verify_function_11G两个函数
12c版本自带三个函数(也可以自己创建)
ORA12C_STIG_VERIFY_FUNCTION ORA12C_STRONG_VERIFY_FUNCTION ORA12C_VERIFY_FUNCTION
设置profile的password_verify_function参数为verify_function;
alter profile profile_name limit password_verify_function verify_function;
取消设置password_verify_function
alter profile profile_name limit password_verify_function null;
数据库密码区分大小写的设置
SEC_CASE_SENSITIVE_LOGON = TRUE;
密码策略需求
本来是给所有用户批量修改,现在给特定用户修改策略
n天未修改密码进行锁定,会不会影响生产