fag oracle 审计_oracle审计

本文详细介绍了Oracle数据库的审计机制,包括审计的概念、目的、不同类型和应用场景。审计可以帮助监控和记录用户操作,确保数据安全,防止非法访问。文章讨论了标准审计、细粒度审计、审计策略的创建和管理,以及审计数据的存储和清理。此外,还涉及了对sys管理员账户的审计以及如何通过触发器记录审计信息。

审计

1.审计是什么?

审计就是对选定用户在数据库中操作进行监控和记录。包括数据库用户和非数据库层次用户。(非数据库层次用户就是使用client_identifier属性标识的应用用户。

要对这些用户进行审计,可以使用fine-grained audit policy)。可以对单个操作进行审计,比如sql语句的执行类型,或者包括用户名、应用、时间等的结合。

你既可以审计成功的活动,也可以审计失败的。

要使用审计,需要开启并配置必要的审计项。审计的结果存储到数据字典表或操作系统文件中。

oracle推荐使用和配置审计。审计是一种有效的内部强制控制,可以是你的设置符合规范要求。它使你能够监控商业操作,找到违反公司规范的活动。

这些行为在数据库和应用中被严格控,确保在日程上应用补丁并阻止特定修改。

将审计设置为默认,就可以生成审计记录。要精心选择审计,确保符合商业应用需求。

2.为什么要进行审计

通常用于以下活动:

1)确保行为的准确性。包括对特定模式、表、行货影响特定内容的行为

2)根据账号探测到非预期操作的用户

3)调查可疑的活动。比如某个用户删除了表中数据,安全管理员可能决定审计数据库连接和所有成功的、不成功的对数据库中所有表的行删除操作。

4)将非授权用户的行为通知审计员。

5)监控和汇总特定数据库活动信息。比如数据库管理员收集哪些表被更新、进行了哪些逻辑i/o、当前有多少用户连接等

6)探测某个授权的问题或者控制执行。比如你可以创建审计策略,规定不要生成审计信息,因为数据通过其他方式保护。

这样,当有审计信息生成时,你就知道其他的安全控制失效了。

7)定位审计要求。

3.保护数据库审计痕迹

oracle将审计信息写入到sys.aud$和sys.fga_log$表。有管理员权限的用户可以删除这两个表的内容。同时,管理员未授权(非预期)的行为也可以被审计。

其他保护数据库审计痕迹的方法有:

1)设置07_dictionary_accessibility参数为false(默认)。这样,sysdba用户才可以对sys.aud$、sys.fga_log$进行删除。

2)如果安装了oracle vault,在system.aud$表创建一个范围(create a realm arcound the system.aud$ table)。默认aud$表在system用户下,通过同义词同步到sys。

4.总是被记录到标准和细粒度审计的活动

当开启标准审计时(audit_trail是db或 db,extended时),oracle审计所有非sys用户的dml操作。(即使没对sys.aud$和sys.fga$设置审计选项也会这样做)。

通常,sys以外的用户无法访问这些表,除非被显式授权。如果非sys用户篡改了这两个表,oracle为每个这样的操作记录一行。

如果设置了aduit_sys_operations=true,oracle也会在这两个表中审计sys用户的DML操作。这样,所有sys操作被写入到audit_file_dest参数指定的路径。如果audit_file_dest未设置,将其写入到基于操作系统的某个位置。

5.所有平台上都会被审计的活动

oracle总是审计特定的数据库相关操作,并将其写入操作系统审计文件中。包括一些sysdba或sysoper权限的行为。这叫做强制审计。

即使开启了审计跟踪(设置audit_trail=DB),数据库仍会将强制记录写入操作系统文件中。

默认的审计跟踪文件放在$ORACLE_BASE/admin/$ORACLE_SID/adump路径下(unix和windows)。windows下还会将其写入事务表(windows event viewer)。

你可以通过修改audit_file_Dest修改该路径。

强制审计的内容:

数据库启动 该信息存在操作系统审计跟踪中,因为启动过程中数据库的审计跟踪还无法访问

sysdba和sysoper登录

数据库关闭

如果设置了audit_syslog_level参数,强制行为写入到UNIX系统日志。

6.分布式数据库的审计

实例只审计直接连接的用户行为。本地oracle数据库不能审计远程数据库发生的行为。

