首页 > Linux操作系统 > Linux操作系统 > oracle 数据库 审计
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/ ,如需转载,请注明出处,否则将追究法律责任。