ITPub博客

首页 > Linux操作系统 > Linux操作系统 > oracle 数据库 审计

oracle 数据库 审计

原创 Linux操作系统 作者:leexiaodong 时间:2009-11-05 15:01:57 0 删除 编辑

16.审计

运行oracle数据库时,各类人员经常会以数据库用户的身份登陆到数据库,并执行各种数据库操作(DML,DDL,DCL).为了跟踪数据库用户所执行的各种数据库操作,防止用户执行非法操作,可以使用数据库审计(Audit),审计用于监视用户所执行的数据库操作.并且oracle会将审计跟踪结果放到OS文件或数据库中.



审计分为:

特权用户审计

默认情况下,oracle会自动审计特权用户所执行的特权操作,并将特权操作的相关信息记载到操作系统的审计跟踪记录中,为了审计特权用户所执行的其他数据库操作,必须设置初始化参数audit_sys_operations.

数据库审计

为了审计数据库用户所执行的操作,必须设置初始化参数AUDIT_TRAIL,并且指定要审计的数据库操作.

应用审计.

使用数据库审计时,oracle只会记载执行审计操作的用户名,数据库操作,操作对象以及操作时间等信息.而不会记载数据的变化.为了审计数据变化,必须使用应用审计.

1,特权用户审计

默认情况下,oracle只会审计特权用户的连接,启动数据库和关闭数据库的操作.为了审计特权用户执行的其他操作信息.必须将初始化参数AUDIT_SYS_OPERATIONS设置为TRUE.因为该参数是静态参数,所有修改了该初始化参数户必须重庆数据库.

ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE;


2,数据库审计.

激活数据库审计

为了激活数据库审计,必须修改初始化参数AUDIT_TRAIL.该初始化参数的默认值为NONE,为了激活数据库审计,必须将该参数设置为OS或DB.设置初始化参数为DB时,oracle会将审计结果存放到数据字典AUD$中.

ALTER SYSTEM SET audit_trail=db SCOPE=SPFILE;


指定审计选项.

BY SESSION:该选项表示在同一个会话中对完全相同的SQL语句只生成一条审计跟踪记录,该选项是默认选择.

BY ACCESS:该选项标识每执行一次语句生成一条审计跟踪记录.当审计DDL语句或DDL系统权限时,无论指定BY ACCESS 还是 BY SESSION选项.oracle总是使用BY ACCESS选项.

BY 用户名:该选项用于指定审计特定的数据库用户.如果不指定该选项.oracle会自动审计除特权用户外的所有其他用户.

WHENEVER [NOT] SUCCESSFUL: WHENEVER SUCCESSFUL选项用于指定审计执行成功的操作,WHENEVER NOT SUCCESSFUL选项用于指定审计失败的操作.如果忽略这两个选项,则操作无论成功与否都会被审计.


语句审计

语句审计用于审计与特定语句相关的SQL操作.例如,当指定审计USER语句时,oracle会审计CREATE USER,ALTER USER和DROP USER等操作

1,设置语句审计

SQL>AUDIT TABLE;

2,执行语句操作

3,显示审计跟踪结果.

激活数据库审计后,审计跟踪会被记载到数据字典表SYS.AUD$中.通过查询数据字典dba_audit_trail,可以取得审计跟踪结果,包括OS用户名,数据库用户名,操作名,对象名以及操作时间等信息.

SELECT username,action_name,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

USERNAME 用于标识执行SQL操作的数据库用户名,ACTION_NAME用于标识具体的SQL操作,OBJ_NAME用于标识SQL操作对应的数据库对象,TIMESTAMP用于标识SQL操作的执行时间.

4,显示以及设置的审计选项.

SELECT user_name,audit_option FROM dba_stmt_audit_opts;

USER_NAME用于标识被审计的数据库用户名(空表示审计所有用户),AUDIT_OPTION用于标识以及被设置的选项.

5,禁止语句审计

SQL>NOAUDIT TABLE;

权限审计

权限审计用于审计与系统权限相关的SQL操作

1,指定权限审计

AUDIT CREATE TABLE;

2,执行语句操作

3,显示审计跟踪结果.

激活数据库审计后,审计跟踪会被记载到数据字典表SYS.AUD$中.通过查询数据字典dba_audit_trail,可以取得审计跟踪结果,包括OS用户名,数据库用户名,操作名,对象名以及操作时间等信息.

SELECT username,action_name,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

USERNAME 用于标识执行SQL操作的数据库用户名,ACTION_NAME用于标识具体的SQL操作,OBJ_NAME用于标识SQL操作对应的数据库对象,TIMESTAMP用于标识SQL操作的执行时间.

4,显示以及设置的审计选项.

SELECT user_name,privilege FROM dba_priv_audit_opts;

USER_NAME用于标识被审计的数据库用户名(空表示审计所有用户),PRIVILEGE用于标识以及被设置的选项.

5,禁止语句审计

SQL>NOAUDIT CREATE TABLE;


对象审计

对象审计用于审计特定方案对象上的SQL操作.使用对象审计时,默认情况下,在同一个会话中相同SQL语句只被审计一次,为了审计每条被执行的SQL语句,需要指定BY ACCESS选项.

1,设置对象审计

AUDIT ALL ON scott.emp;

2,执行与对象审计相关的操作

3,查询审计跟踪记录

SELECT username,ses_actions,obj_name,

To_char(timestamp,’YYYY-MM_DD HH24:MI’)

FROM dba_audit_trail;

SES_ACTIONS用于标识会话的SQL操作.

4,显示以及设置的对象审计选项.

SELECT sel, ins, upd, del FROM dba_obj_audit_opts

WHERE wner=’scott’ AND object_name=’EMP’;

SEL用于标识SELECT审计选项,INS用于标识INSERT审计选项,UPD用于标识UPDATE审计选项,DEL用于标识UPDATE审计选项,OWNER用于标识对象所有者,OBJECT_NAME用于标识对象名.

5,禁止对象审计

NOAUDIT ALL ON scott.emp;


删除审计跟踪

DELETE FROM sys.aud$;

COMMIT;

使用精细审计(省略)


使用对象审计(省略)

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

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

注册时间:2009-08-13

  • 博文量
    64
  • 访问量
    122007