|
例如,下面演示了对于用户 ARUP(他没有表 credit_cards 的选择权限)而言,字母值如何随时间而更改。
- ARUP 执行命令语句 select * from CCMASTER.CREDIT_CARDS。
- 该语句失败,从而引发 ORA-00942:table or view does not exist。
- 审计跟踪中出现一个记录,且 ses_actions 值为 ---------F------。(注意,“F”位于第 10 个位置,表示失败。)
- ARUP 未与会话断开连接。表 credit_cards 的拥有者 CCMASTER 将 select 权限授予 ARUP。
- ARUP 现在成功地从表中进行选择。
- ses_action 列值现在将更改为 ---------B------。(注意,第 10 位置已从“F”更改为“B”(成功和失败)。)
对该对象进行了一段时间的审计并开发了它的访问配置文件后,可以针对成功尝试关闭审计,并仅针对失败尝试启用审计。表示潜在攻击的通常是失败尝试。只对失败尝试进行审计还将降低审计跟踪的总长度。
如果按访问启用了审计,则可能使用了一个不同的查询,这是因为每个访问将有一个记录。ses_actions 列将不被填充,而 action_name 列将显示实际操作(如 select 或 insert)而非值 SESSION REC。因此,您将使用: col ts format a15
col username format a15
col userhost format a15
col action_name format a10
select to_char(timestamp,a�?mm/dd/yy hh24:mi:ssa�?) ts,
username, userhost, action_name
from dba_audit_trail
where owner = 'CCMASTER'
and obj_name = 'CREDIT_CARDS';
TS USERNAME USERHOST ACTION_NAM
----------------- ---------- --------------- ----------
01/16/06 00:27:44 ARUP stcdwhpd SELECT
01/16/06 11:03:24 ARUP stcdwhpd UPDATE
01/16/06 12:34:00 ARUP stcdwhpd SELECT
注意,每个访问(select、update 等)均有一个记录,这将为您提供更高的粒度来建立访问模式 - 这与会话级审计相反,该审计只显示 ARUP 从表 credit_cards 中执行了选择和更新操作,但未显示操作次数或时间。
既然如此,应使用哪种类型的审计 - 会话级还是访问级?注意,由于访问级审计针对每个访问写入一个记录,因此写入的审计信息数量明显大于每个会话只写入一个记录时的信息数量。如果只尝试确定表的访问用户和访问方式,则应先打开会话级审计。这将使您可以了解用户如何访问每个对象。要跟踪特定用户的错误使用,可以打开访问级的审计。 可能的影响 根据前面的描述,审计不会影响性能。但审计的好处可能远远超过不利影响,尤其是当您巧妙地启用它时。此外,您不必始终打开它;您可以根据需要动态打开或关闭对象审计。
操作计划
- 在不审计所有对象的情况下,标识要审计的主要对象(表、程序包、视图)
- 对这些对象打开会话级审计。
- 一段时间之后(您认为该段时间代表典型的工作周期),分析审计跟踪。等待收集记录的时间通常取决于特定情况。例如,在零售业中,您可能要等待一个月的时间,在这段时间内通常会捕获所有过程,如月终处理、帐目汇总等。
- 开发配置文件后,请跟踪失败尝试。记录用户以及他们尝试访问的对象。
- 关闭会话级审计并只对这些对象打开访问级审计。
- 通过突出显示失败尝试、时间、尝试源自的终端等信息来分析访问模式,并确定尝试失败的原因。如果没有合理的原因,请将该尝试视为潜在的安全漏洞。
3.7 对未来对象启用审计
背景 到现在为止,您已经了解了如何针对特定的机密对象使用审计。您还可能决定对所有对象而非对象子集启用审计 - 您并不知道哪些对象是机密对象,也许它们全部是机密对象。这种情况下,将出现如下问题:不断在数据库中创建对象,并在对象物化时,您必须记住对它们启用审计。
策略 默认审计在此处非常有用。要对任何尚未创建的对象启用审计,请执行以下命令: audit select on default by session; (编辑:aniston)
|