Oracle11g温习-第十九章:审计(audit)
2013年4月27日 星期六
10:52
1、审计的功能:监控用户在database 的 action (操作) |
|
2、审计分类 |
|
1) session :在同一个session,相同的语句只产生一个审计结果(默认) 2) access : 在同一个session,每一个语句产生一个审计结果 |
|
3、启用审计(默认不启用) |
|
|
|
4、审计的对象:(默认情况:session ,对成功和不成功的同时审计) |
|
1)语句审计 ——创建语句审计 SYS @ prod > audit table; 【涉及到table关键字的都会列入审计内容】 Audit succeeded. SYS @ prod > noaudit table; 【关闭审计】 SYS @ prod > desc dba_audit_tail; SYS @ prod > audit table by tom; 【对用户tom进行语句审计】 Audit succeeded. SYS @ prod > audit table by tom whenever successful ; 【对用户tom进行成功的语句审计,失败的语句不审计】 Audit succeeded. ——查看审计设置 SYS @ prod > select user_name,audit_option from dba_stmt_audit_opts; USER_NAME AUDIT_OPTION ------------------------------ ---------------------------------------- SCOTT TABLE SCOTT @ prod >drop table emp1; Table dropped. SCOTT @ prod >create table emp1 as select * from emp; Table created. SYS @ prod > conn tom/tom Connected. TOM @ prod > create table t01 (id int); Table created. TOM @ prod > drop table t01 purge; Table dropped. TOM @ prod > conn /as sysdba Connected. SYS @ prod > alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'; Session altered. SYS @ prod > col username for a10 SYS @ prod > col obj_name for a10 SYS @ prod > desc dba_audit_tail ; SYS @ prod >select USERNAME,TIMESTAMP,OBJ_NAME,ACTION_NAME from dba_audit_trail; USERNAME TIMESTAMP OBJ_NAME ACTION_NAME ---------- ------------------- ---------- ---------------------------- SCOTT 2013-01-18 08:31:43 DEPT1 DROP TABLE SCOTT 2013-01-18 08:32:33 DEPT DROP TABLE SCOTT 2013-01-18 08:32:51 EMP1 DROP TABLE SCOTT 2013-01-18 08:33:38 EMP1 CREATE TABLE
2)权限审计 ——创建权限审计 SYS @ prod > audit create table; 【只审计create 语句,其他语句不审计 】 Audit succeeded. SYS @ prod > conn scott/tiger Connected. SCOTT @ prod > create table dept1 as select * from dept; Table created. SCOTT @ prod > drop table dept1 purge; 【不经过回收站,直接将文件删除】 Table dropped. SCOTT @ prod > conn /as sysdba Connected. SCOTT @ prod > select USERNAME,TIMESTAMP,OWNER,OBJ_NAME,ACTION_NAME from dba_audit_trail; USERNAME TIMESTAMP OBJ_NAME ACTION_NAME ---------- --------- ---------- ---------------------------- SCOTT 11-AUG-11 DEPT1 CREATE TABLE 3)对象审计 ——创建对象审计 SYS @ prod > audit all on scott.emp1; 【在某个对象上建立审计】 Audit succeeded. SYS @ prod > conn scott/tiger Connected. SCOTT @ prod > select * from emp1; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 100 40 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 SCOTT @ prod >update emp1 set sal=9000 where empno=7788; 1 row updated. SCOTT @ prod > delete from emp1 where rownum<2; 1 row deleted. SCOTT @ prod >conn /as sysdba Connected. SYS @ prod >select username,ses_actions,obj_name,to_char(timestamp,'yyyy-mm-dd HH24:MI:SS') from dba_audit_trail; USERNAME SES_ACTIONS OBJ_NAME TO_CHAR(TIMESTAMP,' ---------- ------------------- ---------- ------------------- SCOTT ---S-----SS----- EMP1 2013-01-18 08:45:34 【其中S表示successful ,表示在这个位置操作是成功的,F表示failure 失败,B表示both,两者都有】。 |
|
5、精细审计Fine Grained Auditing (FGA) 用于审计用户在特定数据行或列上的SQL操作 精细审计是通过DBMS_FGA包实现。 |
|
——建立审计策略 SYS @ prod >exec dbms_fga.add_policy(object_schema=>'scott',object_name=>'emp',policy_name=>'chk_emp', audit_condition =>'deptno=20',audit_column =>'sal', statement_types =>'update,select'); 【policy_name=> 可以随便写】 PL/SQL procedure successfully completed. SYS @ prod > conn scott/tiger Connected. SCOTT @ prod > select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7499 ALLEN SALESMAN 7698 20-FEB-81 1600 300 30 7521 WARD SALESMAN 7698 22-FEB-81 1250 500 30 7566 JONES MANAGER 7839 02-APR-81 2975 20 7654 MARTIN SALESMAN 7698 28-SEP-81 1250 1400 30 7698 BLAKE MANAGER 7839 01-MAY-81 2850 30 7782 CLARK MANAGER 7839 09-JUN-81 2450 10 7788 SCOTT ANALYST 7566 19-APR-87 3000 100 40 7839 KING PRESIDENT 17-NOV-81 5000 10 7844 TURNER SALESMAN 7698 08-SEP-81 1500 0 30 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7900 JAMES CLERK 7698 03-DEC-81 950 30 7902 FORD ANALYST 7566 03-DEC-81 3000 20 7934 MILLER CLERK 7782 23-JAN-82 1300 10 14 rows selected. SCOTT @ prod > select * from emp where deptno=20; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ---------- ---------- --------- ---------- --------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-DEC-80 800 20 7566 JONES MANAGER 7839 02-APR-81 2975 20 7876 ADAMS CLERK 7788 23-MAY-87 1100 20 7902 FORD ANALYST 7566 03-DEC-81 3000 20 SCOTT @ prod > update emp set deptno=10 where empno=7788; 1 row updated. SCOTT @ prod > update emp set sal=8000 where empno=7788; 1 row updated. SCOTT @ prod > update emp set sal=8000 where deptno=20; 4 rows updated. SCOTT @ prod > commit; Commit complete. 【验证审计结果 结果存放于 dba_fga_audit_trail 视图】 SCOTT @ prod > conn /as sysdba Connected. SYS @ prod > 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 2011-08-11 11:31:42 select * from emp SCOTT 2011-08-11 11:31:49 select * from emp where deptno=20 SCOTT 2011-08-11 11:32:12 update emp set sal=8000 where empno=7788 SCOTT 2011-08-11 11:32:21 update emp set sal=8000 where deptno=20 ——【精细审计结果存放到fga_log$的基表里,通过dba_fga_audit_trail 查看。】 SYS @ prod > select count(*) from fga_log$; COUNT(*) ---------- 4 SYS @ prod > delete from fga_log$; 4 rows deleted. SYS @ prod > select db_user,to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') "time" ,sql_text from dba_fga_audit_trail; no rows selected ——【禁止精细审计】 SYS @ prod > exec dbms_fga.disable_policy( object_schema=>'scott',object_name=>'emp', policy_name=>'chk_emp'); PL/SQL procedure successfully completed. ——【激活精细审计】 SYS @ prod > exec dbms_fga.enable_policy( object_schema=>'scott',object_name=>'emp', policy_name=>'chk_emp'); PL/SQL procedure successfully completed. ——【删除FGA策略】 SYS @ prod > exec dbms_fga.drop_policy( object_schema=>'scott',object_name=>'emp', policy_name=>'chk_emp'); PL/SQL procedure successfully completed. ——【删除精细审计的结果】 SYS @ prod > delete from sys.fga_log$; |
|
6、应用审计(通过触发器来实现)——用于记载DML操作所引起的数据变化 |
|
1)建立审计表(用来存放审计结果) SCOTT @ prod > create table audit_emp_change ( name varchar2(10), oldsal number(6,2), newsal number(6,2) ,time date); Table created. 2)建立DML 触发器
3)执行DML操作 SCOTT @ prod > update scott.emp set sal=6000 where empno=7788; 1 row updated. 4)查看审计结果 SYS @ prod > select name,oldsal,newsal, to_char(time,'YYYY-MM-DD HH24:MI') FROM AUDIT_EMP_CHANGE; NAME OLDSAL NEWSAL TO_CHAR(TIME,'YY ---------- ---------- ---------- ---------------- SCOTT 2000 6000 2011-03-03 04:28 |
Oracle11g温习-第十九章:审计(audit)的更多相关文章
- Oracle11g温习-第十六章:用户管理
2013年4月27日 星期六 10:50 1.概念 (1)schema : user.object 就是用户创建的对象 (2)用户认证方式: ...
- Oracle11g温习-第十四章:约束( constraint )
2013年4月27日 星期六 10:48 1.约束的功能 通过一些强制性商业规则,保证数据的完整性.一致性 2.约束的类别 1 ) not null 不允许为空 2 ) check ...
- Oracle11g温习-第十二章:tables
2013年4月27日 星期六 10:44 1.表的功能 存储.管理数据的基本单元(二维表:由行和列组成) 2.表的类型 1)普通表:[heap table(堆表) :数据存储时,无序的,对它的访问采 ...
- Python之路【第十九章】:Django进阶
Django路由规则 1.基于正则的URL 在templates目录下创建index.html.detail.html文件 <!DOCTYPE html> <html lang=&q ...
- 第十九章——使用资源调控器管理资源(1)——使用SQLServer Management Studio 配置资源调控器
原文:第十九章--使用资源调控器管理资源(1)--使用SQLServer Management Studio 配置资源调控器 本系列包含: 1. 使用SQLServer Management Stud ...
- 第十九章——使用资源调控器管理资源(2)——使用T-SQL配置资源调控器
原文:第十九章--使用资源调控器管理资源(2)--使用T-SQL配置资源调控器 前言: 在前一章已经演示了如何使用SSMS来配置资源调控器.但是作为DBA,总有需要写脚本的时候,因为它可以重用及扩展. ...
- 第十九章 Django的ORM映射机制
第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...
- Gradle 1.12用户指南翻译——第四十九章. Build Dashboard 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- Gradle 1.12翻译——第十九章. Gradle 守护进程
有关其他已翻译的章节请关注Github上的项目:https://github.com/msdx/gradledoc/tree/1.12,或访问:http://gradledoc.qiniudn.com ...
随机推荐
- 51nod1057-N的阶乘(大数乘法巧解)
这道大数乘法开始我是想套板子模拟的..然后就发现2/3的例子都wa了.(惊了).然后在思考后发现n2的板子的确过不了这么多的大数.(不看题的下场).所以,我在网上发现了分块求大数的方法.%%% 思路来 ...
- Katana的WebAPI集成Swagger 解决方案
这位大哥写的博客很清楚了,我就不重复了. http://www.cnblogs.com/caodaiming/p/4156476.html 错误解决 http://blog.csdn.net/gold ...
- Gym 100247C Victor's Research(有多少区间之和为S)
https://vjudge.net/problem/Gym-100247C 题意: 给出一串数,求有多少个区间的和正好等于S. 思路:计算处前缀和,并且用map维护一下每个前缀和出现的次数.这样接下 ...
- _itemmod_hidden
该表中的物品放在背包或银行中中会计算属性 `entry`物品ID `comment` 备注
- MD5加密与Hash加密
一.Md5加密 MD5算法具有以下特点: 1.压缩性:任意长度的数据,算出的MD5值长度都是固定的. 2.容易计算:从原数据计算出MD5值很容易. 3.抗修改性:对原数据进行任何改动,哪怕只修改1个字 ...
- nodejs项目安装ant design
1.确保安装好nodejs $ node --version v10.4.1 2.确保npm $ npm -v 6.1.0 3.安装 $ sudo npm install antd-init -g / ...
- 力扣(LeetCode) 9.回文数
判断一个整数是否是回文数.回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数. 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向 ...
- 数据库 Mysql 使用,优化,索引
数据库事务的隔离级别,由低到高 : READ UNCOMMITTED(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读.不可重复读和幻读问题. READ COMMITTED(读已提交 ...
- 学习笔记54—均方误差(MSE)和均方根误差(RMSE)和平均绝对误差(MAE)
https://blog.csdn.net/reallocing1/article/details/56292877 MSE: Mean Squared Error 均方误差是指参数估计值与参数真值 ...
- RedHat/CentOS根目录扩容
下面以redhat为例,介绍如何扩容系统根目录,CentOS也是一样的. 1. 登录到系统中,查看硬盘情况. /dev/sdb就是增加的硬盘. [root@test ~]# fdisk -l 2. 操 ...