数据库审计audit(PPT-I-320-334)

13.1 审计的功能:监控特定用户在database 的action(操作)

13.2 审计种类:

1)标准数据库审计(语句审计、权限审计、对象审计)
2)基于值的审计(Value-Based, 触发器审计)
3)精细审计(FGA)

13.3 启用审计(默认不启用)

09:55:23 SQL> show parameter audit

NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest string /u01/admin/timran11g/adump
audit_sys_operations boolean FALSE
audit_syslog_level string
audit_trail string DB
SQL>

audit_trail参数三个选项

1)none 不启用audit
2)db 将审计结果放在数据字典基表sys.aud$中,(一般用于审计非sys用户,也可以移出system表空间,在DB中的好处是方便检索)
3)os 将审计结果存放到操作系统的文件里(由audit_file_dest指定的位置, 一般用于审计sys)

审计sys
1)Oracle强制审计sys用户的特权操作,如启动和关闭数据库,结果记录在参数audit_file_dest指向的.aud文件中。
2)指定参数audit_sys_operations = true 和 audit_trail = os

13.4 标准数据库审计的三个级别

查看标准审计结果可以通过视图dba_audit_taile, 该视图读取aud$内容。

13.4.1 语句审计

按语句来审计,比如audit table会审计数据库中所有的create table, drop table, truncate table语句,执行成功或不成功都可审计。

SQL> audit table;

13.4.2 权限审计

按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a; 当用户a访问了用户b的表时(如select * from b.t;)
会用到select any table权限,故会被审计。用户访问自己的表不会被审计。

SQL> audit select any table;

13.4.3 对象审计

按对象审计,只审计on关键字指定对象的相关操作,如:aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审
计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。

SQL> audit update on scott.emp;

13.5 基于值的审计。

它拓展了标准数据库审计,不仅捕捉审计事件,还捕捉那些被insert,update和delete的值。由于基于值的审计是通过触发器来实现。所以你可以选择哪些信息进入审计记录,比如,只记录提交的信息,或不记录已改变的数据等。(考点)

例,记录下scott的登录轨迹。

linux下sys:
SQL> truncate table aud$;
SQL> audit session by scott;
SQL> select count(*) from aud$;

COUNT(*)
----------
0
cmd下scott:

C:\Documents and Settings\timran>sqlplus scott/scott@timran11g

linux下sys:

SQL> select count(*) from aud$;

COUNT(*)
----------
1
col username for a10;
col userhost for a30;
SQL> select username,userhost,timestamp,action_name from dba_audit_trail;

USERNAME USERHOST TIMESTAMP ACTION_NAME
---------- ------------------------------ ------------------- ----------------------------
SCOTT WORKGROUP\TIMRAN-222C75E5 2014-01-09 13:35:53 LOGON

SQL> noaudit session by scott;

13.6 精细审计Fine Grained Auditing (FGA)。它拓展了标准数据库审计,捕捉准确的SQL语句。

EM中只有标准数据库审计,目前还没有包括基于值的审计和精细审计。

13.6.1 举例:精细审计Fine Grained Auditing (FGA),审计访问特定行或特定行的特定列。操作可以使用dbms_fga包。

sys:
SQL> create table scott.emp1 as select * from scott.emp;
SQL> grant all on scott.emp1 to tim;

1)添加一个精细度审计策略

begin
dbms_fga.add_policy(
object_schema=>'scott',
object_name=>'emp1',
policy_name=>'chk_emp1',
audit_condition =>'deptno=20',
audit_column =>'sal',
statement_types =>'update,select');
end;
/

2)测试一下步骤,再查看审计结果
scott:
SQL> select * from emp1 where deptno=20; true

tim:
SQL>update scott.emp1 set sal=8000 where empno=7902; true
SQL>select empno,ename from scott.emp1 where deptno=20; false
//缺少sal列,不审计

sys:
SQL> select empno,ename,sal from scott.emp1 where deptno=20; //虽然符合条件,但sys默认不审计

3)验证审计结果

11:32:24 SQL> conn /as sysdba
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;

DB_USER time SQL_TEXT
------------------------------ ------------------- -------------------------------------------------------------------------
SCOTT 2013-08-17 16:57:36 select * from emp1 where deptno=20
TIM 2013-08-17 16:57:52 update scott.emp1 set sal=8000 where empno=7902

可以看出,必须同时满足了所有审计条件(前面定义的)才能入选。另外没有审计SYS.

SQL> truncate table fga_log$; //清除审计记录
SQL> select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail;

no rows selected

4)删除FGA的PL/SQL API命令

exec dbms_fga.drop_policy(object_schema=>'scott',object_name=>'emp1',policy_name=>'chk_emp1');

考点: 视图DBA_AUDIT_TRIAL显示标准数据库审计,DBA_FGA_AUDIT_TRIAL显示FGA,DBA_COMMON_AUDIT_TRIAL则两者都显示.要查看触发器审核结果,必须创建处理自己定义的表的自定义视图。

