oracle audit

前端之家收集整理的这篇文章主要介绍了oracle audit前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

文章来自:http://blog.chinaunix.net/uid-22948773-id-2600906.html


Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象。审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用。

下表中总结了Oracle数据库中不同类型的审计。

@H_404_24@

@H_404_24@

语句审计

@H_404_24@

按照语句类型审计sql语句,而不论访问何种特定的模式对象。也可以在数据库中指定一个或多个用户,针对特定的语句审计这些用户

@H_404_24@

权限审计

@H_404_24@

审计系统权限,例如CREATE TABLE或ALTER INDEX。和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的目标

@H_404_24@

模式对象审计

@H_404_24@

审计特定模式对象上运行的特定语句(例如,DEPARTMENTS表上的UPDATE语句)。模式对象审计总是应用于数据库中的所有用户

@H_404_24@

细粒度的审计

@H_404_24@

根据访问对象的内容来审计表访问和权限。使用程序包DBMS_FGA来建立特定表上的策略

@H_404_24@

下面几节介绍DBA如何管理系统和对象权限使用的审计。当需要一定的粒度时,DBA可以使用细粒度的审计来监控对表中某些行或列的访问,而不仅仅是是否访问表。

和审计相关的主要参数

sql>show parameter audit

audit_file_dest
audit_sys_operations
audit_trail


audit_sys_operations
默认为false,当设置为true时,所有sys用户包括以sysdba,sysoper身份登录用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

audit_trail
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。

10g Values:

  • none

    Disables database auditing.

  • os

    Enables database auditing and directs all audit records to the operating system's audit trail.

  • db

    Enables database auditing and directs all audit records to the database audit trail (theSYS.AUD$table).

  • db,extended

    Enables database auditing and directs all audit records to the database audit trail (theSYS.AUD$table). In addition,populates thesqlBINDandsqlTEXTCLOB columns of theSYS.AUD$table.

  • xml

    Enables database auditing and writes all audit records to XML format OS files.

  • xml,extended

    Enables database auditing and prints all columns of the audit trail,including sqlText and sqlBind values.

注:参数AUDIT_TRAIL不是动态的,为了使AUDIT_TRAIL参数中的改动生效,必须关闭数据库并重新启动。在对SYS.AUD$表进行审计时,应该注意监控该表的大小,以避免影响SYS表空间中其他对象的空间需求。推荐周期性归档SYS.AUD$中的行,并且截取该表。Oracle提供了角色 DELETE_CATALOG_ROLE,和批处理作业中的特殊账户一起使用,用于归档和截取审计表。

audit_file_dest:Audit_trail=OS时 文件位置

1.语句审计

所有类型的审计都使用audit命令来打开审计,使用noaudit命令来关闭审计。对于语句审计,audit命令的格式看起来如下所示:

AUDIT sql_statement_clause BY {SESSION | ACCESS}
WHENEVER [NOT] SUCCESSFUL;
@H_404_24@

sql_statement_clause包含很多条不同的信息,例如希望审计的sql语句类型以及审计什 么人。

此外,希望在每次动作发生时都对其进行审计(by access)或者只审计一次(by session)。默认是by session。

有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加whenever successful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用 whenever not successful。

对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。

表1列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定all,则审计该列表中的任何语句。然而,表2中的语句类型在启用审计时不属于all类别;必须在audit命令中显式地指定它们。

表1 包括在ALL类别中的可审计语句

@H_404_24@

sql操作

@H_404_24@

ALTER SYSTEM

@H_404_24@

所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话

@H_404_24@

CLUSTER

@H_404_24@

CREATE、ALTER、DROP或TRUNCATE集群

@H_404_24@

CONTEXT

@H_404_24@

CREATE CONTEXT或DROP CONTEXT

@H_404_24@

DATABASE LINK

@H_404_24@

CREATE或DROP数据库链接

@H_404_24@

DIMENSION

@H_404_24@

CREATE、ALTER或DROP维数

@H_404_24@

DIRECTORY

@H_404_24@

CREATE或DROP目录

@H_404_24@

INDEX

@H_404_24@

CREATE、ALTER或DROP索引

@H_404_24@

MATERIALIZED VIEW

@H_404_24@

CREATE、ALTER或DROP物化视图