实际环境中,只应该对敏感的、最关系的数据进行审计。(比如薪水)。而且要定期删除审计信息。

二、审计的类型

1.一般活动

审计sql语句、权限、模式对象、函数、存储过程、包、触发器、网络活动。

比如,可以在某个用户执行update、delete语句时进行审计。

oracle将审计记录写入audit_trail初始化参数执行的位置。

2.默认的,安全相关的sql语句和权限

oracle提供的一系列默认审计设置。

结果写入audit_trail参数指定位置。

3.特定的,细粒度活动

对于特定范围的数据,比如value>7800的,特定IP的

可以将设计记录写到数据库审计跟踪或xml格式的操作系统审计跟踪中

4.sys管理用户

可以对sysdba或sysoper权限连接的用户直接指定的sql进行审计。不包括pl/sql过程、函数。

三、标准审计

普通用户可以使用audit语句在自己的模式下进行审计,使用noaudit清除配置。

使用audit语句不受audit_trail参数限制。

如果审计被禁用了,下一次将开启。

对其他模式下的对象进行审计,需要audit any system权限

审计system权限,需要audit system权限

如果07_dictionary_accessibility参数为false,只有sysdba权限用户可以对sys.aud$和sys.fga_log$进行dml操作。

审计信息与事务是独立的,即使相关事务回滚了,审计记录仍存在。

语句和权限的审计需要在会话开启之前设置。已经开启的会话不受这些审计设置影响。

相反,对模式对象的审计立即生效。

audit_trail参数决定是否创建审计跟踪、将审计活动写到操作系统文件、或禁用审计。

开启或关闭标准审计,需要管理员权限登录数据库,执行alter system语句。需要重启实例。

使用show parameter显示audit_trail当前的设置。

audit_trail参数有以下几个值可供设置:

DB:直接审计记录记录到数据库审计跟踪(sys.aud$表),前置的和sys的跟踪记录放到操作系统跟踪文件中。

只读方式打开库时,若audit_trail设置为DB,将被自动改为OS。

DB,extended:与DB相似,但在sys.aud$表中包含CLOB字段的记录。这样可以看到绑定变量的信息。

设置语句:ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;

只读方式打开库时,若audit_trail设置为DB,将被自动改为OS。

OS: 所有审计记录放到操作系统文件中。oracle推荐方式。

这种方式需要设置audit_file_Dest、audit_Sys_operations、audit_Syslog_level

XML:以xml格式写入操作系统跟踪文件。

XML,extended:与xml形式相似,但包含所有sql和sql绑定信息

NONE:禁用标准审计

注意:

运行audit或noaudit语句不需要重启数据库。只有在进行全局设置时才需要重启。比如设置了audit_trail参数

细粒度审计或sys审计不需要开启audit_trail

3.使用操作系统审计跟踪

其中包括数据库的审计跟踪记录

强制审计记录

sys审计记录

(既可以是文本形式,也可以是xml形式)

优势:

减少停止服务的攻击(reduces the likelihood of a denial-of-service (DoS) attack.)

更加安全。避免数据库管理员修改跟踪信息

可以限制特定用户的访问

减少数据库负载

使用xml格式,使用v$xml_audit_trail视图通过sql传递给其他管理员

指定跟踪路径:ALTER SYSTEM SET AUDIT_FILE_DEST = directory_path DEFERRED;

查看:SHOW PARAMETER AUDIT_FILE_DEST

操作系统上跟踪文件的位置:

audit_file_Dest指定的位置,否则在$ORACLE_BASE/admin/$ORACLE_SID/adump的第一个参数的位置;

或者操作系统的特定位置。

4.使用syslog 审计追踪

避免DBA对结果的篡改

5.audit和noaudit语句如何生效

可以对某些语句、权限、对象或网络(网络协议、网络层)进行语句审计。

既可以追踪成功执行的,也可以只追踪未成功执行的。 如:AUDIT CREATE TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;

行为的审计:AUDIT SELECT TABLE BY ACCESS;   by access分为logon和logoff两种方式。

特定用户的特定性为审计:AUDIT SELECT TABLE, UPDATE TABLE BY scott, blake BY ACCESS;

关闭语句不包含具体选项,直接执行:UNAUDIT;

审计sql语句

审计DDL:AUDIT TABLE审计所有创建、删除表的操作

审计DML:AUDIT SELECT TABLE审计对表或视图的select

