Oracle FGA策略:细粒度审计

1、FGA策略(细粒度审计)

DBMS_FGA是SYS用户的一个包

(1)增加 FGA 策略

-- 审计表

GRANT RESOURCE,CONNECT TO BANK IDENTIFIED BY BANK;

CREATE TABLE BANK.ACCOUNTS

ACCT_NO NUMBER PRIMARY KEY,

CUST_ID NUMBER NOT NULL ,

BALANCE NUMBER(15,2) NULL

);

insert into bank.accounts values(1,1,10000);

insert into bank.accounts values(2,2,20000);

commit;

Begin

dbms_fga.drop_policy (

object_schema=>'BANK',

object_name=>'ACCOUNTS',

policy_name=>'ACCOUNTS_ACCESS');

dbms_fga.add_policy (

object_schema=>'BANK',

object_name=>'ACCOUNTS',

policy_name=>'ACCOUNTS_ACCESS');

end;

/

select * from bank.accounts;

select timestamp, db_user,os_user,object_schema,object_name,sql_text  from dba_fga_audit_trail;

-- 审计列和审计条件, 在add_policy中加入

--   audit_column => 'BALANCE'

--   audit_condition => 'BALANCE >= 11000'

Begin

dbms_fga.drop_policy (

object_schema=>'BANK',

object_name=>'ACCOUNTS',

policy_name=>'ACCOUNTS_ACCESS');

dbms_fga.add_policy (

object_schema=>'BANK',

object_name=>'ACCOUNTS',

audit_column => 'BALANCE',

audit_condition => 'BALANCE >= 11000',

policy_name=>'ACCOUNTS_ACCESS');

end;

/

select BALANCE from bank.accounts;

本文URL地址:http://www.bianceng.cn/database/Oracle/201410/45449.htm

select timestamp, db_user,os_user,object_schema,object_name,sql_text  from dba_fga_audit_trail;

(2)管理 FGA 策略

--要删除策略,您可以使用以下语句:

begin

dbms_fga.drop_policy (

object_schema => 'BANK',

object_name => 'ACCOUNTS',

policy_name => 'ACCOUNTS_ACCESS'

);

end;

/

-- 对于更改策略而言,没有随取随用的解决方案。要更改策略中的任何参数,必须删除策略,再使用更改后的参数添加策略。

-- 需要临时禁用审计收集 — 例如,如果您希望将线索表移动到不同的表空间或者要删除线索表。您可以按如下方法禁用 FGA 策略:

begin

dbms_fga.enable_policy (

object_schema => 'BANK',

object_name => 'ACCOUNTS',

policy_name => 'ACCOUNTS_ACCESS',

enable => FALSE

);

end;

/

-- 重新启用很简单 enable =>; TRUE

--演示何时审计操作以及何时不审计操作的各种情况 SQL 语句 审计状态

select balance from bank.accounts;   进行审计。用户选择了在添加策略时所指定的审计列 BALANCE。

select * from  bank.accounts;      进行审计。即使用户没有明确指定列 BALANCE,* 也隐含地选择了它。

select cust_id from bank.accounts where balance < 10000; 进行审计。即使用户没有明确指定列 BALANCE,where 子句也隐含地选择了它。

select cust_id from bank.accounts;   不进行审计。用户没有选择列 BALANCE。

select count(*) from bank.accounts;  不进行审计。用户没有明确或隐含地选择列 BALANCE。

(3)处理器模块

-- FGA 的功能不只是记录审计线索中的事件;FGA 还可以任意执行过程。

-- 过程可以执行一项操作,比如当用户从表中选择特定行时向审计者发送电子邮件警告,或者可以写到不同的审计线索中。

-- 这种存储代码段可以是独立的过程或者是程序包中的过程,称为策略的处理器模块。

-- 实际上由于安全性原因,它不必与基表本身处于同一模式中,您可能希望特意将它放置在不同的模式中。

-- 由于只要 SELECT 出现时过程就会执行,非常类似于 DML 语句启动的触发器,您还可以将其看作 SELECT 语句触发器。

-- 以下参数指定将一个处理器模块指定给策略:

--  handler_schema 拥有数据过程的模式

--  handler_module 过程名称

-- 处理器模块还可以采用程序包的名称来代替过程名称。在这种情况下,参数 handler_module 在 package.procedure 的格式中指定。

(4)FGA 数据字典视图

-- FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES 中。

-- 审计线索收集在 SYS 拥有的表 FGA_LOG$ 中。对于 SYS 拥有的任何原始表,此表上的某些视图以对用户友好的方式显示信息。DBA_FGA_AUDIT_TRAIL 是该表上的一个视图。

-- 一个重要的列是 SQL_BIND,它指定查询中使用的绑定变量的值 — 这是显着增强该工具功能的一项信息。

-- 另一个重要的列是 SCN,当发生特定的查询时,它记录系统更改号。

