公司内部Oracle数据库安全管理主题:Oracle数据库安全管理项目名称:公司内部撰写单位:海鼎作者:吴昭松版本号:0.1日期:2006-3-8审核文档历史参考文档概述本文概要性讲述Oracle数据库安全管理,使读者对Oracle的数据库安全管理有所了解。
包含内容:1、概要文件;2、管理用户;3、权限和角色;概要文件概要文件是Oracle安全策略的重要组成部分,利用概要文件可以对数据库用户进行基本的资源限制,并且可以对用户的口令进行管理。
概要文件是命名的数据库和系统资源限制集合。
通过为数据库用户指定概要文件,可以控制用户在数据库和实例中所能使用的资源。
通常DBA会将数据库中用户分为几种类型,为每类用户创建概要文件。
一个数据库用户只能指定一个概要文件。
在安装数据库时,Oracle会自动建立名为DEFAULT的默认概要文件,如果在创建新的数据库用户时没有为他指定概要文件,Oracle将自动为他指定这个默认概要文件。
另外,如果在用户自定义的概要文件中没有指定某项参数,Oracle将使用DEFAULT概要文件中相应的参数作为默认值。
在概要文件中还可以对用户的口令管理策略进行设置。
资源限制参数利用概要文件,可以对以下几类数据库和系统资源进行限制:●CPU时间●逻辑读●用户的并发会话数●空闲时间●连接时间●私有SGA区对这些资源的限制是通过在概要文件中设置资源参数来实现的。
资源参数的值可以是一个整数,也可以是UNLIMITED(即不受限制),还可以是DEFAULT(使用默认概要文件中的参数设置)。
大部分的资源限制都可以在两个级别进行:会话级或调用级。
会话级资源限制是对用户在一个会话过程中所能使用的资源进行的限制,而调用级资源限制是对一条SQL语句在执行过程中所能使用的资源进行的限制。
当会话或一条SQL语句占用的资源超过概要文件中的限制时,Oracle将中止并回退当前的操作,然后向用户返回错误信息。
这时用户仍然有机会提交或回退当前的事务。
如果受到的是会话级限制,在提交或回退事务后用户会话被中止(断开连接),但是如果受到的是调用级限制,用户会话还能继续进行,只是当前执行的SQL语句被终止。
下面分别介绍在概要文件中使用的各种资源参数:●SESSIONS_PER_USER 该参数限制每个用户所允许建立的最大并发会话数目。
达到这个限制时,用户不能再建立任何数据库连接。
●CPU_PER_SESSION 该参数限制没个会话所能使用的CPU时间。
参数值是一个整数,单位为百分之一秒。
●CUP_PER_CALL 该参数限制每条SQL语句所能使用的CPU时间。
参数值是一个整数,单位为百分之一秒。
●LAGICAL_READS_PER_SESSION 该参数限制每个会话所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。
●LAGICAL_READS_PER_CALL 该参数限制每条SQL语句所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。
●PRIVATE_SGA 在共享服务器操作模式下,执行SQL语句和PL/SQL语句时Oracle将在SGA中创建私有的SQL区。
该参数限制在SGA中为每个会话所能分配的最大私有SGA区大小。
参数值是一个整数,单位为K或M,如果不指定单位,则表示以字节为单位。
在专用服务器操作模式下,该参数不起作用(私有SGA区位于服务进程的PGA中)。
●CONNECT_TIME 该参数限制每个会话能连接到数据库的最长时间。
当时间达到该参数的限制时,用户会话将自动断开。
参数值是一个整数,单位为分钟。
●IDLE_TIME 该参数限制每个会话所允许的最大连续空闲时间。
当会话不对数据库进行任何操作时,它处于空闲状态。
如果一个会话持续的空闲时间达到参数的限制,该会话将自动断开。
参数值是一个整数,单位为分钟。
●COMPOSITE_LIMIT 该参数用于设置“组合资源限制,为一个会话指定资源总限额。
参数值是一个整数,通过资源以加权和的形式进行计算。
激活和禁用资源限制通过概要文件实现的资源限制并不总是有效的,资源限制可以具有激活和禁用两种状态。
只有在资源限制处于激活状态时,Oracle才会对用户会话和SQL语句所使用的资源进行检查和限制。
修改数据库的资源限制状态有两种方式:●在数据库启动之前,可以通过设置初始化参数RESOURCE_LIMIT来决定资源限制的状态。
如果RESOURCE_LIMIT参数设置为TRUE,启动数据库后资源限制将处于激活状态。
如果RESOURCE_LIMIT参数设置为FALSE,启动数据库后资源限制将处于禁用状态。
默认情况下,RESOURCE_LIMIT参数为FALSE。
●在数据库启动之后(处于打开状态),可以使用ALTER SYSTEM语句来改变资源限制的状态:ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;口令策略参数概要文件除了可以用于资源管理外,还可以对用户的口令策略进行控制。
使用概要文件可以实现如下三种口令策略:●账户的锁定。
锁定策略是指用户在连续输入多次错误的口令后,将由Oracle自动锁定用户的账户,并且可以设置账户锁定的时间。
●口令的过期时间。
口令过期策略用于强制用户定期修改自己的口令。
当口令过期后,Oracle将随时提醒用户修改口令。
如果用户仍然不修改自己的口令,Oracle将使他的口令失效。
●口令的复杂度。
在概要文件中可以通过指定的函数来强制用户的口令必须具有一定的复杂度。
比如强制用户的口令不能与用户名相同,或者不能在口令中包含常用英文单词,或者在口令中必须包含一定数量的特殊字符。
下面分别介绍在概要文件中使用的各种口令参数(所有指定时间的口令参数都以天为单位):●FAILED_LOGIN_ATTEMPTS 该参数指定允许的输入错误口令的次数,超过该次数后用户账户被自动锁定。
●PASSWORD_LOCK_TIME 该参数指定用户账户由于口令输入错误而被锁定后,持续保持锁定状态的时间。
●PASSOWRD_LIFE_TIME 该参数指定同一个用户口令可以持续使用的时间。
如果达到这个限制之前用户还没有更换另外一个口令,他的口令将失效。
这时必须由DBA为他重新设置新的口令。
●PASSWORD_GRACE_TIME 该参数指定用户口令过期的时间。
如果在达到这个限制之前用户还没有更换另外一个口令,Oracle将对他提出警告。
在口令过期之后,用户在达到PASSOWRD_LIFE_TIME参数的限制之前有机会主动修改口令。
●PASSWORD_REUSE_TIME 该参数指定用户在能够重复使用一个口令之前必须经过的时间。
●PASSWORD_REUSE_MAX 该参数指定用户在能够重复使用一个口令之前必须对口令修改的次数。
PASSWORD_REUSE_TIME和PASSWORD_REUSE_MAX只能设置一个,而另一个参数必须指定为UNLIMITED。
●PASSWORD_VERFIY_FUNCTION 该参数指定用于验证用户口令复杂度的函数。
Oracle提供了一个名称为VERIY_FUNCTION的默认口令复杂度验证的函数,他的脚本保存在ORACLE_HOME\rdbms\admin目录中,脚本名称为utlpwdmg.sql。
创建并使用概要文件使用CREATE PROFILE语句可以创建概要文件,执行该语句的用户必须具有CREATE PORFILE系统权限。
下面是创建例子:create profile ACCOUNTING_USER limitsessions_per_user 6 --每个用户最多只能建立6个数据库会话cpu_per_session unlimitedcpu_per_call 6000 --会话中执行的每条SQL语句最多只能占用6000个单位(百分之一秒)的CPU 时间connect_time 1440 --每个会话持续连接到数据库的最长时间为24个小时idle_time 120 --保持2个小时的空闲状态后会话将自动断开连接logical_reads_per_session unlimitedlogical_reads_per_call 1000000 --会话中执行的每条SQL语句最多只能读取 1000000个数据块 composite_limit unlimitedprivate_sga unlimitedfailed_login_attempts 6 --允许连续6次输入错误的口令,如果第7次错误,账户自动锁定,由DBA来解除锁定password_life_time 31 --同一个口令连续使用的时间不能超过31天password_reuse_time 90 –90天后才允许重复使用同一个口令password_reuse_max unlimitedpassword_lock_time unlimitedpassword_grace_time 30 --每隔30天修改一次口令password_verify_function verify_function; --使用默认的口令复杂度验证函数对用户口令进行检查。
DBA可以根据需要使用下面的语句来修改DEFAULT概要文件中的参数设置:ALTER PROFILE DEFAULT LIMIT …;使用CREATE USER语句创建用户时,可以通过PROFILE子句为新建用户指定概要文件。
另外在使用ALTER USER 语句修改用户时也可以为他指定概要文件:ALTER USER SCOOT PROFILE ACCOUNTING_USER;对概要文件所做的修改只有在用户开始下一个新的会话时才会生效。
另外如果使用ALTER PROFILE语句对DEFAULT概要文件进行了修改,则所有概要文件中设置为DEFAULT的参数都会受到影响。
使用DROP PROFILE语句可以删除概要文件,如果要删除的概要文件已经指定给了用户,则使用CASCADE 关键字:ALTER PROFILE ACCOUNTING_USER CASCADE;如果为用户所指定的概要文件已经被删除,Oracle将自动为拥护重新指定DEFAULT概要文件。
管理用户用户在访问Oracle数据库时必须提供一个数据库账户,只有具有合法身份的用户才能够访问数据库。
因此,如何对数据库中用户进行控制和管理,是DBA安全策略中的重要组成部分。
在Oracle数据库中创建的任何用户都具有如下4个基本属性:●认证方式每个用户在连接到数据库时都需要进行身份验证。
身份验证可以通过操作系统进行,也可以通过数据库进行,或者是通过独立的网络服务器进行。
●默认表空间与临时表空间用户在创建数据库对象时如果没有显式地指定对象所处饿表空间,Oracle将在用户默认表空间中创建对象。