审计某个用户的所有动作:AUDIT ALL BY xxx BY ACCESS;

审计登录和注销:AUDIT SESSION BY ACCESS;

审计由于对象不存在而报的错:AUDIT NOT EXISTS;

删除语句审计:

NOAUDIT session;

NOAUDIT session BY preston, sebastian;

NOAUDIT DELETE ANY TABLE;

NOAUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE;

6.审计权限

如果我们进行权限审计,需要注意以下场景:

比如我们要对scott的select any table权限进行审计。当scott用户对scott.emp进行查询时,并不会生成审计记录,因为此过程中并没有用到select any table权限。scott对其自己所拥有的表即使在不授权的情况下也能进行查询操作;

当scott用户查询hr.employees表时,会被审计并记录下来。因为没有select any table权限的话,scott无法对其他用户拥有的表进行查询。

7.多层环境下

8.审计模式对象

可以对表、视图、序列、独立存储的存储过程或函数、包进行审计。但不能对包中的单个存储过程进行审计。

不能直接审计引用了簇、数据库链接、索引或同义词的语句。但你可以通过审计影响这些基表的操作来间接审计。

当审计模式对象时,审计被应用于所有数据库用户。不能设置对某些特定用户进行审计。可以为所有审计模式对象设置默认的模式对象审计选项。

1)对编辑的对象进行标准审计

当对一个对象设置了审计策略时,将应用与所有可见的对象编辑。当编辑的对象被实现时,一些新加的审计策略被添加进去。当你新应用了一个遗传的编辑对象,该行为将实现它。

可以查询dba_common_audit_trail、v$xml_audit_trail视图的object_name和object_edition_name列获得对象修改的审计。

2)视图、存储过程和其他元素的模式对象审计选项

视图和存储过程是参照当前存在的模式对象创建的。由于这种依赖,有一些独有的参数应用于审计视图和存储过程,例如生成多个审计记录的可能性。

3)配置模式对象审计

用户可以对自己模式下的表进行审计,为其他模式下的表生成审计信息或设置默认对象审计选项需要audit any系统权限。通常只有安全管理员有audit any权限。

如:AUDIT SELECT, INSERT, DELETE ON jward.dept BY ACCESS WHENEVER SUCCESSFUL;

4)删除对象审计

noaudit delete on emp;

模式对象的拥有者才能删除特定对象的对象审计选项。或者有audit any系统权限。

5)为将来可能创建的对象设置审计

有两种方式:

在audit语句中使用语句审计选项 audit insert table by access;

在audit语句中使用on default子句 audit all on default by access;

该语句默认审计所有创建对象语句。on关键字指定审计的对象。on default配置以下语句影响的创建对象:

alter execute insert select audit grant lock update commit flashback read delete index rename

要限制对特定行为的on default,输入类似以下的语句:

audit alter ,delete on default by access;

6)审计目录对象

AUDIT EXECUTE ON DIRECTORY my_exec BY ACCESS;

NOAUDIT EXECUTE ON DIRECTORY my_exec;

7)审计函数、存储过程、包和触发器

可以对独立的包、存储过程和函数进行审计

如果审计包,就是里面的所有函数和存储过程

如果开启了对所有执行的审计,oracle审计数据库中该包的所有的触发器以及所有函数、存储过程

如果需要对oracle虚拟权限数据库策略的审计,注意:

动态策略:oracle会估算两次,一次是在编译时,另一次在语句执行时。因此每次评估生成两条记录

静态策略:oracle评估策略功能一次,并缓存到SGA

内容敏感性策略:oracle在解析语句时执行策略功能一次。只有一条记录产生

开始审计:

audit execute procedure by access; --对所有存储过程、函数、触发器和包进行审计

AUDIT EXECUTE PROCEDURE BY psmith BY ACCESS;

AUDIT EXECUTE ON sales_data.check_work BY ACCESS WHENEVER SUCCESSFUL;

结束审计:

NOAUDIT EXECUTE PROCEDURE;

NOAUDIT EXECUTE PROCEDURE BY psmith;

NOAUDIT EXECUTE ON sales_data.checkwork;

8)网络的审计

可以对网络协议错误或网络中各层的内部错误进行审计。

网络审计能捕获连接到客户端过程中的错误。这些错误是有sql*net引擎抛出来的。