oracle之二数据库审计的更多相关文章

  1. OCA读书笔记(11) - 实现Oracle数据库审计

    11 Implementing Oracle Database Auditing 描述DBA对于安全和审计的职责使能标准的数据库审计安全审计选项查看审计信息维护审计路径 最小权限原则只在计算机上安装所 ...

  2. 行云管家 V4.7产品新特性-国际化版本、支持Oracle的数据库审计、主机密码自动修改策略 发布日期:2018-11-22

    行云管家在线体验: 行云管家[官网]-领先的云计算管理平台-云安全,堡垒机,自动化运维​ 行云管家新手有礼活动: 行云管家新手有礼,新用户1元即可体验专业版-优惠券​ 发布日期:2018-11-22 ...

  3. oracle实例名,数据库名,服务名等概念差别与联系

    数据库名.实例名.数据库域名.全局数据库名.服务名 这是几个令非常多刚開始学习的人easy混淆的概念.相信非常多刚開始学习的人都与我一样被标题上这些个概念搞得一头雾水.我们如今就来把它们弄个明确. 一 ...

  4. qlserver、Mysql、Oracle三种数据库的优缺点总结

    这篇文章主要介绍了sqlserver.Mysql.Oracle三种数据库的优缺点总结,需要的朋友可以参考下   一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能 ...

  5. 26、Oracle(二)

    1)掌握多行函数与分组操作 2)掌握多表查询与子查询 3)理解集合查询与掌握Oracle分页语法 4)理解创建.修改和删除表和表约束 --------------------------------- ...

  6. Oracle 免费的数据库

    Oracle 免费的数据库--Database 快捷版 11g 安装使用与"SOD框架"对Oracle的CodeFirst支持 一.Oracle XE 数据库与连接工具安装使用 O ...

  7. Windows下Oracle 11g创建数据库

    以前开发的时候用得比较多的是mysql和sql server,oracle用的比较少,用起来比较生疏,mysql和sql server用起来比较类似,就oracle的使用方式和他们不同,oracle在 ...

  8. Deinstall卸载RAC之Oracle软件及数据库+GI集群软件

    Deinstall卸载Oracle软件及数据库+GI集群软件 1. 本篇文档应用场景: 需要安装新的ORACLE RAC产品,系统没有重装,需要对原环境中的RAC进行卸载: #本篇文档,在AIX 6. ...

  9. oracle 脚本创建数据库的相关文章,教程,源码

    学步园推荐专题: 关于oracle 脚本创建数据库的相关文章 文章标题 文章链接 文章简介 oracle命令行创建数据库的示例脚本 http://www.xuebuyuan.com/964527.ht ...

随机推荐

  1. golang的fmt

    前言 不做文字搬运工,多做思路整理 就是为了能速览标准库,只整理我自己看过的...... 注意!!!!!!!!!! 单词都是连着的,我是为了看着方便.理解方便才分开的 1.fmt 中文文档 [英文文档 ...

  2. DeepLab系列

    论文: (DeepLabV1)Semantic image segmentation with deep convolutional nets and fully connected CRFs (De ...

  3. volatile的特性代码验证

    一 . 可见性(visibility) volatile关键字修饰的变量,如果值发生了改变,其他线程会立刻获取到,从而避免了出现脏读的情况. public class TestVolatile { p ...

  4. css实现网页缩放时固定定位的盒子与版心一同缩放

    在网页设计过程中我们可能会出现这种情况:设置好一个固定定位的盒子,但是当网页缩放时固定定位的盒子与网页的版心分离 这是因为css定位中的固定定位是以页面为参照进行定位的,而不是以版心盒子为参照,那么我 ...

  5. java应用中的日志介绍

    日志在应用程序中是非常非常重要的,好的日志信息能有助于我们在程序出现 BUG 时能快速进行定位,并能找出其中的原因. 但是,很多介绍 AOP 的地方都采用日志来作为介绍,实际上日志要采用切面的话是极其 ...

  6. Webfunny知识分享:JS错误监控

    现在的前端开发已不再是刀耕火种的年代了,各种框架.编译工具层出不穷,前端监控系统也不甘其后,遍地开花. 前端正承受着越来越重的职责,前端的业务也变得越来越复杂,此时此刻我们就更需要一套完善的监控系统来 ...

  7. Jmeter 常用函数(23)- 详解 __longSum

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 计算两个或多个长值的和 注意 当值不在 ...

  8. 7.hbase shell命令 cmd

    $HADOOP_USER_NAME #创建命名空间create_namespace 'bd1902' #展示所有命名空间 list_namespace #删除命名空间,The namespace mu ...

  9. 在laravel中遇到并发的解决方案

    1,在mysql中创建唯一索引,在代码中try catch mysql的1062错误 2.将存在并发的代码丢给队列异步处理.这种解决方案的问题是,接下来的代码不能依赖队列的处理结果 3.使用mysql ...

  10. 【转】python调用youtube-dl实现视频下载

    youtube-dl是一个命令行程序,用于从YouTube.com和更多网站下载视频.它需要Python解释器,版本2.6,2.7或3.2+,并且支持Unix,Windows或Mac OS X中运行. ...