Oracle9i Database 推出了一种称为细粒度审计 (FGA) 的新特性,可以审计所有DML语句
例示1.用sys帐号建立用户并赋权限SQL>grant connect,resource to bank identified by bank;
2.登入bank帐号建立accounts表create table accounts(acct_no number not null,cust_id number not null,balance number(15,2));
3.用sys帐号建立审计规则begindbms_fga.add_policy (object_schema>BANK,object_name>ACCOUNTS,policy_name>ACCOUNTS_ACCESS );end;
4.bank帐号查询accounts表select * from bank.accounts;(经测试sys用户查询此表时不会记录在审计信息中其它用户访问时则会记录)
5.sys用户查询审计信息SQL> select timestamp, 2 db_user, 3 os_user, 4 object_schema, 5 object_name, 6 sql_text 7 from dba_fga_audit_trail;
TIMESTAMP DB_USER OS_USER OBJECT_SCHEMA OBJECT_NAM SQL_TEXT-------------- ---------- --------------- --------------- ---------- -----------------------------21-9月 -07 BANK QHTLUJGuser BANK ACCOUNTS select * from accounts
可以增加审计列和审计条件如下begindbms_fga.add_policy (object_schema>BANK,object_name>ACCOUNTS,policy_name>ACCOUNTS_ACCESS,audit_column > BALANCE,audit_condition > BALANCE > 11000 );end;
删除审计策略begindbms_fga.drop_policy (object_schema > BANK,object_name > ACCOUNTS,policy_name > ACCOUNTS_ACCESS );end;
停用审计策略begindbms_fga.enable_policy (object_schema > BANK,object_name > ACCOUNTS,policy_name > ACCOUNTS_ACCESS,enable > FALSE );end;要重新启用它可使用同一函数但是将参数 enable 设置为 TRUE。
也可以对存储过程进行审计用以下两个参数handler_schema 拥有数据过程的模式handler_module 过程名称
FGA 数据字典视图 FGA 策略的定义位于数据字典视图 DBA_AUDIT_POLICIES 中。审计线索收集在 SYS 拥有的表 FGA_LOG$ 中。DBA_FGA_AUDIT_TRAIL 是该表上的一个视图。
10G FGA的扩展
在 Oracle 9i Database 下这个策略只能审计 SELECT 语句。然而在 Oracle Database 10g 中您可以扩展它使它包含 INSERT、UPDATE 和 DELETE。您可以通过指定一个新的参数来实现这个目的
statement_types > INSERT, UPDATE, DELETE, SELECT
statement_type 参数默认情况下只审计 SELECT 语句。
在 FGA 审计线索中获取赋值变量的值:audit_trail DB_EXTENDED,停止获取audit_trail > DB默认情况下捕获赋值变量这个参数的值为 DB_EXTENDED。
FGA 和常规审计差异
如果标准审计和细粒度审计在 Oracle Database 10g 中是类似的您可能要问在什么情况下FGA 将是更好的选择好的让我们研究一下它们的差异。
标准审计必须用参数 AUDIT_TRAIL 在数据库级启用。这个参数不是动态的您必须重启数据库来使其生效。相比而言FGA 不需要任何参数修改。
一旦被设置在一个对象上标准审计将保持在那里。要解除它您必须用 NOAUDIT 命令删除审计选项。这可能很不方便因为在一个表上丢弃审计选项也将丢弃元数据信息。然而FGA 可以临时禁用和启用不丢失任何元数据信息。
FGA 只能够处理四种类型的语句SELECT、INSERT、UPDATE 和 DELETE。相比而言常规审计可以处理其它许多语句和权限甚至会话连接和断开。
标准审计每次会话只创建一条记录按会话或每次访问对象创建一条记录按访问这种占用资源很少的方式对于控制审计线索表中的空间非常重要。FGA 并不是同样节省资源它每次访问运行一次 — 使得线索更大。
通过记录线索标准审计可以用来检测任何中断企图如果企图没有成功则将产生错误代码。而 FGA 不能。
标准审计可以写数据库表或 OS 文件。后者在审计员不是数据库管理员能够访问线索时非常有用。在 Windows 下非数据库审计线索记录在事件日志中并且可以用不同的方式对其进行访问。这个选项保护了审计线索的完整性。然而FGA 日志仅写到数据库表 FGA_LOG$ 中。您可以在 FGA 中创建用户自定义的审计处理程序来写 OS 文件但它们的完整性不能保证。
标准审计可以设置用于默认对象。当表是在运行期创建时这个功能变得极为有用默认的审计选项允许没有数据库管理员干预的审计。这在 FGA 中是不可能的用户必须在一个现有的表上创建策略上述的情况只能在表已创建之后才可能发生。
在 FGA 中审计更加灵活 — 仅当访问某些列当某个特定的条件为真时等等。这种多功能性在您需要控制线索的增长时非常方便。
在 FGA 中SQL 赋值变量默认被捕获。在常规审计中必须把初始化参数 audit_trail设为 db_extended以启用这一功能。
权限差异常规审计需要审计系统或语句权限FGA 只需要 dbms_fga 程序包上的运行权限。
通过上面的比较您将了解为什么可以证明 FGA 在某些情况下很有用。利用 Oracle Database 10g 中的增强的常规审计特性一些以前认为不可能的任务 — 例如捕获赋值变量的值 — 变得十分容易。
来自 “ ITPUB博客 ” 链接http://blog.itpub.net/271283/viewspace-998396/如需转载请注明出处否则将追究法律责任。
转:http://blog.itpub.net/271283/viewspace-998396/