Oracle的安全管理
本章学习目标
数据库安全性问
一直是人们关注的焦点,数据库数据的丢失以及数据库被非法用户的侵入对于任何一个应用系统来说都是至关重要的问题。确保信息安全的重要基础在于数据库的安全性能。
第六章 Oracle的安全管理
本章内容安排
6.1 Oracle9i的安全保障机制
6.2 用户管理
6.3 权限和角色
6.4 概要文件
6.5 数据审计
6.1 Oracle9i的安全保障机制
6.1.1 安全性内容
6.1.2 安全性策略
数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
在数据库存储这一级可采用密码技术,当物理存储设备失窃后,它起到保密作用。在数据库系统这一级中提供两种控制:用户标识和鉴定,数据存取控制。
数据库安全可分为二类:系统安全性和数据安全性。
系统安全性是指在系统级控制数据库的存取和使用的机制,包含:
(1)有效的用户名/口令的组合。
(2)一个用户是否授权可连接数据库。
(3)用户对象可用的磁盘空间的数量。
(4)用户的资源限制。
(5)数据库审计是否是有效的。
(6)用户可执行哪些系统操作。
6.1.1 安全性内容
在Oracle多用户数据库系统中,安全机制作下列工作:
(1)防止非授权的数据库存取。
(2)防止非授权的对模式对象的存取。
(3)控制磁盘使用。
(4)控制系统资源使用。
(5)审计用户动作。
用户要存取一对象必须有相应的权限授给该用户。已授权的用户可任意地可将它授权给其它用户,由于这个原因,这种安全性类型叫做任意型。
Oracle利用下列机制管理数据库安全性:
数据库用户和模式
权限
角色
存储设置和空间份额
资源限制
审计
1.系统安全性策略
2.用户安全性策略
6.1.2 安全性策略
3.数据库管理者安全性策略
4.应用程序开发者的安全性策略
系统安全性策略
(1)管理数据库用户
(2)用户身份确认
(3)操作系统安全性
1)数据库管理员必须有create和delete文件的操作系统权限。
2)一般数据库用户不应该有create或delete与数据库相关文件的操作系统权限。
3)如果操作系统能为数据库用户分配角色,那么安全性管理者必须有修改操作系统帐户安全性区域的操作系统权限。
2. 用户安全性策略
(1)一般用户的安全性
1)密码的安全性
2)权限管理
(2)终端用户的安全性
3. 数据库管理者安全性策略
(1)保护作为sys和system用户的连接
(2)保护管理者与数据库的连接
(3)使用角色对管理者权限进行管理
4. 应用程序开发者的安全性策略
(1)应用程序开发者和他们的权限
(2)应用程序开发者的环境
1)程序开发者不应与终端用户竞争数据库资源;
2)程序开发者不能损害数据库其他应用产品。
(3)应用程序开发者的空间限制
作为数据库安全性管理者,应该特别地为每个应用程序开发者设置以下的一些限制:
1)开发者可以创建table或index的表空间;
2)在每一个表空间中,开发者所拥有的空间份额。
6.2.2 创建用户
6.2.3 修改用户
6.2.4 删除用户
6.2.1 数据库的存取控制
6.2 用户管理
1.用户鉴别
2.用户的表空间设置和定额
6.2.1 数据库的存取控制
3.用户资源限制和环境文件
4.用户环境文件
用户鉴别
为了防止非授权的数据库用户的使用,Oracle提供三种确认方法:
操作系统确认,Oracle数据库确认和网络服务确认。
由操作系统鉴定用户的优点是:
1)用户能更快,更方便地联入数据库。
2)通过操作系统对用户身份确认进行集中控制:如果操作系统与数据库用户信息一致,那么Oracle无须存储和管理用户名以及密码。
3)用户进入数据库和操作系统审计信息一致。
2.用户的表空间设置和定额
关于表空间的使用有几种设置选择:
用户的缺省表空间
用户的临时表空间
数据库表空间的空间使用定额
3. 用户资源限制和环境文件
用户可用的各种系统资源总量的限制是用户安全域的部分。利用显式地设置资源限制,安全管理员可防止用户无控制地消耗宝贵的系统资源。资源限制是由环境文件管理。一个环境文件是命名的一组赋给用户的资源限制。另外Oracle为安全管理员在数据库提供是否对环境文件资源限制的选择。
Oracle可限制几种类型的系统资源的使用,每种资源可在会话级、调用级或两者上控制。
在会话级:每一次用户连接到一数据库,建立一会话。每一个会话在执行SQL语句的计算机上耗费CPU时间和内存量进行限制。
在调用级:在SQL语句执行时,处理该语句有几步,为了防止过多地调用系统,Oracle在调用级可设置几种资源限制。
有下列资源限制:
(1)为了防止无控制地使用CPU时间,Oracle可限制每次Oracle调用的CPU时间和在一次会话期间Oracle调用所使用的CPU的时间,以0.01秒为单位。
(2)为了防止过多的I/O,Oracle可限制每次调用和每次会话的逻辑数据块读的数目。
(3)Oracle在会话级还提供其它几种资源限制。
每个用户的并行会话数的限制。
会话空闲时间的限制,如果一次会话的Oracle调用之间时间达到该空闲时间,当前事务被回滚,会话被中止,会话资源返回给系统。
每次会话可消逝时间的限制,如果一次会话期间超过可消逝时间的限制,当前事务被回滚,会话被删除,该会话的资源被释放。
每次会话的专用SGA空间量的限制。
4.用户环境文件
用户环境文件是指定资源限制的命名集,可赋给Oracle数据库的有效的用户。利用用户环境文件可容易地管理资源限制。
在许多情况中决定用户的环境文件的合适资源限制的最好的方法是收集每种资源使用的历史信息。
6.2.2 创建用户
使用CREATE USER语句可以创建一个新的数据库用户,执行该语句的用户必须具有CREATE USER系统权限。
在创建用户时必须指定用户的认证方式。一般会通过Oracle数据库对用户身份进行验证,即采用数据库认证方式。在这种情况下,创建用户时必须为新用户指定一个口令,口令以加密方式保存在数据库中。当用户连接数据库时,Oracle从数据库中提取口令来对用户的身份进行验证。
使用IDENTIFIED BY子句为用户设置口令,这时用户将通过数据库来进行身份认证。如果要通过操作系统来对用户进行身份认证,则必须使用IDENTIFIED EXTERNAL BY子句。
使用DEFAULT TABLESPACE子句为用户指定默认表空间。如果没有指定默认表空间,Oracle会把SYSTEM表空间作为用户的默认表空间。为用户指定了默认表空间之后,还必须使用QUOTA子句来为用户在默认表空间中分配的空间配额。
此外,常用的一些子句有:
①TEMPORARY TABLESPACE子句:为用户指定临时表空间。
②PROFILE子句:为用户指定一个概要文件。如果没有为用户显式地指定概要文件,Oracle将自动为他指定DEFAULT概要文件。
③DEFAULT ROLE子句:为用户指定默认的角色。
④PASSWORD EXPIRE子句:设置用户口令的初始状态为过期。
⑤ACCOUNT LOCK子句:设置用户账户的初始状态为锁定,缺省为:ACCOUNT UNLOCK。
在建立新用户之后,通常会需要使用GRANT语句为他授予CREATE SESSION系统权限,使他具有连接到数据库中的能力。或为新用户直接授予Oracle中预定义的CONNECT角色。
6.2.3 修改用户
在创建用户之后,可以使用ALTER USER语句对用户进行修改,执行该语句的用户必须具有ALTER USER系统权限。
例如:利用下面的语句可以修改用户chenjie的认证方式、默认表空间、空间配额:
ALTER USER chenjie
IDENTIFIED BY chenjie_pw
QUATA 10M ON mbl_tbs;
ALTER USER语句最常用的情况是用来修改用户自己的口令,任何用户都可以使用ALTER USER…IDENTIFIED BY语句来修改自己的口令,而不需要具有任何其他权限。但是如果要修改其他用户的口令,则必须具有ALTER USER系统权限。
DBA还会经常使用ALTER USER语句锁定或解锁用户账户。例如:
ALTER USER chenjie ACCOUNT LOCK;
ALTER USER chenjie ACCOUNT UNLOCK;
6.2.4 删除用户
使用DROP USER语句可以删除已有的用户,执行该语句的用户必须具有DROP USER系统权限。
如果用户当前正连接到数据库中,则不能删除这个用户。要删除已连接的用户,首先必须使用ALTER SYSTEM…KILL SESSION语句终止他的会话,然后再使用DROP USER语句将其删除。
如果要删除的用户模式中包含有模式对象,必须在DROP USER子句中指定CASCADE关键字,否则Oracle将返回错误信息。例如:利用下面的语句将删除用户chenjie,并且同时删除他所拥有的所有表、索引等模式对象:
DROP USER chenjie CASCADE;
6.3.2 创建角色
6.3.3 授予权限或角色
6.3.4 回收权限或角色
6.3.1 基本概念
6.3 权限和角色
6.3.5 激活和禁用角色
1.权限
2.角色
6.3.1 基本概念
1.权限
权限是执行一种特殊类型的SQL语句或存取另一用户的对象的权力。有两类权限:系统权限和对象权限。
1)系统权限:是执行一处特殊动作或者在对象类型上执行一种特殊动作的权利。
系统权限可授权给用户或角色,一般,系统权限只授予管理人员和应用开发人员,终端用户不需要这些相关功能。
2)对象权限:在指定的表、视图、序列、过程、函数或包上执行特殊动作的权利。
2.角色
为相关权限的命名组,可授权给用户和角色。数据库角色包含下列功能:
(1)一个角色可授予系统权限或对象权限。
(2)一个角色可授权给其它角色,但不能循环授权。
(3)任何角色可授权给任何数据库用户。
(4)授权给用户的每一角色可以是可用的或者不可用的。一个用户的安全域仅包含当前对该用户可用的全部角色的权限。
(5)一个间接授权角色对用户可显式地使其可用或不可用。
在一个数据库中,每一个角色名必须唯一。角色名与用户不同,角色不包含在任何模式中,所以建立角色的用户被删除时不影响该角色。
一般,建立角色服务有两个目的:为数据库应用管理权限和为用户组管理权限。相应的角色称为应用角色和用户角色。
应用角色是授予的运行数据库应用所需的全部权限。
用户角色是为具有公开权限需求的一组数据库用户而建立的。用户权限管理是受应用角色或权限授权给用户角色所控制,然后将用户角色授权给相应的用户。
ORACEL利用角色更容易地进行权限管理。有下列优点:
(1)减少权限管理,不要显式地将同一权限组授权给几个用户,只需将这权限组授给角色,然后将角色授权给每一用户。
(2)动态权限管理,如果一组权限需要改变,只需修改角色的权限,所有授给该角色的全部用户的安全域将自动地反映对角色所作的修改。
(3)权限的选择可用性,授权给用户的角色可选择地使其可用或不可用。
(4)应用可知性,当用户经用户名执行应用时,该数据库应用可查询字典,将自动地选择使角色可用或不可用。
(5)应用安全性,角色使用可由口令保护,应用可提供正确的口令使用角色,如不知其口令,不能使用角色。
使用CREATE ROLE语句可以创建一个新的角色,执行该语句的用户必须具有CREATE ROLE系统权限。
在角色刚刚创建时,它并不具有任何权限,这时的角色是没有用处的。因此,在创建角色之后,通常会立即为它授予权限。例如:利用下面的语句创建了一个名为OPT_ROLE的角色,并且为它授予了一些对象权限和系统权限:
CREATE ROLE OPT_ROLE;
GRANT SELECT ON sal_history TO OPT_ROLE;
GRANT INSERT,UPDATE ON mount_entry TO OPT_ROLE;
GRANT CREATE VIEW TO OPT_ROLE;
6.3.2 创建角色
在创建角色时必须为角色命名,新建角色的名称不能与任何数据库用户或其他角色的名称相同。
与用户类似,角色也需要进行认证。在执行CREATE ROLE语句创建角色时,默认地将使用NOT IDENTIFIED子句,即在激活和禁用角色时不需要进行认证。如果需要确保角色的安全性,可以在创建角色时使用IDENTIFIED子句来设置角色的认证方式。与用户类似,角色也可以使用两种方式进行认证。
使用ALTER ROLE语句可以改变角色的口令或认证方式。例如:利用下面的语句来修改OPT_ROLE角色的口令(假设角色使用的是数据库认证方式):
ALTER ROLE OPT_ROLE IDENTIFIED BY accts*new;
1.授予系统权限
2.授予对象权限
6.3.3 授予权限或角色
3.授予角色
1.授予系统权限
在GRANT关键字之后指定系统权限的名称,然后在TO关键字之后指定接受权限的用户名,即可将系统权限授予指定的用户。
例如:利用下面的语句可以相关权限授予用户chenjie:
GRANT CREATE USER,ALTER USER,DROP USER TO chenjie
WITH ADMIN OPTION;
2.授予对象权限
Oracle对象权限指用户在指定的表上进行特殊操作的权利。
在GRANT关键字之后指定对象权限的名称,然后在ON关键字后指定对象名称,最后在TO关键字之后指定接受权限的用户名,即可将指定对象的对象权限授予指定的用户。
使用一条GRANT语句可以同时授予用户多个对象权限,各个权限名称之间用逗号分隔。
有三类对象权限可以授予表或视图中的字段,它们是分别是INSERT,UPDATE和REFERENCES对象权限。
例如:利用下面的语句可以将CUSTOMER表的SELECT和INSERT,UPDATE对象权限授予用户chenqian:
GRANT SELECT,INSERT(CUSTOMER_ID,CUSTOMER_name),
UPDATE(desc) ON CUSTOMER TO chenqian WITH GRANT OPTION;
在授予对象权限时,可以使用一次关键字ALL或ALL PRIVILEGES将某个对象的所有对象权限全部授予指定的用户。
3.授予角色
在GRANT关键字之后指定角色的名称,然后在TO关键字之后指定用户名,即可将角色授予指定的用户。Oracle数据库系统预先定义了CONNECT、RESOURCE、DBA、 EXP_FULL_DATABASE、IMP_FULL_DATABASE五个角色。CONNECT具有创建表、视图、序列等权限;RESOURCE具有创建过程、触发器、表、序列等权限、DBA具有全部系统权限;EXP_FULL_DATABASE、 IMP_FULL_DATABASE具有卸出与装入数据库的权限。
通过查询sys.dba_sys_privs可以了解每种角色拥有的权利。
例如:利用下面的语句可以将DBA角色授予用户chenjie:
GRANT DBA TO chenjie WITH GRANT OPTION;
在同一条GRANT语句中,可以同时为用户授予系统权限和角色。
如果在为某个用户授予角色时使用了WITH ADMIN OPTION选项,该用户将具有如下权利:
(1)将这个角色授予其他用户,使用或不使用WITH ADMIN OPTION选项。
(2)从任何具有这个角色的用户那里回收该角色。
(3)删除或修改这个角色。
注意:不能使用一条GRANT语句同时为用户授予对象权限和角色。
使用REVOKE语句可以回收己经授予用户(或角色)的系统权限、对象权限与角色,执行回收权限操作的用户同时必须具有授予相同权限的能力。
例如:利用下面的语句可以回收已经授予用户chenqian的SELECT和UPDATE对象权限:
REVOKE SELECT,UPDATE ON CUSTOMER FROM chenqian;
利用下面的语句可以回收已经授予用户chenjie的CREATE ANY TABLE系统权限:
REVOKE CREATE ANY TABLE FROM chenjie;
利用下面的语句可以回收己经授予用户chenjie的OPT_ROLE角色:
REVOKE OPT_ROLE FROM chenjie;
6.3.4 回收权限或角色
在回收对象权限时,可以使用关键字ALL或ALL PRIVILEGES将某个对象的所有对象权限全部回收。
例如:利用下面的语句可以回收己经授予用户chenqian的CUSTOMER表的所有对象权限:
REVOKE ALL ON CUSTOMER FROM chenjie;
一个用户可以同时被授予多个角色,但是并不是所有的这些角色都同时起作用。角色可以处于两种状态:激活状态或禁用状态,禁用状态的角色所具有权限并不生效。
当用户连接到数据库中时,只有他的默认角色(Default Role)处于激活状态。在ALTER USER角色中使用DEFAULT ROLE子句可以改变用户的默认角色。
例如:如果要将用户所拥有的一个角色设置为默认角色,可以使用下面的语句:
ALTER USER chenjie DEFAULT ROLE connect,OPT_ROLE;
6.3.5 激活和禁用角色
在用户会话的过程中,还可以使用SET ROLE语句来激活或禁用他所拥有的角色。用户所同时激活的最大角色数目由初始化参数ENABLED ROLES决定(默认值为20)。如果角色在创建时使用了IDENTIFIED BY子句,则在使用SET ROLE语句激活角色时也需要在IDENTIFIED BY子句中提供口令。
如果要激活用户所拥有的所有角色,可以使用下面的语句:
SET ROLE ALL;
6.4.2 激活和禁用资源限制
6.4.3 管理概要文件
6.4.1 概要文件中的参数
6.4 概要文件
1.资源限制参数
2.口令策略参数
6.4.1 概要文件中的参数
1.资源限制参数
资源参数的值可以是一个整数,也可以是UNLIMITED或DEFAULT即使用默认概要文件中的参数设置。
大部分资源限制都可以在两个级别进行:会话级或调用级。会话级资源限制是对用户在一个会话过程中所能使用的资源进行的限制,而调用级资源限制是对一条SQL语句在执行过程中所能使用的资源进行的限制。
当会话或一条SQL语句占用的资源超过概要文件中的限制时,Oracle将中止并回退当前的操作,然后向用户返回错误信息。这时用户仍然有机会提交或回退当前的事务。如果受到的是会话级限制,在提交或回退事务后用户会话被中止(断开连接),但是如果受到的是调用级限制,用户会话还能够继续进行,只是当前执行的SQL语句被终止。
以下为概要文件中使用的各种资源参数:
①SESSIONS_PER_USER:该参数限制每个用户所允许建立的最大并发会话数目。达到这个限制时,用户不能再建立任何数据库连接。
②CPU_PER_SESSION:该参数限制每个会话所能使用的CPU时间。
③CPU_PER_CALL:该参数限制每条SQL语句所能使用的CPU时间。
④LAGICAL_READS_PER_SESSION:该参数限制每个会话所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。
⑤LAGICAL_READS_PER_CALL:该参数限制每条SQL语句所能读取的数据块数目,包括从内存中读取的数据块和从硬盘中读取的数据块。
⑥CONNECT_TIME:该参数限制每个会话能连接到数据库的最长时间。当连接时间达到该参数的限制时,.用户会话将自动断开。
⑦IDLE_TIME:该参数限制每个会话所允许的最大连续空闲时间。如果一个会话持续的空闲时间达到该参数的限制,该会话将自动断开。
⑧COMPOSITE_LIMIT:该参数用于设置“组合资源限制”。
⑨PRIVATE_SGA:在共享服务器操作模式下,执行SQL语句和PL/SQL语句时,Oracle将在SGA中创建私有SQL区。该参数限制在SGA中为每个会话所能分配的最大私有SQL区大小。在专用服务器操作模式下,该参数不起作用。
2.口令策略参数
使用概要文件可以实现如下三种口令策略:
(1)账户的锁定
账户锁定策略是指用户在连续输入多少次错误的口令后,将由Oracle自动锁定用户的账户,并且可以设置账户锁定的时间。
(2)口令的过期时间
口令过期策略用于强制用户定期修改自己的口令。当口令过期后,Oracle将随时提醒用户修改口令。如果用户仍然不修改自己的口令,Oracle将使他的口令失效。
(3)口令的复杂度
在概要文件中可以通过指定的函数来强制用户的口令必须具有一定的复杂度。
以下为在概要文件中使用的各种口令参数:
①FAILED_LOGIN_ATTEMPTS:该参数指定允许的输入错误口令的次数,超过该次数后用户账户被自动锁定。
②PASSWORD_LOCK_TIME:该参数指定用户账户由于口令输入错误而被锁定后,持续保持锁定状态的时间。
③PASSWORD_LIFE_TIME:该参数指定同一个用户口令可以持续使用的时间。如果在达到这个限制之前用户还没有更换另外一个口令,他的口令将失效。这时必须由DBA为他重新设置新的口令。
④PASSWORD_GRACE_TIME:该参数指定用户口令过期的时间。如果在达到这个限制之前用户还没有更换另外一个口令,Oracle将对他提出警告。在口令过期之后,用户在达到PASSWORD_LIFE_TIME参数的限制之前有机会主动修改口令。
⑤PASSWORD_REUSE_TIME:该参数指定用户在能够重复使用一个口令前必须经过的时间。
⑥PASSWORD_REUSE_MAX:该参数指定用户在能够重复使用一个口令之前必须对口令进行修改的次数。PASSWORD_REUSE_TIME参数和PASSWORD_REUSE_MAX参数只能设置一个,而另一个参数必须指定为UNLIMITED。
⑦PASSWORD_VERIFY_FUNCTION:该参数指定用于验证用户口令复杂度的函数。Oracle通过一个内置脚本提供了一个默认函数用于验证用户口令的复杂度,
所有指定时间的口令参数都以天为单位。
修改数据库的资源限制状态有两种方式:
在数据库启动之前,可以通过设置初始化参数RESOURCE_LIMIT来决定资源限制的状态。如果RESOURCE LIMIT参数设置为TRUE,启动数据库后资源限制将处于激活状态;反之如果RESOURCE LIMIT参数设置为FALSE,启动数据库后资源限制将处于禁用状态。默认情况下,RESOURCE_LIMIT参数为FALSE。
在数据库启动之后(处于打开状态),可以使用ALTER SYSTEM语句来改变资源限制的状态,执行该语句的用户必须具有ALTER SYSTEM系统权限。
6.4.2 激活和禁用资源限制
例如:利用下面的语句可以将资源限制由禁用状态切换到激活状态:
ALTER SYSTEM SET RESOURCE_LIMIT= TRUE;
如果在数据库中使用了服务器端初始化参数文件(SPFILE),在使用ALTER SYSTEM语句改变资源限制的状态时,可以选择在初始化参数文件中修改
(默认的ALTER SYSTEM语句将使用SCOPE=BOTH子句),这样在下一次启动数据库时修改仍然有效。
1.创建概要文件
2.修改概要文件
6.4.3 管理概要文件
3.删除概要文件
4.指定概要文件
5.设置组合资源限制
1.创建概要文件
使用CREATE PROFILE语句可以创建概要文件,执行该语句的用户必须具有CREATE PROFILE系统权限。
DBA可以根据需要使用下面的语句来修改DEFAULT概要文件中的参数设置:
ALTER PROFILE DEFAULT LIMIT ...;
要修改DEFAULT概要文件,用户必须具有ALTER PROFILE系统权限。任何用户都不能删除DEFAULT概要文件。
2.修改概要文件
概要文件在创建之后,可以使用ALTER PROFILE语句来修改其中的资源参数和口令参数,执行该语句的用户必须具有ALTER PROFILE系统权限。
例如:利用下面的语句对概要文件ACCOUNTING_USER进行修改:
ALTER PROFILE ACCOUNTING USER LIMIT
CPU_PER_CALL DEFAULT
LOGICAL_READS_PER_SESSION 2000000;
3.删除概要文件
使用DROP PROFILE语句可以删除概要文件,执行该语句的用户必须具有DROP PROFILE系统权限。如果要删除的概要文件已经指定给了用户,则必须在DROP PROFILE语句中使用CASCADE关键字。
例如:利用下面的语句可以删除ACCOUNTING_USER概要文件:
DROP PROFILE ACCOUNTING_USER CASCADE;
如果为用户所指定的概要文件己经被删除,Oracle将自动为用户重新指定DEFAULT概要文件。
4.指定概要文件
在使用CREATE USER语句创建用户时,可以通过PROFILE子句为新建用户指定概要文件。另外,在使用ALTER USER语句修改用户时也可以为他指定概要文件。
例如:利用下面的语句可以将概要文件ACCOUNTING USER指定给用户JACK:
ALTER USER JACK
PROFILE ACCOUNTING_USER;
5.设置组合资源限制
在创建概要文件时通过COMPOSITE LIMIT子句来指定资源总限额。
例如:利用下面的语句创建的概要文件中将资源总限额设置为20000:
CREATE PROFILE clerk LIMIT
COMPOSITE_LIMIT 20000
SESSIONS_PER_USER 2
CPU_PER_CALL 1000;
注意:在一个概要文件中设置的资源总限额和单独资源限制是同时起作用的。当会话所占用的资源达到其中一个限制时,会话将被终止。如果没有在概要文件中显式地设置资源总限额,默认的总限额值为0,这时组合资源限制不会起作用。
6.5.2 审计的使用
6.5.1 审计的功能
6.5 数据审计
6.5.1 审计的功能
审计是对选定的用户动作的监控和记录,通常用于:
(1)审查可疑的活动。例如:数据被非授权用户所删除,此时安全管理员可决定对该数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计。
(2)监视和收集关于指定数据库活动的数据。
Oracle支持三种审计类型:
语句审计,对某种类型的SQL语句审计,不指定结构或对象。
权限审计,对执行相应动作的系统权限的使用审计。
对象审计,对一特殊模式对象上的指定语句的审计。
Oracle所允许的审计选择限于下列方面:
审计语句的成功执行、不成功执行,或者其两者。
对每一用户会话审计语句执行一次或者对语句每次执行审计一次。
对全部用户或指定用户的活动的审计。
1.审计登录
2.审计数据库操作
6.5.2 审计的使用
3.审计数据库对象上的DML
1.审计登录
AUDIT ANY 特权是发出审计命令所必须的。
AUDIT SESSION——完成审计登录。可以用来对所有成功和不成功的与数据库建立连接的尝试进行审计。
AUDIT SESSION WHENEVER NOT SUCCESSFUL——仅审计不成功的尝试。
AUDIT SESSION WHENEVER SUCCESSFUL——仅审计成功的尝试。
如果审计数据存储在SYS.AUD$表中,可以生成审计报表。使用DBA _AUDIT_SESSION视图
登录。
2.审计数据库操作
通过审计数据库操作,可以在语句和系统特权级上进行审计,而不必考虑具体的数据库对象。AUDIT语句的审计功能特性能够审计不止一条SQL语句。例如,使用审计语句ROLE审计SQL语句CREATE ROLE、ALTER ROLE、SET ROLE和DROP ROLE。要审计系统特权,必须指定该特权。系统特权ALTER DATABASE不包含在语句审计选项中,但是仍然可以审计它,因为它是一个系统特权。有些语句审计选项使用与系统特权相同的名称。可以把AUDIT语句用于用户、会话或存取。可以进一步地定义它以便仅对成功或不成功的语句进行审计。
3.审计数据库对象上的DML
可以使用如下语法审计一个具体的模式对象:
AUDIT obj_opt ON schema.object BY
SESSION/ACCESS WHENEVER NOT/SUCCESSFUL;
也可以指定一个对象选项(例如插入或更新)或者使用关键字ALL来指定所有的对象选项。