Oracle 审计介绍

【Oracle 审计介绍】志不强者智不达,言不信者行不果。这篇文章主要讲述Oracle 审计介绍相关的知识,希望能为你提供帮助。
查看审计是否开启

SQL> show parameter auditNAMETYPEVALUE ------------------------------------ ----------- ------------------------------ audit_file_deststring/opt/oracle/admin/XE/adump audit_sys_operationsbooleanTRUE audit_syslog_levelstring audit_trailstringDB unified_audit_common_systemlogstring unified_audit_systemlogstring SQL>

审计相关的视图
SYS.AUD$是唯一保留审计结果的表。其它的都是视图。STMT_AUDIT_OPTION_MAP 包含有关审计选项类型代码的信息由SQL.BSQ 脚本在CREATEDATABASE 的时候创建 AUDIT_ACTIONS包含对审计跟踪动作类型代码的说明 ALL_DEF_AUDIT_OPTS包含默认对象审计选项。当创建对象时将应用这些选项DBA_STMT_AUDIT_OPTS描述由用户设置的跨系统的当前系统审计选项 DBA_PRIV_AUDIT_OPTS描述由用户正在审计的跨系统的当前系统权限 DBA_OBJ_AUDIT_OPTS描述在所有对象上的审计选项 USER_OBJ_AUDIT_OPTSUSER 视图描述当前用户拥有的所有对象上的审计选项以下是审计记录 DBA_AUDIT_TRAIL列出所有审计跟踪条目 USER_AUDIT_TRAILUSER视图显示与当前用户有关的审计跟踪条目DBA_AUDIT_OBJECT包含系统中所有对象的审计跟踪记录 USER_AUDIT_ OBJECTUSER 视图列出一些审计跟踪记录而这些记录涉及当前用户可以访问的对象的语句DBA_AUDIT_SESSION列出涉及CONNECT 和DISCONNECT 的所有审计跟踪记录 USER_AUDIT_ SESSIONUSER视图列出涉及当前用户的CONNECT 和DISCONNECT 的所有审计跟踪记录DBA_AUDIT_STATEMENT列出涉及数据库全部的GRANT REVOKE AUDIT NOAUDIT 和ALTER SYSTEM 语句的审计跟踪记录 USER_ AUDIT_ STATEMENT对于USER 视图来说这些语句应是用户发布的DBA_AUDIT_EXISTS列出BY AUDIT NOT EXISTS 产生的审计跟踪条目下面的视图用于细粒度审计 DBA_AUDIT_POLICIES 显示系统上的所有审计策略 DBA_FGA_AUDIT_TRAIL 列出基于值的审计的审计跟踪记录

Audit_trail
默认取值为None none 禁用数据库审计 os 启用数据库审计,并将数据库审计记录定向到操作系统审计记录 db 启用数据库审计,并将数据库所有审计记录定向到数据库的SYS.AUD$表 db_extended 启用数据库审计,并将数据库所有审计记录定向到数据库的SYS.AUD$表。另外,填充SYS.AUD$表的SQLBIND 列和SQLTEXT CLOB 列。 xml 启用数据库审计,并将所有记录写到XML格式的操作系统文件中。 xml_extended 启用数据库审计,输出审计记录的所有列,包括SqlText和SqlBind的值。AUDIT_SYS_OPERATIONS设置为true那么sys用户的操作也会被审计,但此值默认为false alter system set audit_trail=db_extended scope=spfile ;

审计级别
(所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。) 当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。Statement: 按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter session by cmy会审计cmy用户所有的数据库连接。Privilege: 按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。Object: 按对象审计,只审计on关键字指定对象的相关操作,如aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。注意Oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access; 后, 对于随后创建的对象的drop操作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比trigger可以对schema的DDL进行“审计”,这个功能稍显不足。

举例:
1.Schema Object Auditing(对象审计) 审计对SCOTT.EMP表的select操作 sys@TEST> audit select on scott.emp; 2.Privilege Auditing(权限审计) 审计所有系统权限 sys@TEST> audit all privileges; 3.Statement Auditing(语句审计) 审计由SCOTT用户发出的所有SELECT TABLE sys@TEST> audit select table by scott;


    推荐阅读