-- 此信息用于识别用户在特定时间看到了什么,而不是现在的值,它使用了闪回查询,这种查询能够显示在指定的 SCN 值时的数据。

时间: 2024-08-30 00:31:28

Oracle FGA策略:细粒度审计的相关文章

现实中的细粒度审计(1)

现实中的细粒度审计(1) 作者:Arup Nanda 了解如何使用 Oracle 数据库的细粒度审计特性来跟踪对表中特定行的只读访问 - 以及更多信息 传统的 Oracle 数据库审计选件允许您在宏观级别上跟踪用户在对象上所执行的操作 - 例如,如果您审计对某个表的 SELECT 语句,则可以跟踪是谁从表中选择了数据.但是,您不知道他们选择了什么.利用数据操纵语句 - 如 INSERT.UPDATE 或 DELETE - 您可以通过使用触发器或使用 Oracle LogMiner 实用程序来分析

Oracle 细粒度审计(FGA)初步认识_oracle

细粒度审计(FGA),是在Oracle 9i中引入的,能够记录SCN号和行级的更改以重建旧的数据,但是它们只能用于select语句,而不能用于DML,如update.insert和delete语句.因此,对于Oracle数据库10g之前的版本,使用触发器虽然对于以行级跟踪用户初始的更改是没有吸引力的选择,但它也是唯一可靠的方法 而Oracle10g中FGA功能的增强使其不但能够支持select操作,同时也支持DML操作.在 Oracle 10g 中, 审计已经从一个单纯的"操作记录者"

Oracle的细粒度审计

从Oracle9i开始,就可以使用DBMS_FGA可以对指定的表的select语句进行审计 但是在9i中只能对select语句进行审计,在10g中可以实现对DML的审计功能 下面用DBMS_FGA来展示select语句的审计功能 ① 假定我们存在表t,包含记录为 sys@ORCL> select * from hr.t; ID NAME ---------- -------------------- 1 a 2 b 3 c 4 d 5 e ② 分析该表,让其使用CBO优化模式 sys@ORCL>

现实中的细粒度审计(2)

现实中的细粒度审计(2) 管理 FGA 策略 在前文中您看到了如何添加 FGA 策略.要删除策略,您可以使用以下语句: begindbms_fga.drop_policy (object_schema => 'BANK',object_name => 'ACCOUNTS',policy_name => 'ACCOUNTS_ACCESS' );end; 对于更改策略而言,没有随取随用的解决方案.要更改策略中的任何参数,必须删除策略,再使用更改后的参数添加策略. 有时您可能需要临时禁用审计收

基于Linux下 Oracle 备份策略(RMAN)

基于Linux下 Oracle 备份策略(RMAN) --********************************** -- 基于Linux下 Oracle 备份策略(RMAN) --**********************************       对于 Oracle 数据库的备份与恢复,尽管存在热备,冷备以及逻辑备份之外,使用最多的莫过于使用RMAN进行备份与恢复.而制定RMAN备份策略则是基于数据库丢失的容忍程度,即恢复策略来制定.在下面的备份策略中,给出的是一个通用

ORACLE备份策略(ORACLE BACKUP STRATEGY)

概要 1.了解什么是备份 2.了解备份的重要性 3.理解数据库的两种运行方式 4.理解不同的备份方式及其区别 5.了解正确的备份策略及其好处   一.了解备份的重要性 可以说,从计算机系统出世的那天起,就有了备份这个概念,计算机以其强大的速度处理能力,取代了很多人为的工作,但是,往往很多时候,它又是那么弱不禁风,主板上的芯片.主板电路.内存.电源等任何一项不能正常工作,都会导致计算机系统不能正常工作.当然,这些损坏可以修复,不会导致应用和数据的损坏.但是,如果计算机的硬盘损坏,将会导致数据丢失,

oracle细粒度审计使用

以scott用户的emp表为示例 ----增加策略 begin DBMS_FGA.ADD_POLICY ( object_schema => 'SCOTT', object_name => 'EMP', policy_name => 'mypolicy1', handler_schema => NULL, handler_module => NULL, enable => TRUE, statement_types => 'INSERT, UPDATE,DELET

oracle中如何关闭审计功能

Oracle 11g缺省安装数据库启动了audit功能,导致oracle不断累积sys.aud$表及相关索引数据量增加: 如果导致表空间满了,在alert日志中将会报ORA-1654: unable to extend index SYS....错误. 如果不用到审计功能,建议关闭审计. 处理过程: 1.用oracle用户登录到数据库服务器,执行: sqlplus / as sysdba 2.取消audit,将初始化参数audit_trail设置为NONE alter system set au

Oracle审计功能

Oracle审计功能 1.什么是审计 审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)..默认情况下审计是没有开启的. 当数据库的审计是使能的,在语句执行阶段产生审计记录. 审计记录包含: (1)有审计的操作. (2)用户执行的操作. (3)操作的日期和