oracle 审计(一)

一、何谓数据库审计?

数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,SQL语句执行,数据库对象访问这些方面的跟踪记录。

二、审记记录的存储方式

分为两种:一种是存储在操作系统文件中,一种是存储在system表空间中的SYS.AUD$表中。

三、对数据库性能影响的考虑

审计必然需要占用CPU,因此,需要综合平衡审计需求与性能之间的平衡性问题,以确定出最好的审许策略。

四、审记结果中包含哪些信息

前面讲到审许结果的存储分数据库存储和文件存储两种方式。对于数据库存储的情况,SYS.AUD$表中包含以下信息:

1)        ·操作系统用户名

2)        ·数据库用户名

3)        ·连接会话标识

4)        ·终端标识

5)        ·被访问的schema对象名

6)        ·尝试的操作

7)        ·操作的完整代码

8)        ·日期和时间戳

若审计记录存储在外部操作文件中,则该文件可能包含以下信息:

1)         ·操作系统产生的审计记录

2)         ·数据库的审计记录

3)         ·被审计到的数据库操作

4)         ·超级管理员(SYS)的审计记录

其中,被写到文件中的审计记录是以编码的方式存储的,如果要理解这些编码所对应的信息,可以查询以下数据字典表:

编码信息数据字典表

-------------------------------

数据库操作代码表示尝试的操作。它的相关描述可以从数据字典表AUDIT_ACTIONS表中查询到

操作所使用的权限可以在字典表SYSTEM_PRIVILEGE_MAP中查询到对应的说明

完整的操作代码操作成功时将返回0,失败时返回相关oracle错误信息,错误信息码所对应的说明可以从oracle官方文档中获得

--------------------------------

五、缺省的审计

不论当前是否已经开启的审计功能,数据库都会把一些数据库相关的操作写入外部审计文件中(注意:不是写入SYS.AUD$表),这些被缺省审计的操作是:

1)         ·以超级管理员权限对数据库的连接(connectASSYSDBA或connectASSYSOPER)

2)         ·数据库启动

3)         ·数据库停止

六、对超级管理员用户的操作行为的审计

超级管理员用户指的是以ASSYSDBA或ASSYSOPER方式连接数据库的用户。初始化参数AUDIT_SYS_OPERATIONS用来指定是超级管理员的审计选项,如果将AUDIT_SYS_OPERATIONS设置为TRUE,那么所有超级管理员的操作都将被审计,而不管当前是否有开启审计功能,而且所有的审计信息都被写入外部审计文件中(注意:不是写入SYS.AUD$表)。

七、执行审计

1.设定审计记录的存放位置

初始化参数AUDIT_TRAIL指定了审计记录的存放位置,该参数有三个取值:

1)         ·DB审计记录存放在数据库的SYS.AUD$表中

2)         ·OS审计记录存放在外部的操作系统文件中

3)         ·NONE关闭审计(缺省值)

初始化参数AUDIT_FILE_DEST指定了当审外部审记文件目标存储路径,其缺省值是$ORACLE_HOME/rdbms/audit

2.审计选项

这个审计选项指的是执行审计的AUDIT语句的可选项。AUDIT语句的语法请参考oracle官方SQL参考。

3.以实例说明审计

a.审计某用户的会话的创建与结束

AUDITSESSIONBYscott,fey;

b.审计所有用户的会话的创建与结束

AUDITSESSION;

c.审计删除表的操作

AUDITDELETEANYTABLE;

c.审计删除表的操作(限制:只审计删除失败的情况)

AUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.审计删除表的操作(限制:只审计删除成功的情况)

AUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

e.审计删除表的操作(限制:同一个会话中相同的操作语句只审计一次)

AUDITDELETEANYTABLEBYSESSION;

(注:对于这种情况,如果审计记录被设定为存储在外部文件中时,这个效果是体现不出来的,因为oracle无法判断是否已经审计过相同的操作语句。)

f.审计删除表的操作(限制:每支删除语句都审计,不论同一会话中是否有多条相同的操作语句)

AUDITDELETEANYTABLEBYACCESS;

g.审计对fey.employee表的delete操作

AUDITDELETEONfey.employee;

h.审计对fey.employee表的delete、updet、insert操作

AUDITDELETE,UPDATE,INSERTONfey.employee;

八、停止审计

停止审计使用NOAUDIT语句,该语句的语法请参考oracle官方SQL参考。下面以实例说明NOAUDIT的使用:

a.停止所有对会话的创建与结束的审计

NOAUDITSESSION;

b.停止对用户fey,scott的会话的创建与结束的审计

NOAUDITSESSIONBYfey,scott;

c.停止审计删除表的操作

NOAUDITDELETEANYTABLE;

c.停止审计删除表的操作(限制:停止审计删除失败的情况)

NOAUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.停止审计删除表的操作(限制:停止审计删除成功的情况)

NOAUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

g.停止审计对fey.employee表的delete操作

NOAUDITDELETEONfey.employee;

h.停止审计对fey.employee表的delete、updet、insert操作

