Oracle Audit

Oracle标准数据库审计

一、开启审计
1、查看是否开启审计功能

select * from sys.aud$;
select * from dba_audit_trail;

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

显示audit_trail=none,所以没有开启审计。

2、启动审计
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; --生产环境不允许
SQL> show parameter audit
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/ORCL/adump
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      DB, EXTENDED    

审计线索audit_trail可以设置为
• NONE
• OS
• DB
• DB,EXTENDED
• XML
• XML,EXTENDED

3、清空审计信息
truncate table sys.aud$;


二、语句审计

1、授予语句审计
audit table;--审计数据库中所有的create table,drop table,truncate table语句
alter session by mid_sc;--会审计mid_sc用户所有的数据库连接

2、语句审计从下一个会话开始生效,需要退出当前会话,重新登录

3、查询审计信息
select *
from dba_audit_trail a
where owner='SCOTT' and obj_name='T3'
order by a.timestamp desc;

4、取消语句审计
audit table;


三、对象权限审计

1、授予对象权限审计
语法:audit object_privilege_clause on user_name.column [by session|access] [whenever [not] successful]
其中object_privilege_clause是对象权限

例子audit all on scott.t3;--此处的ALL包括增删改查
--audit update,delete on scott.t3

2、查看有哪些对象审计权限和对哪些用户进行了对象权限审计
select * from DBA_OBJ_AUDIT_OPTS;

3、对象权限审计即时生效

4、查询审计信息
select *
from dba_audit_trail a
where owner='SCOTT' and obj_name='T3'
order by a.timestamp desc;

5、取消对象权限审计
noaudit delete,insert on liut.TEMP_LIUTAO;--取消关于此表delete,insert的审计
noaudit all on liut.TEMP_LIUTAO;--取消关于此表所有的审计


四、系统权限审计

1、授予系统权限审计
语法:audit system_privilege_name [by user_name]| [by session|access] [whenever [not] successful]

其中system_privilege_name是系统权限

例子audit select table,delete table,update table by 用户名 by access;
--audit all by 用户名 by access;--此处的ALL并不包括增删改查
--select table包括select any table的审核范围。

2、查看基于系统权限的审计策略和对哪些用户进行了权限审计
select * from dba_priv_audit_opts;--DBA_STMT_AUDIT_OPTS?

3、系统权限审计从下一个会话开始生效,需要退出当前会话,重新登录

4、查询审计信息
select *
from dba_audit_trail a
where owner='SCOTT' and obj_name='T3'
order by a.timestamp desc;

5、取消系统权限审计
noaudit alter table by scott;

如果在命令后面添加by user_name则只对user_name的操作进行审计,如果省去by用户,则对系统中所有的用户进行审计(不包含sys用户).

例:
AUDIT DELETE ANY TABLE;    --审计删除表的操作
AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;    --只审计删除失败的情况
AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;        --只审计删除成功的情况


五、注意事项
1.对于系统权限审计和大部分语句,by session无效,无论指定by session/by access还是不指定,审计都自动为by access。
2.系统权限审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计,如需要也审核,则audit select table,此时所有select都会被审核。
3.审计的语句级可以指定ALL,但是ALL只包括大部分语句,它不包括下面这些语句。
ALTER SEQUENCE, ALTER TABLE, COMMENT TABLE, DELETE TABLE, EXECUTE PROCEDURE, GRANT DIRECTORY, GRANT PROCEDURE, GRANT SEQUENCE, GRANT TABLE, GRANT TYPE, INSERT TABLE, LOCK TABLE, SELECT SEQUENCE, SELECT TABLE, UPDATE TABLE
4.对于语句和权限审计,生效从执行语句后下一个登陆用户开始,当前的所有session不受影响。而对象的审计,则从审计语句开始后对当前所有的用户生效。
5.可以使用NOAUDIT ALL、NOAUDIT ALL PRIVILEGE取消所有的语句、权限的审计,但是如果在审计的时候指定了用户,则NOAUDIT ALL或NOAUDIT ALL PRIVILEGE的时候,不会取消这些明确用户的审计,必须在NOAUDIT的时候也明确的指出相应的用户。


六、相关表和视图:
SYS.AUD$ 是唯一保留审计结果的表。其它的都是视图。
STMT_AUDIT_OPTION_MAP 包含有关审计选项类型代码的信息由SQL.BSQ 脚本在CREATEDATABASE 的时候创建
AUDIT_ACTIONS 包含对审计跟踪动作类型代码的说明
ALL_DEF_AUDIT_OPTS 包含默认对象审计选项。当创建对象时将应用这些选项
DBA_STMT_AUDIT_OPTS 描述由用户设置的跨系统的当前系统审计选项
DBA_PRIV_AUDIT_OPTS 描述由用户正在审计的跨系统的当前系统权限
DBA_OBJ_AUDIT_OPTS 描述在所有对象上的审计选项
USER_OBJ_AUDIT_OPTS USER 视图描述当前用户拥有的所有对象上的审计选项
以下是审计记录
DBA_AUDIT_TRAIL 列出所有审计跟踪条目
USER_AUDIT_TRAIL USER视图显示与当前用户有关的审计跟踪条目
DBA_AUDIT_OBJECT 包含系统中所有对象的审计跟踪记录
USER_AUDIT_ OBJECT USER 视图列出一些审计跟踪记录而这些记录涉及当前用户可以访问的对象的语句
DBA_AUDIT_SESSION 列出涉及CONNECT 和DISCONNECT 的所有审计跟踪记录
USER_AUDIT_ SESSION USER视图列出涉及当前用户的CONNECT 和DISCONNECT 的所有审计跟踪记录
DBA_AUDIT_STATEMENT 列出涉及数据库全部的GRANT REVOKE AUDIT NOAUDIT 和ALTER SYSTEM 语句的审计跟踪记录
USER_ AUDIT_ STATEMENT 对于USER 视图来说这些语句应是用户发布的
DBA_AUDIT_EXISTS 列出BY AUDIT NOT EXISTS 产生的审计跟踪条目
下面的视图用于细粒度审计
DBA_AUDIT_POLICIES 显示系统上的所有审计策略
DBA_FGA_AUDIT_TRAIL 列出基于值的审计的审计跟踪记录


参考文献:
http://wkf41068.iteye.com/blog/1930557
http://blog.chinaunix.net/uid-20274021-id-1969578.html
http://blog.itpub.net/15880878/viewspace-720044/ (FGA)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值