oracle 对象的审计,初识!聊聊ORACLE的审计功能
顺着这样的思路去学习。
1、审计可以达到怎样的效果?我用来做什么?
2、任何概念都该有分类的吧,审计也不例外?
3、如何启用审计?数据库一级。
4、如何设定我所需要的审计?针对某个特定的监视目标了。
5、如何看审计的结果?
6、论坛上一些常见的问题,自己认为比较难理解的问题。
[@more@]
初识ORACLE的审计功能
顺着这样的思路去学习。
1、审计可以达到怎样的效果?我要来做什么?
2、有分类吗?
3、如何启用审计?数据库一级。
4、如何设定我所需要的审计?针对某个特定的监视目标了。
5、如何看审计的结果?
6、论坛上一些常见的问题,自己认为比较难理解的问题。
一、审计可以达到怎样的效果?
可以记录对数据库对象的所有操作。什么时候,什么用户对什么对象进行了什么类型的操作。
但是无法得知操作的细节,比如到底数据更新成了1还是2?
不过现在新出现的精细审计(Fine grained Auditing),好像也可以记录DML语句了。
二、审计可以分为3类。或者说,可以从3种角度去启用审计。
1、语句审计(Statement Auditing)。
对预先指定的某些SQL语句进行审计。这里从SQL语句的角度出发,进行指定。审计只关心执行的语句。
例如,audit CREATE TABLE;命令,就表明对'create table'语句的执行进行记录。
不管这语句是否是针对某个对象的操作
2、权限审计(Privilege Auditing)
对涉及某些权限的操作进行审计。这里强调“涉及权限”
例如,audit CREATE TABLE;命令,又可以表明对涉及“CREATE TABLE”权限的操作进行审计。
所以说,在这种命令的情况下,既产生一个语句审计,又产生了一个权限审计。
有时候“语句审计”和“权限审计”的相互重复的。这一点可以后面证明。
3、对象审计(Object Auditing)。
记录作用在指定对象上的操作。
三、如何启用审计。
通过数据库初始化参数文件中的AUDIT_TRAIL 初始化参数启用和禁用数据库审计。
DB 启用数据库审计并引导所有审计记录到数据库的审计跟踪
OS 启用数据库审计并引导所有审计记录到操作系统的审计跟踪。可以用AUDIT_FILE_DEST 初始化参数来指定审计文件存储的目录。
NONE 禁用审计这个值是默认值
四、如何设定所需的审计
AUDIT语句。
例如:审计属于用户jward 的dept 表上的所有的SELECT INSERT 和DELETE 语句
AUDIT SELECT, INSERT, DELETE
ON jward.dept;
五、控制何时触发审计动作。
1)By session / By Access
by session对每个session中发生的重复操作只记录一次
by access对每个session中发生的每次操作都记录,而不管是否重复。
2)Whenever successful/ Whenever not successful
Whenever successful表示操作成功以后才记录下来。
Whenever not successful表示操作失败后才记录下来。
六、审计实施
1、语句审计
Audit session; Audit session By ;
与instance连接的每个会话生成一条审计记录。
审计记录将在连接时期插入并且在断开连接时期进行更新。
保留有关会话的信息比如连接时期断开连接时期处理的逻辑和物理I/O,
以及更多信息将存储在单独一条审计记录中
该审计记录与会话相对应
2、audit delete table
2) 权限审计
Audit DELETE ANY TABLE
by access
whenever not successful;
所有不成功的,使用DELETE ANY TABLE权限进行的操作。
3) 对象审计
AUDIT SELECT, INSERT, DELETE
ON jward.dept
BY ACCESS
WHENEVER SUCCESSFUL;
七、审计结果
1)数据库初始化参数文件中AUDIT_TRAIL=OS时,审计记录存在操作系统的文件中。
UNIX系统的话,默认存在“$oracle_home/rdbms/audit/” 目录下。
If you have set AUDIT_TRAIL = OS, modify the 'init.ora' file to specify
the destination for the audited records using the AUDIT_FILE_DEST parameter.
If your operating system supports AUDIT_TRAIL = OS auditing, files are
automatically created in the AUDIT_FILE_DEST for certain actions, and the
generated name contains the OS PID of the shadow process audited:
Example:
AUDIT_FILE_DEST = $ORACLE_HOME/rdbms/audit
b)windows系统的审计信息存储在事件管理器中。
你可以通过控制面板——管理工具——事件查看器——应用程序日志中找到相应的审计记录
2)数据库初始化参数文件中AUDIT_TRAIL=DB时,审计记录存在数据库中。
相关表和视图:
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 列出基于值的审计的审计跟踪记录
八、一些特殊问题
1、有时候“语句审计”和“权限审计”是相互重复的。并不需要明确的区分这2种类型。
主要是考虑你对审计的需求是什么?考虑出发的角度是什么?
例如:
SQL> audit CREATE TABLE;
Audit succeeded
SQL> SELECT * FROM DBA_STMT_AUDIT_OPTS;
AUDIT_OPTION SUCCESS FAILURE
---------------------------------------- ---------- ----------
CREATE TABLE BY ACCESS BY ACCESS
SQL> SELECT * FROM DBA_PRIV_AUDIT_OPTS;
PRIVILEGE SUCCESS FAILURE
---------------------------------------- ---------- ----------
CREATE TABLE BY ACCESS BY ACCESS
以上的一条审计设定命令,生成了两条审计规则。其实最后的结果都是一样。
就是当CREATE TABLE语句执行后,存下审计记录。
2、开启某个用户下所有表的审计
audit table by user_name。据说可以。
九、参考
http://blog.itpub.net/post/468/6806
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96521/audit.htm#1108
获得应用程序所执行的SQL语句
http://www.softhouse.com.cn/html/200412/2004121608315200002957.html
细粒度审计(FGA)
http://www.itpub.net/showthread.php?s=&threadid=239693&highlight=%C9%F3%BC%C6
文章来源:ITPUB博客博主rake
oracle 对象的审计,初识!聊聊ORACLE的审计功能相关推荐
- oracle对象类型_如何创建Oracle类型对象
oracle对象类型 Today we will learn how to create Oracle Type Object. If you are working on a large proje ...
- oracle 对象类型是什么意思,Oracle对象类型 (转)
Oracle对象类型也有属性和方法. 创建对象类型与创建表很相似,只是实际上不为存储的数据分配空间: 不带方法的简单对象类型: CREATE TYPE type_name as OBJECT ( co ...
- oracle 对象不在回收站中,Oracle 10G 中的回收站
Oracle 10G 中的"回收站"出处:互联网 回收站,从原理上来说就是一个数据字典表,放置用户Drop掉的数据库对象信息.用户进行Drop操作的对象并没有被数据库删除,仍然会占 ...
- oracle对象不在回收站中,Oracle PURGE子句清除回收站中的对象
使用PURGE语句从回收站中清除表,索引,已删除的表空间或者整个回收站,并释放与对象关联的所有空间.PURGE语句不能回滚,清除以后也不能恢复. 查询USER_RECYCLEBIN数据字典查阅回收站内 ...
- oracle 查询表里信息_查看ORACLE 数据库及表信息
-- 查看ORACLE 数据库中本用户下的所有表SELECT table_name FROM user_tables; -- 查看ORACLE 数据库中所有用户下的所有表select user,tab ...
- oracle对象权限回收,【Privilege】Oracle对象权限级联收回现象测试
Oracle权限分为系统权限和对象权限.在文章<[Privilege]Oracle系统权限非级联收回现象测试>(http://space.itpub.net/519536/viewspac ...
- oracle导出对象和数据,浅析Oracle对象和数据的导入导出
对于Oracle对象和数据的导入导出,我们会用到一些小工具.以前我们一般都是使用PL/SQL Developer来实现,但是PL/SQL Developer在导出.导入数据时有两个问题: 1.要把表数 ...
- 审计日志删除 oracle,oracle audit,怎么审计ORACLE日志
Oracle 的审计实在是鸡肋,审计日志增加猛速,而且加大系统负荷,降低系统性能. 依我们在生产系统的作法就是禁用审计,禁用后清除审计日志. 处理方法: 1.查看审计功能是否开启sqlplus &qu ...
- 触发器与job的配合使用oracle,oracle 对象管理 10_触发器job
一.触发器相关概念 1.触发器分类 a.DML触发器:对DML语句进行触发(表上进行DML操作前BEFORE.后AFTER) b.INSTEAD OF 触发器:只适用于视图(复杂视图上DML),不能指 ...
最新文章
- 一篇带你了解TCP/IP 概念
- boost::timer
- 怎样使破解网页的禁止复制黏贴
- 【数理知识】方程一阶二阶及常用词语含义
- 初始化Dictionarystring, object赋值
- 转:C#数据结构和算法学习系列十三----链表
- Centos 6.4搭建svnadmin服务器
- VS2017编译的一些小知识记录
- HTML之表格的基本知识
- 第一个Eureka Service
- 小程序的网络请求封装
- 11.scrapy框架持久化存储
- Android 自定义View实现拖动滑块完成验证
- StringBuilder和StringBuffer的效率比较
- Ant下载安装及使用详解
- c语言输出行末无空格_三个简单的C语言程序
- 【老卫搞机】136期:华为开发者联盟社区2022年度战码先锋2期开源贡献之星
- 【小白学OpenCV】(零)——计算机图像基础
- ISCSI linux/windows配置及使用
- XBee/XBee-Pro ® ZigBee 模块
热门文章
- day34-常见内置模块三(re模块)
- LevelDB的源码阅读(三) Get操作
- CSS-float详解,深入理解clear:both[转+部分原创]
- bootstrap学习笔记(5)
- IT人必去的几大网站,国内外知名IT网站罗列!
- 通向KDE4之路(十一):Amarok2开辟起步
- JavaScript之jQuery够用即可(事件委托、动画效果、扩展插件)
- 详解Python中的位运算符规则、原理与用法
- Python使用广度优先和深度优先两种方法遍历目录树
- 哈夫曼编码原理与Python实现代码(附手动推导过程原稿真迹)