分享
 
 
 

Oracle 细料度审计

王朝oracle·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

-- 审计表

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;

/

-- 这个不可用,Why?

select BALANCE from bank.accounts;

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

--治理 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 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。

--处理器模块

-- 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 是该表上的一个视图。

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

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

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

--视图和 FGA

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

create view bank.vw_accounts as select * from bank.accounts;

select * from bank.vw_accounts;

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

-- 假如您只希望审计对视图的查询而不是对表的查询,可以对视图本身建立策略。

-- 通过将视图名称而不是表的名称传递给打包的过程 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 的功能极为强大,适用于所有类型的审计情况。

数据字典视图 DBA_AUDIT_POLICIES 中重要的列

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

OBJECT_SCHEMA 对其定义了 FGA 策略的表或视图的所有者

OBJECT_NAME 表或视图的名称

POLICY_NAME 策略的名称 ― 例如,ACCOUNTS_ACCESS

POLICY_TEXT 在添加策略时指定的审计条件 ― 例如,BALANCE >= 11000

POLICY_COLUMN 审计列 ― 例如,BALANCE

ENABLED 假如启用则为 YES,否则为 NO

PF_SCHEMA 拥有策略处理器模块的模式(假如存在)

PF_PACKAGE 处理器模块的程序包名称(假如存在)

PF_FUNCTION 处理器模块的过程名称(假如存在)

数据字典视图 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 语句使用的绑定变量(假如存在)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有