您的当前位置:首页正文

Oracle数据库口令策略

2024-06-30 来源:帮我找美食网


Oracle数据库口令策略

Oracle口令和资源管理

1、Profiles: 概要文件,包含一些对口令和资源限制的一个命名的集合。通过CREA TE USER 或ALTER USER 命令来指定用户。它可以是enabled 或disabled。可以参考default profile(默认,资源和口令没有做任何限定)。

sql>create user test

identified by test; //用户和口令都是test

2、口令管理:Account locking >Password history >Password expiration and aging 口令生命周期和过期时间>Password verification 设定口令的复杂性(符号等)>用户

口令限制是一直保持的。使用CREATE USER or Lock,unlock ,expire accounts 这些命令

sql> alter user test account lock; //帐号锁定

sql>alter user test account unlock; //帐号解锁

sql>alter user test password expire; //口令到期

(1)口令帐号锁定:FAILED_LOGIN_A TTEMPTS 在帐号被锁之前登录尝试的失败次数,PASSWORD_LOCK_TIME 在尝试失败登录达到一定的次数后帐号被锁定的时间(单位:1天),超过这个时间将自动解锁。

sql>create profile profile1 limit

password_lock_time 1/1440

failed_login_attempts 3; //配置文件profile1已创建

sql>alter user kong profile profile1; //将用户kong使用配置文件profile1

sql>conn kong/kkk //ERROR

sql>conn kong/kxf //ERROR

sql>conn kong/kkk //ERROR

sql>conn kong/111 //the account is locked 帐号已被锁定(登录失败3次后帐号自动锁定)

sql>alter profile profile1 limit

password_lock_time 1/1440; //表示1分钟后锁定的帐号将自动解锁(1/60*1/24)

sql>conn kong/kxf;

(2)口令生存周期和失效后允许改变的时间:PASSWORD_LIFE_TIME 口令的生存周期(口令经过多少天后会提示到期)/ PASSWORD_GRACE_TIME 失效后锁定,即设定几天后锁定。

sql>alter profile profile1 limit

password_life_time 2 //口令经过2天后会提示到期

password_grace_time 3; //口令到期的3天后被锁定,这3天内可以对口令做改变。

(3)保留口令历史记录:PASSWORD_REUSE_TIME 保留时间(几天)/ PASSWORD_REUSE_MAX 保留最多重用次数(几次)

注意:PASSWORD_REUSE_TIME 和PASSWORD_REUSE_MAX 是复式的,可以都指定但只有一个生效)

sql> alter profile profile1 limit

password_reuse_time 10 //口令保留10天

password_reuse_max 3; //口令最多重用3次

(4)启用口令复杂性函数:PASSWORD_VERIFY_FUNCTION(PL/SQL函数在口令被设定前做一个口令复杂性检查)

满足条件:函数必须建立在SYS 作为owner下,Boolean函数返回的值是个boolean

值。函数中三个参数必须是输入参数(用户ID,新口令,旧口令),并且是V ARCHAR2类型和30个字符。

function_name(userid_parameter IN V ARCHAR2(30),password_parameter IN V ARCHAR2(30),old_password_paramemter IN V ARCHAR2(30)) RETURN BOOLEAN

Oracle给了一个默认的口令验证函数:VERIFY_FUNCTION()

步骤:conn sys 连接> run一个脚本:utlpwdmg.sql ORACLE会自动产生一个VERIFY_FUNCTION()函数,同时修改DEFAULT profile概要文件。

要求如下:

a.口令最小长度是4个字节;

b.口令不能和用户名相同;

c.口令至少有一个字母,一个数字和一个特殊符号。

d.口令改变时新口令必须和旧口令保证有三个符号以上的差异。

sql>conn sys/admin1 as sysdba

sql>start d:\\oracle\\ora90\\rdbms\\admin\dmg.sql //函数已经创建,同时DEFAULT profile已经更新

sql>alter user kong profile default; //用户已更改为默认的口令文件

sql>alter user kong identified by kong_002; //口令已修改,新口令不能和旧口令相同

sql>alter user kong identified by kxf_001; //重新改回kxf_001.

另一个窗口:

sql>conn kong/kxf_001

sql>password //修改新口令:kong_002

(5)创建Profile:口令文件的设定

CREATE PROFILE grace_5 LIMIT