@H_404_24@

NOT EXISTS

@H_404_24@

由于不存在的引用对象而造成的sql语句的失败

@H_404_24@

PROCEDURE

@H_404_24@

CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE

@H_404_24@

PROFILE

@H_404_24@

CREATE、ALTER或DROP配置文件

@H_404_24@

PUBLIC DATABASE LINK

@H_404_24@

CREATE或DROP公有数据库链接

@H_404_24@

PUBLIC SYNONYM

@H_404_24@

CREATE或DROP公有同义词

@H_404_24@

ROLE

@H_404_24@

CREATE、ALTER、DROP或SET角色

@H_404_24@

ROLLBACK SEGMENT

@H_404_24@

CREATE、ALTER或DROP回滚段

@H_404_24@

SEQUENCE

@H_404_24@

CREATE或DROP序列

@H_404_24@

SESSION

@H_404_24@

登录退出

@H_404_24@

SYNONYM

@H_404_24@

CREATE或DROP同义词

@H_404_24@

SYSTEM AUDIT

@H_404_24@

系统权限的AUDIT或NOAUDIT

@H_404_24@

SYSTEM GRANT

@H_404_24@

GRANT或REVOKE系统权限和角色

@H_404_24@

TABLE

@H_404_24@

CREATE、DROP或TRUNCATE表

@H_404_24@

TABLESPACE

@H_404_24@

CREATE、ALTER或DROP表空间

@H_404_24@

TRIGGER

@H_404_24@

CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE

@H_404_24@

TYPE

@H_404_24@

CREATE、ALTER和DROP类型以及类型主体

@H_404_24@

USER

@H_404_24@

CREATE、ALTER或DROP用户

@H_404_24@

VIEW

@H_404_24@

CREATE或DROP视图

@H_404_24@

表2 显式指定的语句类型

@H_404_24@

sql

@H_404_24@

ALTER SEQUENCE

@H_404_24@

任何ALTER SEQUENCE命令

@H_404_24@

ALTER TABLE

@H_404_24@

任何ALTER TABLE命令

@H_404_24@

COMMENT TABLE

@H_404_24@

添加注释到表、视图、物化视图或它们中的任何列

@H_404_24@

DELETE TABLE

@H_404_24@

删除表或视图中的行

@H_404_24@

EXECUTE PROCEDURE

@H_404_24@

执行程序包中的过程、函数或任何变量或游标

@H_404_24@

GRANT DIRECTORY

@H_404_24@

GRANT或REVOKE DIRECTORY对象上的权限

@H_404_24@

GRANT PROCEDURE

@H_404_24@

GRANT或REVOKE过程、函数或程序包上的权限

@H_404_24@

GRANT SEQUENCE

@H_404_24@

GRANT或REVOKE序列上的权限

@H_404_24@

GRANT TABLE

@H_404_24@

GRANT或REVOKE表、视图或物化视图上的权限

@H_404_24@

GRANT TYPE

@H_404_24@

GRANT或REVOKE TYPE上的权限

@H_404_24@

INSERT TABLE

@H_404_24@

INSERT INTO表或视图

@H_404_24@

LOCK TABLE

@H_404_24@

表或视图上的LOCK TABLE命令

@H_404_24@

SELECT SEQUENCE

@H_404_24@

引用序列的CURRVAL或NEXTVAL的任何命令

@H_404_24@

SELECT TABLE

@H_404_24@

SELECT FROM表、视图或物化视图

@H_404_24@

UPDATE TABLE

@H_404_24@

在表或视图上执行UPDATE

@H_404_24@

一些示例可以帮助读者更清楚地了解所有这些选项。在示例数据库中,用户KSHELTON具有HR模式和其他模式中所有表上的权限。允许 KSHELTON创建其中一些表上的索引,但如果有一些与执行计划改动相关的性能问题,则需要知道何时创建这些索引。可以使用如下命令审计 KSHELTON创建的索引:

sql> audit index by kshelton;
Audit succeeded.
@H_404_24@

后面的某一天,KSHELTON在HR.JOBS表上创建了一个索引:

sql> create index job_title_idx on hr.jobs(job_title);
Index created.
@H_404_24@

