Oracle 审计功能
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、对象审计(Object Auditing)。 记录作用在指定对象上的操作。
如何启用审计
通过数据库初始化参数文件中的 AUDIT_TRAIL 初始化参数启用和禁用 数据库审计。 AUDIT_TRAIL = DB/OS/none
Shutdown immediate startup
DB 启用数据库审计并引导所有审计记录到数 据库的审计跟踪
为Course表建立索引。Course表按课程号升序 建唯一索引。 CREATE UNIQUE INDEX Coucno ON Course(课程名 称);
COMMIT;
查看审计结果
conn sys/jsj@db2012a.jsjzy.cn as sysdba Col username for a10 Col timestamp for a10 Col obj_name for a8 Col owner for a6 Col action_name for a15 Select username, to_char(timestamp,'yyyy-mmdd hh24:mi:ss'),owner,action_name,obj_name from DBA_AUDIT_OBJECT;
查看权限级设置
Col user_name for a10 //Select user_name,privilege,success,failure from DBA_PRIV_AUDIT_OPTS order by user_name; Select user_name,audit_option,success,fail ure from DBA_STMT_AUDIT_OPTS;
对象审计实例
Conn user03/a@db2012a.jsjzy.cn Drop table test; create table test(a int) tablespace user001; insert into test values(1); commit; Select * from test; Commit;
Oracle 审计功能
1、审计可以达到怎样的效果?我要来做 什么? 2、有分类吗? 3、如何启用审计? 4、如何设定我所需要的审计?针对某个 特定的监视目标了。 5、如何看审计的结果?
审计可以达到怎样的效果?
可以记录对数据库对象的所有操作。什 么时候,什么用户对什么对象进行了什 么类型的操作。
审计可以分为3类
查看审计结果
conn sys/jsj@db2012a.jsjzy.cn as sysdba
Col owner for a10 Col username for a10 Col timestamp for a10
Select username, to_char(timestamp,'yyyymm-dd hh24:mi:ss'), owner,action_name,obj_name from DBA_AUDIT_OBJECT;
停止权限审计
NoAudit delete table,insert table by user02 whenever successful; //NoAudit create table;
对象审计
Sql>audit 实体选项 on schema by 用户名 by session access whenever (not) successful;
2、权限审计(Privilege Auditing)
对涉及某些权限的操作进行审计。这里强调 “涉及权限”
例如,audit CREATE TABLE;命令,又可以表明 对涉及“CREATE TABLE”权限的操作进行审 计。 所以说,在这种命令的情况下,既产生一个语 句审计,又产生了一个权限审计。 有时候“语句审计”和“权限审计”的相互重 复的
停止对象审计
noAudit SELECT,INSERT,DELETE ON user03.test whenever successful;
审计结果
1)数据库初始化参数文件中AUDIT_TRAIL= OS时,审计记录存在操作系统的文件中。 windows系统的审计信息存储在事件管理器中。 你可以通过控制面板——管理工具——事件查 看器——应用程序日志中找到相应的审计记录 2)数据库初始化参数文件中AUDIT_TRAIL= DB时,审计记录存在数据库中。
语句审计实例
1、设置审计 conn sys/jsj@db2012a.jsjzy.cn as sysdba
select username from dba_users;
Audit table by user04 by access; Audit index by user04 by access;
查看审计语句级设置
Sql>audit sql权限名称 by 用户名 by session access whenever (not) successful;
权限审计实例
Drop user user02 cascade; Create user user02 Identified by a; Grant create session,create table To user02; Alter user user02 Quota 1000k on user001; Audit delete table,insert table by user02 by access whenever successful;
DBA_AUDIT_OBJECT 有对象的审计跟踪记录
包含系统中所
DBA_AUDIT_TRAIL 列出所有审计跟 踪条目 USER_AUDIT_TRAIL USER视图显示 与当前用户有关的审计跟踪条目
查询在所有对象上的审计选项
conn sys/jsj@db2012a.jsjzy.cn as sysdba Col username for a10 Col timestamp for a10 Select username,timestamp,owner,action_ name,obj_name from DBA_AUDIT_OBJECT;
Sql>Noaudit sql语句或选项 by 用户名 by session access whenever (not) successful;
停止审计 noAudit table by user04; noAudit INDEX by user04; Commit;
2) 权限审计
//Audit DELETE ANY TABLE by access whenever successful; 所有成功的,使用DELETE ANY TABLE 权限进行的操作。
Select owner,object_name, object_type,del,ins,sel,upd from DBA_OBJ_AUDIT_OPTS where owner='USER03';
Conn user03/a@db2012a.jsjzy.cn insert into user03.test values(2); commit; Select * from user03.test; Delete from user03.test; Commit;
控制何时触发审计动作
wk.baidu.com1)By session / By Access
by session对每个session中发生的重复 操作只记录一次 by access对每个session中发生的每次 操作都记录,而不管是否重复。
2)Whenever successful/ Whenever not successful Whenever successful表示操作成功以 后才记录下来。 Whenever not successful表示操作失 败后才记录下来。
查询审计结果
conn sys/jsj@db2012a.jsjzy.cn as sysdba Col username for a10 Col timestamp for a10 Select username, to_char(timestamp,'yyyy-mm-dd hh24:mi:ss'),owner,action_name,obj_n ame from DBA_AUDIT_OBJECT;
查询对象审计设置
conn sys/jsj@db2012a.jsjzy.cn as sysdba Audit SELECT ON user03.test by access whenever successful;
Col owner for a10 Col object_name for a10 Col object_type for a10
对象审计实例
conn sys/jsj@db2012a.jsjzy.cn as sysdba drop user user03 cascade; Create user user03 Identified by a; Grant create session,create table To user03; Alter user user03 Quota 1000k on user001;
权限审计实例
Conn user02/a@db2012a.jsjzy.cn Drop table test; create table test(a int) tablespace user001; insert into test values(1); commit; Select * from test; Commit;
1、语句审计(Statement Auditing) 2、权限审计(Privilege Auditing) 3、对象审计(Object Auditing)
1、语句审计(Statement Auditing)
对预先指定的某些SQL语句进行审计。这 里从SQL语句的角度出发,进行指定。审 计只关心执行的语句。 例如,audit TABLE;命令,就表明对 "create table、drop table"语句的执行进 行记录。 不管这语句是否是针对某个对象的操作
OS 启用数据库审计并引导所有审计记录到操 作系统的审计跟踪。 可以用AUDIT_FILE_DEST 初始化参数来指定 审计文件存储的目录。 NONE 禁用审计这个值是默认值
启动数据库审计
Sql> Show parameter audit_trail; Sql> select value from v$parameter where name = 'audit_trail';
Col audit_optionl for a10 Col user_name for a10 Select user_name,audit_option,success,fail ure from DBA_STMT_AUDIT_OPTS;
语句审计实例
conn user04/a@db2012a.jsjzy.cn Drop table course; create table course( 课程名称 varchar2(22), 学分 varchar2(4), 班级 varchar2(20), 主讲教师 varchar2(10));
设置审计
在缺省情况下,系统的审计功能是关闭 的。可以在INIT.ORA参数文件中将参数 AUDIT_TRAIL设置为正整数来激活。 AUDIT_TRAIL = DB
审计实施
1、语句审计
Sql>audit sql语句或选项 by 用户名 by session access whenever (not) successful;
相关表和视图: SYS.AUD$ 是唯一保留审计结果的表。其它的都是视 图。 DBA_STMT_AUDIT_OPTS 描述由用户设置的跨系统 的当前系统审计选项 DBA_PRIV_AUDIT_OPTS 描述由用户正在审计的跨 系统的当前系统权限 DBA_OBJ_AUDIT_OPTS 描述在所有对象上的审计 选项 USER_OBJ_AUDIT_OPTS USER 视图描述当前用户拥 有的所有对象上的审计选项