NOAUDITDELETE,UPDATE,INSERTONfey.employee;

九、对审计记录表SYS.AUD$的管理

当SYS.AUD$表的审计记录越来越多的时候,以至达到存储极限时,会因为审计记录无法写入而产生错误。或许我还也需要对该表的数据进行一些转储或者碎片的整理,或是删除一些我们认为不再需要的审计记录。这些都是要考虑的事情。下面给出一个对该表进行存储碎片的整理的一个方法:

a.将该表的数据selectinto到另一个表中,或利用export导出到外部文件

b.truncate这张表(要以超级管理员登录才行)

c.再将原先转储的数据再加载进来。

也许我们需要对针对SYS.AUD$表的操作进行审计,如:AUDITINSERT,UPDATE,DELETEONsys.aud$BYACCESS;

十、Fine-Grained审计

如前面所述,审计的记录中并没有含操作所作用的数据,比如说,需要审计针对一个表的select,而且需要在审计记录中包含select语句所返回的数据。这时,就需要用到Fine-Grained审计。Fine-Grained审计是基于oracle的事件,其原理是在insert,update或delete相关的事件中截取相关的数据。属于orale程序开发的范畴。具体可以参考相关oracle文檔。

十一、审计相关的数据字典视图

STMT_AUDIT_OPTION_MAP

AUDIT_ACTIONS

ALL_DEF_AUDIT_OPTS

DBA_STMT_AUDIT_OPTS

DBA_PRIV_AUDIT_OPTS

DBA_OBJ_AUDIT_OPTS

USER_OBJ_AUDIT_OPTS

DBA_AUDIT_TRAIL

USER_AUDIT_TRAIL

DBA_AUDIT_OBJECT

USER_AUDIT_OBJECT

DBA_AUDIT_SESSION

USER_AUDIT_SESSION

DBA_AUDIT_STATEMENT

USER_AUDIT_STATEMENT

DBA_AUDIT_EXISTS

DBA_AUDIT_POLICIES

DBA_FGA_AUDIT_TRAIL

时间: 2024-10-11 01:22:32

oracle 审计(一)的相关文章

oracle 审计(二)

1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)..默认情况下审计是没有开启的. 当数据库的审计是使能的,在语句执行阶段产生审计记录.审计记录包含有审计的操作.用户执行的操作.操作的日期和时间等信息. 不管你是否打开数据库的审计功能,以

[转]ORACLE 审计功能

审计是对选定的用户动作的监控和记录,通常用于: u          审查可疑的活动.例如:数据被非授权用户所删除,此时安全管理员可决定对该 数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计. u          监视和收集关于指定数据库活动的数据.例如:DBA可收集哪些被修改.执行了多少次逻辑的I/O等统计数据. ORACLE支持三种审计类型: u          语句审计,对某种类型的SQL语句审计,不指定结构或对象. u          特权审计,对执行相

oracle 审计引起的问题 (双机软件roseha)

认证服务器的数据库问题 1.环境搭建       远程连接的服务器是windows 10.10.10.40 需要安装 Xmangager        roseha 9.0 是图形化的管理界面,linux 启动的图形界面  双机IP: 10.10.10.9              10.10.10.10  漂移IP:  10.10.10.11   2. 打开xbrowser 5        新建xdmcp会话,输入IP 10.10.10.9 默认端口,连接成功     3. 以root 用户

oracle 审计(三)

Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 计 类 型 说    明 语句审计 按照语句类型审计SQL语句,而不论访问何种特定的模式对象.也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户 权限审计 审计系统权限,例如CREATE TABLE或ALTER INDEX.和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的

oracle审计详解-转

http://blog.chinaunix.net/u2/66903/showart_2082884.htmlOracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 计 类 型 说 明 语句审计 按照语句类型审计SQL语句,而不论访问何种特定的模式对象.也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户 权限审计 审计系统权限,例如CREA

Oracle审计功能

一.审计分类: oracle中审计总体上可分为"标准审计"和"细粒度审计"后者也称为"基于政策的审计",在Oracle10G之后功能得到很大增强.其中标准审计可分为用户级审计和系统级审计.用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作.系统级审计只能由DBA设置,用以监测成功或失败的登录要求.监测GRANT和REVO

15、oracle审计

学习文档(http://blog.csdn.net/rlhua/article/category/1638551) http://www.cnblogs.com/remote-antiquity/p/6920065.html 1.数据库安全及审计的责任 责任分离 2.标准审计 启用数据库审计--->指定审计选项--->复查审计信息--->维护审计 audit_trail 启用数据库审计 SQL> show parameter audit NAME     TYPE VALUE --

oracle审计详解

Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 计 类 型 说    明 语句审计 按照语句类型审计SQL语句,而不论访问何种特定的模式对象.也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户 权限审计 审计系统权限,例如CREATE TABLE或ALTER INDEX.和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的

oracle审计

1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)中.默认情况下审计是没有开启的. 不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance:启动数据库:关闭数据库. 2.和审计相关的两个主要参数 Audit