检查数据字典视图DBA_AUDIT_TRAIL中的审计跟踪,可以看到KSHELTON实际上在8月12日的5:15 P.M.创建了索引:

sql> select username,to_char(timestamp,'MM/DD/YY HH24:MI') Timestamp,2      obj_name,action_name,sql_text from dba_audit_trail
3  where username = 'KSHELTON';
USERNAME    TIMESTAMP        OBJ_NAME         ACTION_NAME      sql_TEXT
---------  --------------  --------------  --------------  ----------------
KSHELTON    08/12/07 17:15  JOB_TITLE_IDX   CREATE INDEX     create index hr.
job_title_idx on
hr.jobs(job_title)
1 row selected.
@H_404_24@

注意:

从Oracle Database 11g开始,只有在初始参数AUDIT_TRAIL被设置为DB_EXTENDED时,才填充DBA_AUDIT_TRAIL中的列sql_TEXT和sql_BIND。默认情况下,AUDIT_TRAIL的值是DB。

为了关闭HR.JOBS表上KSHELTON的审计,可以使用noaudit命令,如下所示:

sql> noaudit index by kshelton;
Noaudit succeeded.
@H_404_24@

也可能希望按常规方式审计成功的和不成功的登录,这需要两个audit命令:

sql> audit session whenever successful;
Audit succeeded.
sql> audit session whenever not successful;
Audit succeeded.
@H_404_24@

2.权限审计

审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clause中,而不是在语句中,指定系统权限。

例如,可能希望将ALTER TABLESPACE权限授予所有的DBA,但希望在发生这种情况时生成审计记录。启用对这种权限的审计的命令看起来类似于语句审计:

sql> audit alter tablespace by access whenever successful;
Audit succeeded.
@H_404_24@

每次成功使用ALTER TABLESPACE权限时,都会将一行内容添加到SYS.AUD$。

使用SYSDBA和SYSOPER权限或者以SYS用户连接到数据库的系统@R_301_452@可以利用特殊的审计。为了启用这种额外的审计级别,可以设置初始参数AUDIT_SYS_OPERATIONS为TRUE。这种审计记录发送到与操作系统审计记录相同的位置。因此,这个位置是和操作系统相关的。当使用其中一种权限时执行的所有sql语句,以及作为用户SYS执行的任何sql语句,都会发送到操作系统审计位置。

模式对象审计

审计对各种模式对象的访问看起来类似于语句审计和权限审计:

AUDIT schema_object_clause BY {SESSION | ACCESS}
WHENEVER [NOT] SUCCESSFUL;
@H_404_24@

schema_object_clause指定对象访问的类型以及访问的对象。可以审计特定对象上14种不同的操作类型,下表中列出了这些操作。

@H_404_24@

@H_404_24@

ALTER

@H_404_24@

改变表、序列或物化视图

@H_404_24@

AUDIT

@H_404_24@

审计任何对象上的命令

@H_404_24@

COMMENT

@H_404_24@

添加注释到表、视图或物化视图

@H_404_24@

DELETE

@H_404_24@

从表、视图或物化视图中删除

@H_404_24@

EXECUTE

@H_404_24@

执行过程、函数或程序包

@H_404_24@

FLASHBACK

@H_404_24@

执行表或视图上的闪回操作

@H_404_24@

GRANT

@H_404_24@

授予任何类型对象上的权限

@H_404_24@

INDEX

@H_404_24@

创建表或物化视图上的索引

@H_404_24@

INSERT

@H_404_24@

将行插入表、视图或物化视图中

@H_404_24@

LOCK

@H_404_24@

锁定表、视图或物化视图

@H_404_24@

READ

@H_404_24@

对DIRECTORY对象的内容执行读操作

@H_404_24@

RENAME

@H_404_24@

重命名表、视图或过程

@H_404_24@

SELECT

@H_404_24@

从表、视图、序列或物化视图中选择行

@H_404_24@

UPDATE

@H_404_24@

更新表、视图或物化视图

@H_404_24@

如果希望审计HR.JOBS表上的所有insert和update命令,而不管谁正在进行更新,则每次该动作发生时,都可以使用如下所示的audit命令:

sql> audit insert,update on hr.jobs by access whenever successful;
Audit successful.
@H_404_24@

用户KSHELTON决定向HR.JOBS表添加两个新行:

sql> insert into hr.jobs (job_id,job_title,min_salary,max_salary)
2 values ('IN_CFO','Internet Chief Fun Officer',7500,50000);
1 row created.
sql> insert into hr.jobs (job_id,max_salary)
2 values ('OE_VLD','Order Entry CC Validation',5500,20000);
1 row created.
@H_404_24@

查看DBA_AUDIT_TRAIL视图,可以看到KSHELTON会话中的两个insert命令:

USERNAME TIMESTAMP OWNER OBJ_NAME ACTION_NAME
sql_TEXT
---------- -------------- -------- ---------- ---------------
---------------------------------------------------------------
KSHELTON 08/12/07 22:54 HR JOBS INSERT
insert into hr.jobs (job_id,max_salary)
values ('IN_CFO',50000);
KSHELTON 08/12/07 22:53 HR JOBS INSERT
insert into hr.jobs (job_id,max_salary)
values ('OE_VLD',20000);
KSHELTON 08/12/07 22:51 logoN

3 rows selected.

@H_404_24@


4.细粒度的审计

从Oracle9i开始,通过引入细粒度的对象审计,或称为FGA,审计变得更为关注某个方面,并且更为精确。由称为DBMS_FGA的PL/sql程序包实现FGA。

使用标准的审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列。通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量

程序包DBMS_FGA具有4个过程:

ADD_POLICY

@H_404_24@

添加使用谓词和审计列的审计策略

@H_404_24@

DROP_POLICY

@H_404_24@

删除审计策略

@H_404_24@

DISABLE_POLICY

@H_404_24@

禁用审计策略,但保留与表或视图关联的策略

@H_404_24@

ENABLE_POLICY

@H_404_24@

启用策略

@H_404_24@

用户TAMARA通常每天访问HR.EMPLOYEES表,查找雇员的电子邮件地址。系统@R_301_452@怀疑TAMARA正在查看经理们的薪水信息,因此他们建立一个FGA策略,用于审计任何经理对SALARY列的任何访问:

begin
dbms_fga.add_policy(
object_schema => 'HR',object_name => 'EMPLOYEES',policy_name => 'SAL_SELECT_AUDIT',audit_condition => 'instr(job_id,''_MAN'') > 0',audit_column => 'SALARY'
);
end;
@H_404_24@

可以使用数据字典视图DBA_FGA_AUDIT_TRAIL访问细粒度审计的审计记录。如果一般需要查看标准的审计行和细粒度的审计行,则数据字典视图DBA_COMMON_AUDIT_TRAIL结合了这两种审计类型中的行。

继续看示例,用户TAMARA运行了如下两个SQL查询

sql> select employee_id,first_name,last_name,email from hr.employees
2 where employee_id = 114;
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
----------- ------------------ --------------------- --------------
114 Den Raphaely DRAPHEAL
1 row selected.
sql> select employee_id,salary from hr.employees
2 where employee_id = 114;
EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY
----------- ------------------ ----------------------- ----------
114 Den Raphaely 11000
1 row selected.
@H_404_24@

第一个查询访问经理信息,但没有访问SALARY列。第二个查询与第一个查询相同,但是访问了SALARY列,因此触发了FGA策略,从而在审计跟踪中生成了一行:

sql> select to_char(timestamp,'mm/dd/yy hh24:mi') timestamp,2 object_schema,object_name,policy_name,statement_type
3 from dba_fga_audit_trail
4 where db_user = 'TAMARA';
TIMESTAMP OBJECT_SCHEMA OBJECT_NAME POLICY_NAME STATEMENT_TYPE
-------------- ------------- ------------- ------------------------------
08/12/07 18:07 HR EMPLOYEES SAL_SELECT_AUDITSELECT
1 row selected.
@H_404_24@

因为在本章前面的VPD示例中建立了细粒度的访问控制来阻止对SALARY列的未授权访问,因此需要加倍检查策略函数,确保仍然正确限制了SALARY信息。细粒度的审计以及标准审计是确保首先正确建立授权策略的好方法

5.与审计相关的数据字典视图

下表包含了与审计相关的数据字典视图。

数据字典视图

@H_404_24@

@H_404_24@

AUDIT_ACTIONS

@H_404_24@

