oracle audit_actions,Oracle Audit审计功能

仅使用权限、角色、视图甚至细粒度安全策略建立访问控制系统还不能保证数据库的安全。因此,开启审计数据库的使用能让我们知道访问控制机制是否确实像所希望的那样工作。

审计分为标准审计和细粒度审计,标准审计基于语句级、权限级和对象级。而细粒度审计涉及某种粒度的数据访问。比如某个经理应该能够看到为他工作的雇员工资有关信息。那么,怎样才能知道这位经理是否还查看了他的顶头上司的工资信息?是否要审计这位经理的所有的select语句?这个时候利用细粒度审计

(FGA)可以只审计一个表种的某些行,还可以将FGA作为一种侵入检测装置。

1.启用审计

alter system set audit_trail = DB scope = spfile;

有些网站上写可以scope = both,但是实际修改时无法修改指定的类型,只能修改到spfile重启实例,还望达人指教。

audit_trail主要有如下几个值:

NONE:10g的默认值,表示禁用数据库审计;

OS:将审计记录写到一个操作系统文件中。写入的目录由audit_file_dest参数指定,但是注意:在Windows

NT下(我是XP),审计记录不启用这个参数,而是直接写道本地管理日志,需要到管理中查看。

DB:将审计记录写入数据库审计跟踪,棵视为DBA_AUDIT_TRAIL(存储在SYS.AUD$表中)。启用这个参数后注意将相关的几张表以及索引从system表空间下改到另一个表空间。

select * from dba_tables t where t.table_name = 'AUD$';

select *

from dba_tables t where t.table_name = 'AUDIT$';

select *

from dba_tables t where t.table_name = 'AUDIT_ACTIONS';

alter table aud$ move tablespace TBS_PM;

alter table

AUDIT$ move tablespace TBS_PM;

alter table

AUDIT_ACTIONS move tablespace TBS_PM;

alter index I_aud1 rebuild tablespace TBS_Index;

alter index

i_audit rebuild online tablespace TBS_Index;

alter index

i_audit_actions rebuild online tablespace TBS_Index;

另有DBExtened,XML这里不做介绍了,常用的就是以上3个。

2.修改AUDIT_TRAIL后,重启实例,然后指定审计的表和活动。

create table test_audit

(

col1

varchar2(10)

);

audit update on test_audit;

audit insert

on test_audit;

insert into test_audit(col1) values ('dfasd3424');

update test_audit t set t.col1 = '132rf';

commit;

select * from dba_common_audit_trail;

1 Standard Audit 19330 8 1

15-9月 -08 12.07.32.343000 上午

+08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:4828 PAUL_XI 0

PREMOBILE

TEST_AUDIT 103 SESSION REC 05002F009C0A0000 0

0 NONE ------S--------- 2 Standard Audit 19353 33 1

15-9月 -08 10.21.02.328000 上午

+08:00 PREMOBILE PAUL_XI\Administrator WORKGROUP\PAUL_XI 1416:2348 PAUL_XI 0

PREMOBILE

TEST_AUDIT 103 SESSION REC 09000F00DA0A0000 0

0 NONE ------S---S-----

3.为审计使用系统级触发器(个人认为这个已经不是Audit审计功能,而仅仅是触发器)

创建数据库启动触发器

create table logon_audit

(

user_id

varchar2(30),

sess_id

number(10),

logon_time

date,

logoff_time

date,

host

varchar2(20)

);

create or replace trigger logon_audit_trig

after

logon

on

database

begin

insert into

logon_audit

values(user,sys_context('userenv','sessionid'),sysdate,null,sys_context('userenv','host'));

commit;

end;

select * from logon_audit;

1 PREMOBILE 19327 2008-9-14

23:51:22 WORKGROUP\PAUL_XI

2 PREMOBILE

19328 2008-9-14 23:51:35 WORKGROUP\PAUL_XI

3 SYSMAN 0

2008-9-14 23:49:44 PAUL_XI

4 SYSMAN 0

2008-9-14 23:50:49 PAUL_XI

原文出处:http://oracle.chinaitlab.com/induction/766299.html

审计分为三类1.语句审计(Statement

Auditing) => 对预先指定的某些SQL语句进行审计。

例如: AUDIT CREATE TABLE => 表明审查记录CREATE TABLE语句。

2.权限审计(Privilege

Auditing) => 对涉及某些权限的操作进行审计。

例如先赋予用户a查询权限: GRANT SELECT ANY

TABLE TO a;AUDIT SELECT ANY TABLE;

然后当用户a执行查询语句时:SELECT * FROM b.T 用到了SELECT 权限,所以此条语句会被记录。

有时候语句既是语句审计又是权限审计内容。如上面说到的CREATE TABLE。

3.对象审计(Object Auditing)

=> 审计作用在指定对象上的操作。

例如: AUDIT ALTER,DELETE,DROP ON a.T by b;

语句指定审定用户a的表,同时by指定只审定用户b发起的操作。

审计语句参数

1. By [Session | Access]

Session => 对每个会话中发生的重复操作只做一次记录。

Access => 每次操作都会被记录。

例子:

AUDIT

SELECT,UPDATE,INSERT,DELETE

ON a.T

BY SESSION

对所有a用户下的T表进行的独立操作都将被记录。

2.Whenever [not] sucessful

Sucessful => 操作成功才会被记录。

not Sucessful => 操作失败才会被记录。

NULL(不设置) => 该语句设置则不管成功与否都记录

例子:

AUDIT ADELETE ANY

TABLE

WHENEVER NOT SUCESSFUL;

对所有删除失败的动作进行记录。

启用审计的两个重要参数Audit_SYS_Operations =>

指定所有系统(sysdba,sysoper)用户的操作是否都被记录。默认为false。

内容记录在audit_file_dest指定的文件中。

Audit Trail =>

通过数据库初始文件init.ora参数中的AUDIT_TRAIL来启用和禁用审计。

有三个取值:

None => 默认,不做审计

DB => 将audit_trail 记录在数据库审计相关表中,aud$

OS => 将audit_trail

记录在操作系统文件中,文件目录地址由audit_file_dest指定

审计结果在数据库保存形式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 列出基于值的审计的审计跟踪记录

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值