Oracle审计

1.什么是审计

审计是用来监控和记录用户的数据库操作

2.未开启审计

即使未开启审计,Oracle数据库也会将以下三种操作记录在OS的$ORACLE_BASE/admin/$ORACLE_SID/adump/

  • 以sysdba或者sysoper等管理员用户连接数据库实例(不管实例是否打开)
  • 关闭数据库操作
  • 打开数据库操作

3.标准审计

3.1.数据库参数

  • audit_file_dest

    OS中审计信息存放位置

  • audit_sys_operations

    默认值为FALSE,即不审计,修改后需要重启数据库

    审计sys(或者以sysdba,sysoper身份登录)用户的所有操作(查询表,更新表等等)

    审计信息放在OS中

  • audit_trail

    none:关闭标准审计,11G之前的默认值

    db:将审计信息记录在数据库中(sys.aud$),只包含连接信息(LOGON,LOGOFF),但不包含以sysdba或者sysoper连接的信息(记录在OS中)

    db,extended:将审计信息记录在数据库中,同时包含执行的SQL以及绑定变量

    os:将审计信息记录在OS中

    xml:以XML的形式将审计信息记录在OS中

    xml,extended:以XML的形式将审计信息记录在OS中,同时记录执行的SQL以及绑定变量

3.2.审计级别

3.1节中,audit_trail为db,extended或者xml,extended时,可以记录额外的SQL信息,前提是开启了语句,权限或者对象审计

  1. 语句级别

    对某种类型的SQL语句进行审计但并不包含具体的对象

  2. 权限级别

    任何使用了这个权限的都会被审计

  3. 对象级别

    对数据库对象进行审计

3.3.审计用SQL

/*语句级别*/
-- 审计所有对表的操作,例如修改,创建,删除表
audit table;
-- 取消审计
noaudit table;

/*权限级别*/
-- 审计所有使用此权限的操作
audit select any table;
-- 取消审计
noaudit select any table;

/*对象级别*/
-- 审计某个表增删改查的操作
aduit select,update,insert,delete on monkey.test;
-- 取消审计
noaudit select,update,insert,delete on monkey.test;

/*通用部分*/
by access  --每一个被审计的操作都会生成一条audit trail
by session --一个会话里面同类型的操作只会生成一条audit trail,默认为by session
whenever successful --操作成功才审计
whenever not successful --操作失败才审计

3.4.标准审计相关视图

  • DBA_OBJ_AUDIT_OPTS

    对象级别标准审计的策略

  • DBA_STMT_AUDIT_OPTS

    语句级别标准审计的策略

  • DBA_PRIV_AUDIT_OPTS

    权限级别标准审计策略

  • DBA_AUDIT_OBJECT

    对象级别标准审计记录

  • DBA_AUDIT_STATEMENT

    语句级别标准审计记录

  • DBA_AUDIT_SESSION

    登录登出标准审计记录(普通用户,以SYSDBA或者SYSOPER的用户不记录)

  • DBA_AUDIT_TRAIL

    所有的标准审计记录

4.精细审计

FGA(fine grained auditing),可以指定更加精细的审计策略

参考:FGA审计

原文地址:https://www.cnblogs.com/monkey6/p/15740272.html