可以审计的内容比如:数据库中用于测试的内部事务设置造成网络错误;加密配置冲突。网络审计不包括action 122 network error这样的未连接错误。只有网络中数据错误能够被审计。

在审计记录的comment_text列记录了网络审计的授权类型和sql*net客户端地址。格式为:

Authenticated by: authentication_type; Client Address: SQLNetAddress_of_client。审计的网络错误见337页。

命令:

AUDIT NETWORK BY ACCESS;

NOAUDIT NETWORK;

四、对于安全相关的sql语句和权限使用默认审计

使用DBCA创建数据库时,oracle使用安全相关语句和权限为数据库配置了对最常见问题的审计。还设置了audit_trail初始化参数为DB。这时可以根据需要使用不同的审计类型(比如想使用OS,将审计记录到操作系统文件中)。

手工建库需要运行secconf.sql脚本对数据库应用所有默认的审计设置。

默认审计设置的开启和关闭

11g手工建库需要执行secconf.sql,DBCA会自动设置审计;(脚本位于$ORACLE_HOME/rdbms/admin)

undoaud.sql用于将10gR2的审计设置关闭。

五、用fine-grained auditing进行特定活动的审计

细粒度审计可以对特定的情况进行审计,基于内容来监控。一般来说细粒度审计是基于用户定义的表对象上的为此信息进行选择性地审计。在接收数据过程中一旦某行与审计策略匹配,就记录一条信息。

通过细粒度审计可以审计:

某个表从周六到周日或上午九点到下午六点的访问;

使用外网的ip地址;

选择或修改表列;

修改表列的值;

注意:细粒度审计只提供基于成本的优化。对于使用基于规则的优化器,细粒度审计在应用过滤器之前进行审计检查,可能造成非预期的审计事件被触发。

闪回数据的审计,强制应用到特定闪回快照的数据上。

如果想要使用直接路径导入(比如数据仓库执行DML操作导入的),考虑使用标准审计。

细粒度审计数据存储在sys.fga_log$表中。可以查询dba_fga_audit_trail得到为审计策略生成的记录。dba_common_audit_trail数据字典将标准审计和细粒度审计记录汇总记录。此外,可以查询v$xml_audit_trail查看细粒度审计记录的xml形式。

oracle总是将对sys.fga_log$的审计增删改(包括merge)操作记录到sys.aud$中。并且sys以外的用户无法删除记录。如果将audit_sys_operations初始化参数设置为true,sys的操作也被审计。这时,所有sys用户的操作被写入到audit_file_dest初始化参数指向的位置。如果未设置audit_file_dest,所有记录写入操作系统特定的位置。

细粒度审计的优点:

创建的审计更有意义,只包括非常特定的行为。

1)进行了布尔条件检查。只有指定条件符合才发生审计

2)记录了触发审计的sql语句。既包括语句本身,还包括了绑定变量。(但无法对object列、lob或用户自定义类型进行记录)。除非用dbms_fga.add_policy将audit_trail设置为db+extended或xml+extended

3)对于敏感列增加额外的保护

4)提供了事务处理特性。比如你可以写了一个函数,在审计列不应该修改的时候被修改时,发送警告邮件给安全管理员。

5)开启细粒度审计不需要设置初始化参数。使用dbms_fga包就能增加或删除细粒度审计策略

创建细粒度审计策略需要对dbms_fga包的执行权限。

细粒度审计中总是被审计的活动

sys.aud$记录所有sys以外用户使用dml语句对sys.fga_log$表的操作。即使未对sys.fga_log$开启审计,也会隐式审计。可以查询dba_fga_audit_trail和dba_common_audit_trail。

如果准备应用基于编辑的重定义,可以用视图覆盖应用使用的所有表,那么必须将保护这些表的审计策略应用到视图上。

7.为细粒度审计记录创建审计跟踪

创建审计策略时,用dbms_fga.add_policy设计审计跟踪格式。将该参数设置为xml或xml+extended。如果你要将审计记录写入sys.fga_log$,设置dbms_fga.add_policy的audit_trail为db或db+extended。

对v$xml_audit_trail视图执行查询可以将xml文件的审计记录编程dba可理解的记录形式。对该视图的查询造成所有audit_file_dest指定目录下的所有xml文件被解析并形成相关的表的形式。

dba_common_audit_trail包括v$xml_audit_trail的内容。