FAILED_LOGIN_A TTEMPTS 3

PASSWORD_LOCK_TIME UNLIMITED

PASSWORD_LIFE_TIME 30

PASSWORD_REISE_TIME 30

PASSWORD_VERIFY_FUNCTION verify_function

PASSWORD_GRACE_TIME 5;

sql>alter profile profile1 limit

password_verify_function verify_function; //配置文件已经修改。

(6)改变Profile:口令文件的设定

删除口令文件:

DROP PROFILE developer_prof;

DROP PROFILE developer_prof CASCADE;

sql>alter user kong

profile profile1;

sql>drop profile profile1; //配置文件profile1指定了用户,不能没有casecade而删除

sql>drop profile profile1

cascade; //profile的删除对当前用户session不起作用。只是在以后的session中才会有效。

3、资源的管理:session级,call级别或者两个都生效(默认default不生效)。

限制可以被定位在profiles中使用CREATE PROFILE 命令。

要使资源限制生效方法:RESOURCE_LIMIT 初始化参数(静态改变)、ALTER SYSTEM 动态改变命令

ALTER SYSTEM SET resource_limit=TRUE;

例如:并行会话数设定为2个用户(默认disabled)

sql>conn kong/kxf_001 //已连接

在另一个窗口:

sql>conn kong/kxf_001 //已连接

第三个窗口:

sql>conn kong/kxf_001 //已连接

如果想要并行会话数起作用,那么需要用到resource_limit=true;

sql>alter system set resource_limit=true;

sql>conn kong/kxf_001 //exceeded simultaneous SESSIONS_PER_USER limit 已

经超过每个用户并行session限制

【注意】如果将并行会话数设置为4,那么继续conn kong/kxf_001又可以连接了。

(1)设定资源限制在Session级别:

CPU_PER_SESSION CPU/会话——每个session可以指定多少CPU (单位:1/100 s)SESSIONS_PER_USER 每个用户可以开多少session

CONNECT_TIME 连接时间——连接多久退出去(单位:min)

IDLE_TIME 空闲时间——用户非活动检测时间,多长时间没有做动作就自动断开(单位:min)

LOGICAL_READS_PER_SESSION 每个Session读取多少数据块(物理和逻辑读)PRIVATE_SGA 每个用户占用多少内存区域(单位:bytes)

sql>create profile profile1 limit

cpu_per_session 10000 ; //100秒

connect_time 60; //连接时间60分钟

idle_time 5; //指定空闲时间为5分钟

sql>alter user kong

profile profile1;

另一个窗口:

sql>conn kong/kxf_001

sql>select * from authors;

sql>set wrap off

sql>set linesize 1000

sql>run

等待5分钟后继续操作。。。

sql>select * from authors ;// 超出了最大的空闲时间,自动断开了连接

(2)设定资源限制CALL级别:

CPU_PER_CALL 每一个调用可以占用多少CPU时间(1/100 s)

LOGICAL_READS_PER_CALL 每一个调用可以读多少数据块(bytes)

sql>alter profile profile1 limit

cpu_per_call 1000 ; //占用10s

logical_reads_per_call 10; //每个调用只能读10块。

创建Profile做资源限定:

CREATE PROFILE developer_prof LIMIT

SESSIONS_PER_USER 2

CPU_PER_SESSION 10000

IDLE_TIME 60

CONNECT_TIME 480;

4、管理资源使用Database Resource Manager 数据库资源管理器:

提供Oracle服务器更多的控制来体现资源管理的决策:资源使用者组、资源计划、资源分配方法、资源计划调度等等信息。如果不通过图形界面完成,可以使用

DBMS_RESOURCE_MANAGER package 来创建和管理这些元素。

要求使用ADMINISTER_RESOURCE_MANAGER 权限。

sql>desc dbms_resource_manager

5、获取口令和资源限制的信息:DBA_USERS / DBA_PROFILES

sql>desc dba_users; //查询当前用户的所有信息

sql>select username,account_stauts from dba_users; //发现test用户是expire状态sql>alter user test

account lock; //此时test用户状态:expired&locked

sql>desc dba_profiles //profile、resource_name、resource_type、sql>select * from dba_profiles where profile='profile1';

(继承)limit

因篇幅问题不能全部显示,请点此查看更多更全内容