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

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

管理 FGA 策略

在前文中您看到了如何添加 FGA 策略。要删除策略,您可以使用以下语句:

begindbms_fga.drop_policy (object_schema => 'BANK',object_name => 'ACCOUNTS',policy_name => 'ACCOUNTS_ACCESS' );end;

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

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

begindbms_fga.enable_policy (object_schema => 'BANK',object_name => 'ACCOUNTS',policy_name => 'ACCOUNTS_ACCESS',enable => FALSE );end;

要重新启用它,可使用同一函数,但是将参数 enable 设置为 TRUE。

处理器模块

FGA 的功能不只是记录审计线索中的事件;FGA 还可以任意执行过程。过程可以执行一项操作,比如当用户从表中选择特定行时向审计者发送电子邮件警告,或者可以写到不同的审计线索中。这种存储代码段可以是独立的过程或者是程序包中的过程,称为策略的处理器模块。实际上由于安全性原因,它不必与基表本身处于同一模式中,您可能希望特意将它放置在不同的模式中。由于只要 SELECT 出现时过程就会执行,非常类似于 DML 语句启动的触发器,您还可以将其看作 SELECT 语句触发器。以下参数指定将一个处理器模块指定给策略:

handler_schema 拥有数据过程的模式
handler_module 过程名称

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

FGA 数据字典视图

FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES 中。表 2 包含该视图中一些重要列的简短描述。

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

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

另一个重要的列是 SCN,当发生特定的查询时,它记录系统更改号。此信息用于识别用户在特定时间看到了什么,而不是现在的值,它使用了闪回查询,这种查询能够显示在指定的 SCN 值时的数据。我将在本系列的第 2 部分中详细说明这种功能强大的特性。

视图和 FGA

到目前为止我已经讨论了在表上应用 FGA;现在让我们来看如何在视图上使用 FGA。假定在 ACCOUNTS 表上定义视图 VW_ACCOUNTS 如下:

create view vw_accounts as select * from accounts;

现在,如果用户从视图中而不是从表中进行选择:

select * from vw_accounts;

您将看到以下审计线索:

select object_name, sql_text from dba_fga_audit_trail;OBJECT_NAME SQL_TEXT----------- -------------------------------------------------ACCOUNTS select * from vw_accounts

注意,是基表名称而不是视图名称出现在 OBJECT_NAME 列中,因为视图中的选择是从基表中进行选择。但是,SQL_TEXT 列记录了用户提交
的实际语句,而这正是您希望了解的。 接下来的步骤

阅读有关 DBMS_FGA 程序包的更多信息

访问 Oracle 数据库主页

访问 Oracle 平台安全性主页

如果您只希望审计对视图的查询而不是对表的查询,可以对视图本身建立策略。通过将视图名称而不是表的名称传递给打包的过程 dbms_fga.add_policy 中的参数 object_name,可以完成这项工作。随后 DBA_FGA_AUDIT_TRAIL 中的 OBJECT_NAME 列将显示视图的名称,并且不会出现有关表访问的附加记录。

其它用途

除了记录对表的选择访问,FGA 还可用于某些其它情况:

您可以对数据仓库使用 FGA,以捕获特定的表、视图或物化视图上发生的所有语句,这有助于计划索引。您不需要到 V$SQL 视图去获取这些信息。即使 SQL 语句已经超出了 V$SQL 的期限,在 FGA 审计线索中将会始终提供它。

由于 FGA 捕获绑定变量,它可以帮助您了解绑定变量值的模式,这有助于设计直方图集合等。

前文已经提到,处理器模块可以向审计者或 DBA 发送警告,这有助于跟踪恶意应用程序。

由于 FGA 可以作为 SELECT 语句的触发器,您可以在需要这种功能的任何时候使用它。

结论

FGA 使您在 Oracle 数据库中支持隐私和职能策略。因为审计发生在数据库内部而不是应用程序中,所以无论用户使用的访问方法是什么(通过诸如 SQL*Plus 等工具或者应用程序),都对操作进行审计,允许进行非常简单的设置。

下一次我将讨论高级 FGA 技术以及 Oracle Database 10g 中的新特性,这些特性使 FGA 的功能极为强大,适用于所有类型的审计情况。

Arup Nanda (arup@proligence.com) 是 IntelliClaim 的首席数据库设计人员,该公司位于 Connecticut 的 Norwalk,提供对卫生保健保险索赔管理高度安全和基于规则的优化。他是 2003 年度 Oracle DBA 奖的获得者,并与他人合作编著了即将出版的 Oracle 隐私安全性审计(Rampant TechPress 出版,2003)。

表 1:演示何时审计操作以及何时不审计操作的各种情况 SQL 语句审计状态select balance from accounts;进行审计。用户选择了在添加策略时所指定的审计列 BALANCE。select * from accounts;进行审计。即使用户没有明确指定列 BALANCE,* 也隐含地选择了它。select cust_id from accounts where balance < 10000;进行审计。即使用户没有明确指定列 BALANCE,where 子句也隐含地选择了它。select cust_id from accounts;不进行审计。用户没有选择列 BALANCE。select count(*) from accounts;不进行审计。用户没有明确或隐含地选择列 BALANCE。

表 2:数据字典视图 DBA_AUDIT_POLICIES 中重要的列 OBJECT_SCHEMA对其定义了 FGA 策略的表或视图的所有者OBJECT_NAME表或视图的名称POLICY_NAME策略的名称 — 例如,ACCOUNTS_ACCESSPOLICY_TEXT在添加策略时指定的审计条件 — 例如,BALANCE >= 11000POLICY_COLUMN审计列 — 例如,BALANCEENABLED如果启用则为 YES,否则为 NO PF_SCHEMA拥有策略处理器模块的模式(如果存在)PF_PACKAGE处理器模块的程序包名称(如果存在)PF_FUNCTION处理器模块的过程名称(如果存在)