由于审计xml文件在所有平台上都存储在xml形式,动态视图产生的审计信息在所有平台上相似。

8.细粒度审计如何生成记录

使用细粒度审计,在sql语句中每参照表或视图一次,就生成一条审计信息。如果union语句参照了两次表,就会生成两条记录。

9.使用dbms_fga包管理细粒度审计

使用dbms_fga包可以将select、update、insert、delete语句结合起来生成审计策略。通过审计insert、update还可以审计merge语句。要管理细粒度审计策略,需要对dbms_fga包的execute权限。

创建一条细粒度审计策略:

使用dbms_fga.add_policy存储过程创建审计策略。细粒度审计在表或视图上的最大记录数为256.在数据字典表中存储审计策略,但可以在sys用户以外的表或视图上创建审计。

尽管细粒度审计策略定义存储在sys.fga$中,但策略并不存储在特定用户下面。

细粒度审计策略创建后无法修改,只能删掉重建。

如果一个表列创建了细粒度审计策略,不能对其加密或解密。否则会报错ora-28133。

要更新一列,首先临时禁用掉细粒度审计策略,然后加密或解密该列,然后重新启用细粒度审计策略。

add_policy过程的参数为:

DBMS_FGA.ADD_POLICY(

object_schema VARCHAR2,--要审计对象所在用户的名称,如果是空,就假设是当前用户

object_name VARCHAR2,--要审计的对象

policy_name VARCHAR2,--审计策略的名称

audit_condition VARCHAR2,--制定一个布尔条件,若为空,就表示true,即对所有行为

audit_column VARCHAR2,--执行一列或多列,包括隐藏列。未指定表示所有列

handler_schema VARCHAR2,--如果违反策略时要向其他用户发送告警,执行此用户名

handler_module VARCHAR2,--指定处理措施的名称。包含处理措施所在的包。

--不能造成某个动作死循环或者启用、禁用细粒度审计策略,否则报错ora1000、36、28144

enable BOOLEAN,--启用或禁用策略,默认为ture,即启用

statement_types VARCHAR2,--指定要审计的动作,如insert、update、delete、select

audit_trail BINARY_INTEGER IN DEFAULT,--指定审计记录存储位置以及是否统计fga_log$的lsqltext和lsqlbind列;如果指定audit_Trail为xml,会将xml文件写入到audit_File_Dest参数指定位置;对只读数据库,oracle将审计记录写入xml格式文件,不管audit_trail如何设置

audit_column_opts BINARY_INTEGER IN DEFAULT);--如果制定了多行,该参数判断是否审计所有或单独的行(DBMS_FGA.ALL_COLUMNS和DBMS_FGA.ANY_COLUMNS两个值)

比如创建策略:

BEGIN

DBMS_FGA.ADD_POLICY(

object_schema => 'HR',

object_name => 'EMPLOYEES',

policy_name => 'chk_hr_employees',

enable => TRUE,

statement_types => 'INSERT, UPDATE, SELECT, DELETE',

audit_trail => DBMS_FGA.DB);

END;

/

创建后可以在dba_audit_policies视图查看到。

对employees的增删改查操作被记录到审计日志中。

禁用细粒度审计策略:

DBMS_FGA.DISABLE_POLICY(

object_schema VARCHAR2,

object_name VARCHAR2,

policy_name VARCHAR2 );

如果审计的对象被删除或创建审计策略的用户被删除,审计策略也会被删除。

10.为细粒度审计增加邮件告警信息

需要以下步骤:

■Step 1: Install and Configure the UTL_MAIL PL/SQL Package

■Step 2: Create User Accounts

■Step 3: Configure an Access Control List File for Network Services

■Step 4: Create the Email Security Alert PL/SQL Procedure

■Step 5: Create and Test the Fine-Grained Audit Policy Settings

■Step 6: Test the Alert

■Step 7: Remove the Components for This Tutorial

11.审计非数据库用户

1)创建用户账户,确认状态

sysdba用户登录,创建sysadmin_fga账号,授权:

GRANT CREATE SESSION, DBA TO sysadmin_fga IDENTIFIED BY password;

GRANT SELECT ON OE.ORDERS TO sysadmin_fga;

GRANT EXECUTE ON DBMS_FGA TO sysadmin_fga;