包含审计跟踪动作类型代码的描述,例如INSERT、DROP VIEW、DELETE、logoN和LOCK

@H_404_24@

DBA_AUDIT_OBJECT

@H_404_24@

数据库中对象相关的审计跟踪记录

@H_404_24@

DBA_AUDIT_POLICIES

@H_404_24@

数据库中的细粒度审计策略

@H_404_24@

DBA_AUDIT_SESSION

@H_404_24@

与CONNECT和DISCONNECT相关的所有审计跟踪记录

@H_404_24@

DBA_AUDIT_STATEMENT

@H_404_24@

与GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM命令相关的审计跟踪条目

@H_404_24@

DBA_AUDIT_TRAIL

@H_404_24@

包含标准审计跟踪条目。USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已连接用户的审计行

@H_404_24@

DBA_FGA_AUDIT_TRAIL

@H_404_24@

细粒度审计策略的审计跟踪条目

@H_404_24@

(续表)

数据字典视图

@H_404_24@

@H_404_24@

DBA_COMMON_AUDIT_TRAIL

@H_404_24@

将标准的审计行和细粒度的审计行结合在一个视图中

@H_404_24@

DBA_OBJ_AUDIT_OPTS

@H_404_24@

数据库对象生效的审计选项

@H_404_24@

DBA_PRIV_AUDIT_OPTS

@H_404_24@

对系统权限生效的审计选项

@H_404_24@

DBA_STMT_AUDIT_OPTS

@H_404_24@

对语句生效的审计选项

@H_404_24@

6.保护审计跟踪

审计跟踪自身需要受到保护,特别是在非系统用户必须访问表SYS.AUD$时。内置的角色DELETE_ANY_CATALOG是非SYS用户可以访问审计跟踪的一种方法(例如,归档和截取审计跟踪,以确保它不会影响到SYS表空间中其他对象的空间需求)。

为了建立对审计跟踪自身的审计,以SYSDBA身份连接到数据库,并运行下面的命令:

sql> audit all on sys.aud$ by access;
Audit succeeded.
@H_404_24@

现在,所有针对表SYS.AUD$的动作,包括select、insert、update和delete,都记录在SYS.AUD$自身中。但是,您可能会问,如果某个人删除了标识对表SYS.AUD$访问的审计记录,这时会发生什么?此时将删除表中的行,但接着插入另一行,记录行的删除。因此,总是存在一些针对SYS.AUD$表的(有意的或偶然的)活动的证据。此外,如果将AUDIT_SYS _OPERATIONS设置为True,使用as sysdba、as sysoper或以SYS自身连接的任何会话将记录到操作系统审计位置中,甚至Oracle DBA可能都无法访问该位置。因此,有许多合适的安全措施,用于确保记录数据库中所有权限的活动,以及隐藏该活动的任何尝试。

7.启用增强的审计

从Oracle Database 11g开始,数据库配置助手(Database Configuration Assistant,DBCA)很容易启用默认的(增强的)审计。虽然记录审计信息有一些系统开销,但兼容性需求(例如,Sarbanes-Oxley法案中规定的兼容性需求)要求严格监控所有业务操作,包括数据库中与安全相关的操作。

可以在创建数据库时或在数据库已经创建之后使用DBCA配置默认审计。如果已经改变了很多审计设置,并想要将审计选项重置为基线值,则在数据库已创建之后使用DBCA配置默认审计就非常有用。

除将初始参数AUDIT_TRAIL的值设置为DB外,默认审计设置还审计audit role命令本身。另外,在Audited Privileges选项卡的Oracle Enterprise Manager Audit Settings页面中,可以查看默认的审计权限。

补充说明:
8、实例讲解

8.1、激活审计

审计相关的表安装

sqlPLUS>connect/ASSYSDBA

sqlPLUS>select*fromsys.aud$;--没有记录返回

sqlPLUS>select*fromdba_audit_trail;-没有记录返回

如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。

sqlPLUS>connect/assysdba

sqlPLUS>@$ORACLE_HOME/rdbms/admin/cataudit.sql

审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。

安装后要重启数据库

将审计相关的表移动到其他表空间

由于AUD$表等审计相关的表存放在SYSTEM表空间,因此为了不影响系统的性能,保护SYSTEM表空间,最好把AUD$移动到其他的表空间上。可以使用下面的语句来进行移动:

sql>connect/assysdba;

sql>altertableaud$movetablespace;

sql>alterindexI_aud1rebuildonlinetablespace;

sql>altertableaudit$movetablespace;

sql>alterindexi_auditrebuildonlinetablespace;

sql>altertableaudit_actionsmovetablespace;

sql>alterindexi_audit_actionsrebuildonlinetablespace;
sql> conn /as sysdba
sql> show parameter audit
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/app/oracle/admin/ORCL/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string NONE
sql> alter system set audit_sys_operations=TRUE scope=spfile; --审计管理用户(以sysdba/sysoper角色登陆)
sql> alter system set audit_trail=db,extended scope=spfile;
sql> startup force;
audit_sys_operations boolean TRUE
audit_trail string DB,EXTENDED
8.2、开始审计
sql> audit all on t_test;
sql> conn u_test
sql> select * from t_test;
sql> insert into u_test.t_test (c2,c5) values ('test1','2');
sql> commit;
sql> delete from u_test.t_test;
sql> col DEST_NAME format a30
col OS_USERNAME format a15
col USERNAME format a15
col USERHOST format a15
col TERMINAL format a15
col OBJ_NAME format a30
col sql_TEXT format a60
sql> select OS_USERNAME,username,USERHOST,TERMINAL,TIMESTAMP,OWNER,obj_name,ACTION_NAME,sessionid,os_process,sql_text from dba_audit_trail;
sql> audit select table by u_test by access;
如果在命令后面添加by user则只对user的操作进行审计,如果省去by用户,则对系统中所有的用户进行审计(不包含sys用户).
例:
AUDIT DELETE ANY TABLE; --审计删除表的操作
AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL; --只审计删除失败的情况
AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL; --只审计删除成功的情况
AUDIT DELETE,UPDATE,INSERT ON user.table by test; --审计test用户对表user.table的delete,update,insert操作
8.3、撤销审计
sql> noaudit all on t_test;
9、审计语句
多层环境下的审计:appserve-应用服务器,jackson-client
AUDIT SELECT TABLE BY appserve ON BEHALF OF jackson;
审计连接或断开连接:
AUDIT SESSION;
AUDIT SESSION BY jeff,lori; -- 指定用户
审计权限(使用该权限才能执行的操作):
AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;
AUDIT DELETE ANY TABLE;
AUDIT SELECT TABLE,INSERT TABLE,DELETE TABLE,EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;
对象审计:
AUDIT DELETE ON jeff.emp;
AUDIT SELECT,INSERT,DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;
取消审计:
NOAUDIT session;
NOAUDIT session BY jeff,lori;
NOAUDIT DELETE ANY TABLE;
NOAUDIT SELECT TABLE,EXECUTE PROCEDURE;
NOAUDIT ALL; -- 取消所有statement审计
NOAUDIT ALL PRIVILEGES; -- 取消所有权限审计
NOAUDIT ALL ON DEFAULT; -- 取消所有对象审计
10、清除审计信息
DELETE FROM SYS.AUD$;
DELETE FROM SYS.AUD$ WHERE obj$name='EMP';
11、审计视图
STMT_AUDIT_OPTION_MAP -- 审计选项类型代码
AUDIT_ACTIONS -- action代码
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 -- session审计
DBA_AUDIT_STATEMENT
USER_AUDIT_STATEMENT -- 语句审计
DBA_AUDIT_EXISTS -- 使用BY AUDIT NOT EXISTS选项的审计
DBA_AUDIT_POLICIES -- 审计POLICIES
DBA_COMMON_AUDIT_TRAIL -- 标准审计+精细审计
12、将审计结果表从system表空间里移动到别的表空间上
实际上sys.aud$表上包含了两个lob字段,并不是简单的move table就可以。
下面是具体的过程:
alter table sys.aud$ move tablespace users;
alter table sys.aud$ move lob(sqlbind) store as( tablespace USERS);
alter table sys.aud$ move lob(sqlTEXT) store as( tablespace USERS);
alter index sys.I_AUD1 rebuild tablespace users;

alter index sys.I_AUD1 rebuild tablespace users;

猜你在找的Oracle相关文章