oracle的细粒度审计

本文介绍了Oracle9i数据库的细粒度审计(FGA)特性,允许对SELECT语句进行详细审计,解决了传统审计选件在跟踪用户对特定数据的访问时的局限。通过FGA,DBA可以构建一个系统,审计用户对ACCOUNTS表中特定行的SELECT访问,例如审计余额大于11000美元的账户。审计信息存储在DBA_FGA_AUDIT_TRAIL视图中,包括时间戳、用户信息、操作对象及SQL文本。FGA策略的管理包括添加、删除和启用/禁用。此外,处理器模块可以配置为在选择特定数据时执行操作,例如发送警告邮件。
摘要由CSDN通过智能技术生成
导读:

  

   oracle的细粒度审计

  传统的 Oracle 数据库审计选件允许您在宏观级别上跟踪用户在对象上所执行的操作 — 例如,如果您审计对某个表的 SELECT 语句,则可以跟踪是谁从表中选择了数据。但是,您不知道他们选择了什么。利用数据操纵语句 — 如 INSERT、UPDATE 或 DELETE — 您可以通过使用触发器或使用 Oracle LogMiner 实用程序来分析归档日志,从而捕获任何的更改。因为简单的 SELECT 语句是不操纵数据的,它们既不启动触发器,也不记入到那些以后可以进行挖掘的归档日志中,所以这两种技术在涉及到 SELECT 语句的地方无法满足要求。

  Oracle9i Database 推出了一种称为细粒度审计 (FGA) 的新特性,它改变了这种局面。该特性允许您将单个的 SELECT 语句联同用户提交的确切语句一起进行审计。除了简单地跟踪语句之外,FGA 还通过在每次用户选择特定的数据集时执行一段代码,提供了一种方法来模拟用于 SELECT 语句的触发器。在分为三部分的这一系列文章中,我将说明如何使用 FGA 解决实际问题。这第一部分的主要内容是构建基本的 FGA 系统。

  示例安装

  我们的示例基于一个银行系统,已经通过应用程序级的审计按照传统提供了用户访问特定数据的审计线索。但是,只要用户使用诸如 SQL*Plus 等工具从应用程序以外的地方访问数据,该系统就不能满足要求。在本文中,我将说明作为 DBA 的您能够如何使用 FGA 来完成捕获用户对特定行的 SELECT 访问的任务,无论访问的工具或机制是什么。

  在我们的示例中,数据库有一个名为 ACCOUNTS 的表,由模式 BANK 拥有,其结构如下:

  Name Null? Type

  ---------------- -------- ------------

  ACCT_NO NOT NULL NUMBER

  CUST_ID NOT NULL NUMBER

  BALANCE NUMBER(15,2)

  为了构造一个能够对任何在此表中选择的用户进行审计的系统,您需要定义对该表的 FGA 策略如下:

  begin

  dbms_fga.add_policy (

  object_schema=>'BANK',

  object_name=>'ACCOUNTS',

  policy_name=>'ACCOUNTS_ACCESS'

  );

  end;

  这段代码必须由具有执行程序包 dbms_fga 权限的用户来执行。但是,为了提高安全性,建议不要对用户 BANK(将要被审计的表的所有者)授予执行权限;而应该将权限授予一个安全的用户(比如 SECMAN),此用户应该执行添加策略的过程。

  在定义了策略以后,当用户以通常的方式对表进行查询时,如下所示:

  select * from bank.accounts;

  审计线索记录此操作。您可以使用以下语句查看线索:

  select timestamp,

  db_user,

  os_user,

  object_schema,

  object_name,

  sql_text
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值