GRANT SELECT ON SYS.FGA_LOG$ TO sysadmin_fga;

确保实验所需的OE用户可登陆

2)创建细粒度审计策略

sysadmin_fga用户登录,执行:

BEGIN

DBMS_FGA.ADD_POLICY(OBJECT_SCHEMA => 'OE',

OBJECT_NAME => 'ORDERS',

POLICY_NAME => 'ORDERS_FGA_POL',

AUDIT_CONDITION => 'SYS_CONTEXT(''USERENV'', ''CLIENT_IDENTIFIER'') = ''Robert''',

HANDLER_SCHEMA => NULL,

HANDLER_MODULE => NULL,

ENABLE => True,

STATEMENT_TYPES => 'INSERT,UPDATE,DELETE,SELECT',

AUDIT_TRAIL => DBMS_FGA.DB + DBMS_FGA.EXTENDED,

AUDIT_COLUMN_OPTS => DBMS_FGA.ANY_COLUMNS);

END;

/

表示对非数据库的用户Robert的增删改查操作进行审计。

3)测试策略

sysadmin_fga登录并查询:

SELECT DBUID, LSQLTEXT FROM SYS.FGA_LOG$ WHERE POLICYNAME='ORDERS_FGA_POL';

然后用OE用户登录,并执行:

EXEC DBMS_SESSION.SET_IDENTIFIER('Robert');

表示身份模拟为Robert。

对开启审计的ORDERS表进行查询:

SELECT COUNT(*) FROM ORDERS;

sysadmin_fga再次查看:

SELECT DBUID, LSQLTEXT FROM SYS.FGA_LOG$ WHERE POLICYNAME='ORDERS_FGA_POL';

发现多了一条记录

4)删除内容

DROP USER sysadmin_fga CASCADE;

六、审计sys管理员账户

审计system用户的方法与普通用户一样,如:

audit insert any table by system by access;

审计sys或使用sysdba、sysoper的方法:

--将审计内容写入操作系统的跟踪文件中

ALTER SYSTEM SET AUDIT_SYS_OPERATIONS=TRUE SCOPE=SPFILE;

--将结果写成xml格式文件:

ALTER SYSTEM SET AUDIT_TRAIL=XML, EXTENDED SCOPE=SPFILE;

重启数据库

七、使用触发器将审计数据写入表

CREATE TABLE emp_tab (

empno NUMBER(4),

ename VARCHAR2(10),

job VARCHAR2(9),

mgr NUMBER(4),

hiredate DATE,

sal NUMBER(8,2),

deptno NUMBER(2));

/* 2. Create a table to capture the audit data. */

CREATE TABLE emp_audit_tab (

oldname VARCHAR2(10),

oldjob VARCHAR2(9),

oldsal NUMBER (8,2),

newname VARCHAR2(10),

newjob VARCHAR2(9),

newsal NUMBER(8,2),

user1 varchar2(10),

systemdate TIMESTAMP);

/* 3. Create a trigger to record the old and new values, the author of the change,and when the change took place. */

CREATE OR REPLACE TRIGGER emp_audit_trig

AFTER INSERT OR DELETE OR UPDATE ON emp_tab

FOR EACH ROW

BEGIN

INSERT INTO emp_audit_tab (

oldname, oldjob, oldsal,

newname, newjob, newsal,

user1, systemdate

)

VALUES (

:OLD.ename, :OLD.job, :OLD.sal,

:NEW.ename, :NEW.job, :NEW.sal,

user, sysdate

);

END;

/

八、管理审计跟踪记录

根据设置,审计跟踪信息可以存储在数据库中,也可以存储在操作系统文件中。

标准审计和默认的审计信息被写入到sys.aud$中,而细粒度审计信息写入到sys.fga_log$。这两个表都位于system表空间,属于sys用户。可以通过以下视图查看:

dba_audit_trail获得sys.aud$的内容

dba_fga_audit_trail获得sys.fga_log$的内容

dba_common_audit_trail获得sys.aud$和sys.fag_log$的内容

sys.aud$和sys.fga_log$的clientid记录非数据库用户的名称;

sys.aud$的userid和sys.fga_log$的dbuid记录数据库用户名称;

dba_audit_trail、dba_fga_audit_trail、dba_common_audit_trail在client_id、username和db_user存储这些内容

如果将审计记录放在操作系统文件中,可以选择文本或xml格式。通过v$xml_audit_trail查看xml格式文件的内容

