ITPub博客

首页 > 数据库 > Oracle > AUDIT审计(2)

AUDIT审计(2)

原创 Oracle 作者:zr2095 时间:2015-10-24 09:55:03 0 删除 编辑

二、审计位置

审计记录可以发送到SYS.AUD$数据库表或操作系统文件。为了启用审计并指定记录审计记录的位置,将初始参数AUDIT_TRAIL 设置为如下几个值之一:

NONE, FALSE

 禁用审计

OS

启用审计,将审计记录发送到操作系统文件

DB, TRUE

 启用审计,将审计记录发送到SYS.AUD$表

DB_EXTENDED

启用审计,将审计记录发送到SYS.AUD$表,并在CLOB 列SQLBIND 和SQLTEXT 中记录额外的信息

XML

 启用审计,以XML 格式写所有审计记录

EXTENDED

 启用审计,在审计跟踪中记录所有列,包括SqlText 和SqlBind 的值

 

参数AUDIT_TRAIL 不是动态的,为了使AUDIT_TRAIL 参数中的改动生效,必须关闭数据库并重新启动。在对SYS.AUD$表进行审计时,应该注意监控该表的大小,以避免影响SYS 表空间中其他对象的空间需求。推荐周期性归档SYS.AUD$中的行,并且截取该表。

 

在Oracle11g 中CREATE SESSION 作为受审计的权限来被记录,因此当SYSTEM 表空间因磁盘空间而无法扩展时将导致这部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。在这种场景中仍可以使用SYSDBA 身份的用户创建会话,在将审计数据合适备份后删除一部分记录,或者TRUNCATE AUD$都可以解决上述问题。在默认情况下会以AUTOEXTEND ON 自动扩展选项创建SYSTEM 表空间,因此系统表空间在必要时会自动增长,我们所需注意的是磁盘上的剩余空间是否能够满足其增长需求,以及数据文件扩展的上限,对于普通的8k smallfile 表空间而言单个数据文件的最大尺寸是32G。

 

三、开户审计功能

SQL> alter system set audit_trail=db_extended scope=spfile;

重启数据库生效:

SQL> startup force

 

四、语句审计:

对于语句审计,audit 命令的格式看起来如下所示:

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

参数如下:

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

by access 在每次动作发生时都对其进行审计,by session 只审计一次。默认是by session。

whenever successful 审计成功的动作:没有生成错误消息的语句。

whenever not successful 审计语句的命令是否失败

 

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

 

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

 

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

语 句 选 项

SQL 操作

ALTER SYSTEM

所有ALTER SYSTEM 选项,例如,动态改变实例参

数,切换到下一个日志文件组,以及终止用户会话

CLUSTER

CREATE、ALTER、DROP 或TRUNCATE 集群

CONTEXT

CREATE CONTEXT 或DROP CONTEXT

DATABASE LINK

CREATE 或DROP 数据库链接

DIMENSION

CREATE、ALTER 或DROP 维数

DIRECTORY

 CREATE 或DROP 目录

INDEX

CREATE、ALTER 或DROP 索引

MATERIALIZED VIEW

CREATE、ALTER 或DROP 物化视图

NOT EXISTS

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

PROCEDURE

 CREATE 或DROP FUNCTION、LIBRARY、PACKAGE、

PACKAGE BODY 或PROCEDURE

PROFILE

 CREATE、ALTER 或DROP 配置文件

PUBLIC DATABASE LINK

CREATE 或DROP 公有数据库链接

PUBLIC SYNONYM

 CREATE 或DROP 公有同义词

ROLE

CREATE、ALTER、DROP 或SET 角色

ROLLBACK

SEGMENT CREATE、ALTER 或DROP 回滚段

SEQUENCE

 CREATE 或DROP 序列

SESSION

 登录和退出

SYNONYM

 CREATE 或DROP 同义词

SYSTEM

 AUDIT 系统权限的AUDIT 或NOAUDIT

SYSTEM GRANT

 GRANT 或REVOKE 系统权限和角色

TABLE

CREATE、DROP 或TRUNCATE 表

TABLESPACE

 CREATE、ALTER 或DROP 表空间

TRIGGER

 CREATE、ALTER(启用/禁用)、DROP 触发器;具有

ENABLE ALL TRIGGERS 或DISABLE ALL

TRIGGERS 的ALTER TABLE

TYPE

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

USER

CREATE、ALTER 或DROP 用户

VIEW

CREATE 或DROP 视图

 

 

 

表1-2 显式指定的语句类型

语 句 选 项

SQL 操 作

ALTER SEQUENCE

 任何ALTER SEQUENCE 命令

ALTER TABLE

任何ALTER TABLE 命令

COMMENT TABLE

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

DELETE TABLE

 删除表或视图中的行

EXECUTE PROCEDURE

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

GRANT DIRECTORY

 GRANT 或REVOKE DIRECTORY 对象上的权限

GRANT PROCEDURE

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

GRANT SEQUENCE

GRANT 或REVOKE 序列上的权限

GRANT TABLE

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

GRANT TYPE

 GRANT 或REVOKE TYPE 上的权限

INSERT TABLE

 INSERT INTO 表或视图

LOCK TABLE

 表或视图上的LOCK TABLE 命令

SELECT SEQUENCE

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

SELECT TABLE

 SELECT FROM 表、视图或物化视图

UPDATE TABLE

 在表或视图上执行UPDATE

 

注意:

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

 

示例:

[oracle@ocp Desktop]$ rlwrap sqlplus / as sysdba

SYS@orcl>show parameter audit_trail

SYS@orcl> alter system set audit_trail=db_extended

scope=spfile;

SYS@orcl> startup force

SYS@orcl>show parameter audit_trail

SYS@orcl> alter user scott account unlock identified by

scott;

SYS@orcl> audit create table by scott by access;

SYS@orcl>select user_name,audit_option,success,failure from

dba_stmt_audit_opts where user_name='SCOTT';

SYS@orcl> conn scott/scott

SCOTT@orcl> create table tt(id int);

SCOTT@orcl> conn / as sysdba

SYS@orcl>select username,to_char(timestamp,'MM/DD/YY

HH24:MI') Timestamp,obj_name, action_name, sql_text from

dba_audit_trail where username= 'SCOTT';

 

使用noaudit 命令关闭审计,如下所示:

SYS@orcl> noaudit create table by scott;

SYS@orcl> conn scott/scott

SCOTT@orcl> create table ee(id int);

SCOTT@orcl> conn / as sysdba

SYS@orcl>select username,to_char(timestamp,'MM/DD/YY

HH24:MI') Timestamp,obj_name, action_name, sql_text from

dba_audit_trail where username= 'SCOTT';

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30208428/viewspace-1815992/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2015-04-15

  • 博文量
    163
  • 访问量
    468365