表 3:DBA_FGA_AUDIT_TRAIL 视图中重要的列 SESSION_ID审计会话标识符;与 V$SESSION 视图中的会话标识符不同TIMESTAMP审计记录生成时的时间标记DB_USER发出查询的数据库用户OS_USER操作系统用户USERHOST用户连接的机器的主机名CLIENT_ID客户标识符(如果由对打包过程 dbms_session.set_identifier 的调用所设置)EXT_NAME外部认证的客户名称,如 LDAP 用户OBJECT_SCHEMA对该表的访问触发了审计的表所有者OBJECT_NAME对该表的 SELECT 操作触发了审计的表名称POLICY_NAME触发审计的策略名称(如果对表定义了多个策略,则每个策略将插入一条记录。在此情况下,该列显示哪些行是由哪个策略插入的。)SCN记录了审计的 Oracle 系统更改号SQL_TEXT由用户提交的 SQL 语句 SQL_BIND由 SQL 语句使用的绑定变量(如果存在)

 

时间: 2024-05-08 04:56:18

现实中的细粒度审计(2)的相关文章

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

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

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(

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

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

虚拟现实在现实中触碰虚拟世界:视觉盛宴背后的技术革命

早在50年前,虚拟现实就已出现,如今它有变革人类视觉体验之势.在虚拟现实重构的世界里,我们不仅有视.听.触.嗅等感觉,而且它们将变得愈发真实,与现实世界无异.与虚拟现实相对应的,还有增强现实以及混合现实,它们在改变人类视觉体验的同时,也在真切地变革我们的生活.我们既可用它们来购物,也可进行模拟驾驶,甚至还可用它来治疗疾病.尽管目前虚拟现实技术仍有许多缺陷,但它注定会在不远的将来影响我们每一个人.本文来自上海交通大学软件学院教授杨旭波日前在"新民科学咖啡馆"活动的分享. 早在50多年前,

情人节的浪漫游戏中的恋人能否在现实中相遇

过完农历新年,就是情人节.距离这个日子只有二十天光景了,游戏中的情侣们,是否会在这个特别的日子迎来属于他们的"第一次约会"? 游戏玩家的爱恋 小江(化名)是一个外企白领,上班忙,下班晚,没有时间谈恋爱.2009年3月第一次接触游戏.她认为,网络游戏是很好的消遣方式.在游戏里,她可以认识很多朋友.因为一起组队打副本,认识了一个和在她隔壁写字楼工作的玩家,约定2010年情人节这天见面. 网络游戏是很好的消遣方式 郑科(化名)是刚刚毕业的大学生,现在在一家电器公司工作,平日下班最大的乐趣就是

现实中的周星驰,原来是个深藏不露的投资高手

现实中的周星驰,原来是个深藏不露的投资高手. "这个世界,满街都是黄金,到处都是美女."电影<功夫>中周星驰的经典台词言犹在耳.其实对于有心人来说,香港市场的投资机会也随处隐现. 6月18日,在香港创业板上市的帝通国际(08220)飙升48.15%,收报0.080港元,成交1207.76万港元,远远跑赢当天下跌1.03%的恒生指数.这一名不见经传的公司的股价逆市飙升,皆因沾了周星驰的光. 帝通国际早在6月4日就发出公告,拟以3亿港元的代价,向一间于英属处女群岛注册的公司(B

现实中的医疗机器人

摘要: 最近迪斯尼与漫威合作的动画电影<超能陆战队>成了2014年动画的大黑马,一上线就拿下全美票房冠军,打败的竟然是<星际穿越>.笔者曾写过关于星际穿越里的机器人TARS如何制造 最近迪斯尼与漫威合作的动画电影<超能陆战队>成了2014年动画的大黑马,一上线就拿下全美票房冠军,打败的竟然是<星际穿越>.笔者曾写过关于星际穿越里的机器人TARS如何制造,这次看了这部动画里的机器人健康助手大白(Baymax)之后,又是激动的拍案而起!这不就是理想中的医疗机器人

现实中的容器技术运用案例

进入2016年以后,容器技术早已经从最初的牛逼满天飞到了脚踏实地的大规模铺开.很多企业都已经在实际项目中或深或浅的使用着容器技术,享受到新技术带来的简洁和高效.作为国内最早研究和使用Docker技术的企业,ThoughtWorks在2013年底就在实际项目中将Docker用于测试环境的资源复用,并在之后的许多项目中逐渐总结出许多有用的实践和经验.在这篇文章里,我将聊聊Docker在我经历过项目中的一些比较有代表性的运用场景. 现实中的容器技术运用方式非常广泛而灵活,时常让人觉得脑洞大开,概括来说

《HTML5与CSS3实战指南》——1.6 在现实中,我们想做的是什么

1.6 在现实中,我们想做的是什么 在现实中,我们不会创建了一个网站后,然后去做另一个项目,而对前一个项目的工作置之不理.我们会创建Web应用程序,并对其进行更新.微调,对其潜在的性能问题进行测试,调整其设计.布局和内容. 换句话说,在现实中,我们都会再次访问我们所写的代码.所以我们编写代码时,会使用最可靠.易于维护并高效的方法,并便于以后访问代码对其进行必要的完善和修改.显然,这不仅对我们自己创建和维护的网站及Web应用程序十分重要,同样,也对为我们客户所创建和维护的网站及Web应用程序同等重