1.管理数据库审计跟踪

审计数据存储在system表空间中,如果内容过多,可能影响性能,并且使system表空间使用量越来越大。因此可以将其放到其他表空间。使用以下语句:

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

AUDIT_TRAIL_LOCATION_VALUE => 'AUD_AUX');

END;

应该定期将审计跟踪记录归档和清除。有两种方法,一种是安装oracle audit vault,另一种是使用oracle data warehouse。

2.管理操作系统审计跟踪

如果当前审计跟踪记录存储在操作系统文件中,当该文件被填满时,oracle会将跟踪结果放到数据库中。

设置操作系统审计跟踪文件大小:

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

AUDIT_TRAIL_PROPERTY => DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,

AUDIT_TRAIL_PROPERTY_VALUE => 102400);

END;

/

清空操作系统审计跟踪文件:

BEGIN

DBMS_AUDIT_MGMT.CLEAR_AUDIT_TRAIL_PROPERTY(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

AUDIT_TRAIL_PROPERTY => DBMS_AUDIT_MGMT.OS_FILE_MAX_SIZE,

USE_DEFAULT_VALUES => TRUE );

END;

/

设置操作系统跟踪文件的保存时间:

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

AUDIT_TRAIL_PROPERTY => DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,

AUDIT_TRAIL_PROPERTY_VALUE => 10 );

END;

/

清除dbms_audit_mgmt.os_file_max_age设置:

BEGIN

DBMS_AUDIT_MGMT.CLEAR_AUDIT_TRAIL_PROPERTY(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,

AUDIT_TRAIL_PROPERTY => DBMS_AUDIT_MGMT.OS_FILE_MAX_AGE,

USE_DEFAULT_VALUES => TRUE );

END;

/

操作系统审计跟踪数据的归档方式是两种:Oracle Audit Vault或创建磁带、磁盘的备份

九、清空审计跟踪记录

清除审计跟踪记录既可以手工进行,也可以创建定时任务自动完成。既可以是将归档时间之前的记录清除,也可以清除全部记录。

十、查找审计活动的信息

审计相关的重要视图:

AUDIT_ACTIONS 描述所有审计跟踪行为类型

DBA_AUDIT_EXISTS (Lists audit trail entries produced BY AUDIT NOT EXISTS 没太理解)

DBA_AUDIT_MGMT_CLEAN_EVENTS 清空事件的历史信息。应定期进行,sysdba权限连接并删除该视图的内容以便其不会太大(DELETE FROM DBA_AUDIT_MGMT_CLEAN_EVENTS;)

DBA_AUDIT_MGMT_CLEANUP_JOBS 显示当前配置了的审计跟踪清除作业

DBA_AUDIT_MGMT_CONFIG_PARAMS 当前配置的dbms_audit_mgmt包使用的选项

DBA_AUDIT_MGMT_LAST_ARCH_TS 显示最近一次清空审计跟踪进行归档的时间戳

DBA_AUDIT_OBJECT 所有对象的审计跟踪记录

DBA_AUDIT_POLICIES 所有细粒度审计策略

DBA_AUDIT_SESSION 所有包含连接和断开连接的审计跟踪记录(登录和注销操作)

DBA_AUDIT_POLICY_COLUMNS 描述细粒度审计的表列

DBA_AUDIT_STATEMENT 列出对数据库包含了grant、revoke、audit、noaudit和alter system语句的审计跟踪记录

DBA_AUDIT_TRAIL 显示了sys.aud$中所有标准审计跟踪的记录

DBA_COMMON_AUDIT_TRAIL 将标准审计和细粒度审计的日志结果汇总,包括了sys和强制性审计记录的xml格式

DBA_FGA_AUDIT_TRAIL 显示细粒度审计的跟踪结果

DBA_OBJ_AUDIT_OPTS 显示开启审计选项的对象

DBA_PRIV_AUDIT_OPTS 描述当前对系统和用户的系统权限审计 (与sys.audit$对应)

DBA_STMT_AUDIT_OPTS 当前系统和用户的语句审计选项

V$LOGMNR_CONTENTS 日志历史信息

V$XML_AUDIT_TRAIL 标准的、细粒度的、sys和强制的审计记录的xml格式文件

参考oracle官方文档scurity guide 第九章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值