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 ...
随机推荐
- 【Ruby】【目录 & 引用 & 文件 】
[[目录]] 当前文件在根目录下一个文件夹下 引用当前文件所在目录上一级目录下某.rb文件 方法一 require File.join(File.dirname(FILE),'..','test_on ...
- SourceTree/git解决pre-commit hook failed的问题
一. git commit -m 'xxx' 出现问题 今天在上传项目的时候在commit阶段遇到一个问题,无论是在Sourcetree上传还是用命令git commit -m 'xxx'都报了一下错 ...
- 在用node安装某个全局模块的时候,没有权限修改node_modules
一.问题 今天在安装公司内部的一个npm模块的时候,发现报错了⬇ 第一行错误: deprecated graceful-fs@1.2.3: please upgrade to graceful-fs ...
- Virtualbox-CentOS网络配置
1.记下虚拟网卡IP 2. 配置网卡1.网卡2 网卡1 ---对应---eth0----NAT(网络地址转换)用来与外网通信 网卡2 ---对应---eth1----Host-only用来与主机通信 ...
- 字符串函数 mysql 和sqlserver 中对于字符串的常用函数和区别
1. 对于字符串大小写的统一 mysql和sqlserver中都有同名函数lower()和upper(),但是mysql中还有另外一对函数,达到同样的目的,lcase()和ucase(),也就是英文中 ...
- IIS字体 404错误
问题:最近在IIS上部署web项目的时候,发现浏览器总是报找不到woff.woff2字体的错误.导致浏览器加载字体报404错误,白白消耗了100-200毫秒的加载时间. 原因:因为服务器IIS不认SV ...
- javaSE习题 第三章 运算符、表达式和语句
问答: 1.下列System.out.printf的结果是什么? int a=100,x,y; x=++a; y=a--; System.out.printf("%d,%d,%d" ...
- [原][源码][tinyxml][opencv]按照规格剪切所有的图片
源码: #include <iostream> #include <fstream> #include <opencv2/core/core.hpp> #inclu ...
- mkdir -p a/b 表示创建目录a,并创建目录a的子目录b
mkdir -p 命令解释 2016年01月13日 14:24:03 阅读数:742 mkdir -p a/b 表示创建目录a,并创建目录a的子目录b, 若不使用命令-p的话,想要达到同样的效果,需要 ...
- git分支错误提交导致代码丢失--窗口提示HEAD detached错误
今天开发时git 检出分支到本地时操作错误,导致在一个临时分支上开发,且把代码提交了,结果代码未提交到任何分支,提交时还报了个错: HEAD detached at 4d927fa4 后来把代码重新检 ...