oracle数据库审计
### Oracle数据库审计详解 #### 一、Oracle数据库审计概述 Oracle数据库审计功能是数据库安全机制的重要组成部分之一,它主要用于监控用户对数据库的操作行为,并记录这些操作以便后续进行审查和分析。通过启用审计功能,管理员可以追踪数据库中的敏感操作,这对于确保数据安全性和合规性至关重要。 #### 二、审计信息的存储位置 Oracle数据库提供了两种方式来存储审计信息:操作系统(OS)文件和数据库内部。这两种存储方式各有优缺点: 1. **OS文件**:默认情况下,审计信息会被保存到一个特定的文件夹中,路径通常是 `$ORACLE_BASE/admin/$ORACLE_SID/adump/`。这种方式的好处是简单直接,无需额外占用数据库的空间;但缺点在于如果系统出现问题,可能无法访问这些文件。 2. **数据库内部**:如果选择将审计信息保存在数据库内,那么这些信息会被存放在 `SYS.AUD$` 表中,该表位于 `SYSTEM` 表空间。管理员可以通过查询视图 `DBA_AUDIT_TRAIL` 来查看审计信息。这种方式的优势在于便于管理,尤其是在集中式管理和监控方面;但同时也可能会增加数据库的存储负担。 #### 三、审计配置参数 在Oracle数据库中,有几个关键的初始化参数用于控制审计功能: 1. **AUDIT_SYS_OPERATIONS**:此参数用于决定是否对具有 `SYSDBA` 或 `SYSOPER` 角色的用户进行审计。默认值为 `FALSE`,即不审计这些用户的操作。若设置为 `TRUE`,则这些用户的操作也将被记录下来。 2. **AUDIT_TRAIL**:此参数决定了审计信息的存储方式。可以选择 `NONE` (不进行审计),`DB` (仅将审计信息存入数据库),`EXTENDED` (在数据库中存储更详细的审计信息) 或者 `OS` (将审计信息存入OS文件)。 - 当设置为 `EXTENDED` 时,可以获取更为详尽的审计信息,例如SQL语句等。 - 当设置为 `OS` 时,需要指定审计文件的目的地,即通过 `AUDIT_FILE_DEST` 参数设置。 3. **AUDIT_FILE_DEST**:用于指定审计文件的存放路径。如果不指定,默认路径如前所述。 4. **AUDIT_TRAIL** 参数还可以设置为 `DB` 和 `EXTENDED` 的组合形式,即同时启用两种模式。 #### 四、审计策略配置 除了通过初始化参数控制全局审计行为外,还可以针对特定对象、权限或语句制定具体的审计规则: 1. **对象级审计**:可以针对特定表或其他数据库对象进行审计。例如,使用 `AUDIT TABLE` 命令可以对特定表的增删改查操作进行审计。 2. **权限级审计**:可以针对特定权限的使用情况进行审计。例如,使用 `AUDIT SELECT ANY TABLE` 可以审计任何用户对所有表的查询操作。 3. **语句级审计**:可以审计特定类型的SQL语句。例如,使用 `AUDIT SELECT` 或 `AUDIT UPDATE` 命令来审计特定的查询或更新操作。 #### 五、审计日志查看与管理 - **查看审计信息**:通过查询视图 `DBA_AUDIT_TRAIL` 或者 `V$AUDIT_TRAIL` 来查看审计信息。这些视图提供了审计记录的详细信息,包括审计记录的时间戳、操作类型、用户名等。 - **管理审计日志**:为了保持审计日志的有效性,管理员需要定期清理过期的审计记录。这通常可以通过定期运行脚本或者使用Oracle提供的管理工具来实现。 #### 六、示例 下面是一个简单的示例,展示如何设置审计并查看审计信息: ```sql -- 启用审计功能 ALTER SYSTEM SET audit_sys_operations=TRUE SCOPE=SPFILE; -- 设置审计轨迹为数据库内部,并启用扩展审计 ALTER SYSTEM SET audit_trail=db,extended SCOPE=SPFILE; -- 查看当前审计配置 SHOW PARAMETER audit; -- 查看审计信息 SELECT * FROM DBA_AUDIT_TRAIL; ``` #### 七、Oracle 10g 新特性 自Oracle 10g版本起,引入了一些新的审计特性: 1. **Fine-Grained Auditing (FGA)**:这是一种更为精细的审计机制,允许对特定的SQL语句进行审计,而不仅仅是简单的操作类型。通过FGA,管理员可以更精确地监控特定条件下的数据访问行为。 2. **自动审计**:对于某些特定类型的数据库操作,如DDL语句,Oracle 10g支持自动审计。这意味着无需手动配置审计规则即可记录这些操作。 3. **增强的安全性**:Oracle 10g还增强了安全性方面的审计功能,例如能够更好地控制谁有权查看审计信息,以及如何管理审计日志等。 Oracle数据库的审计功能为企业提供了强大的工具来保护数据安全和符合法规要求。通过对审计配置参数的理解和合理设置,可以有效地实现对数据库操作的监控和审计,从而保障企业的数据资产不受威胁。
审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)或数据库(存储在system表空间中的 SYS.AUD$表中,可通过视图dba_audit_trail查看)中。默认情况下审计是没有开启的。
不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
2、和审计相关的两个主要参数
Audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba, sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
Audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。
注:这两个参数是static参数,需要重新启动数据库才能生效。
3、审计级别
当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)、Privilege(权限)、object(对象)。
按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter session by cmy会审计cmy用户所有的数据库连接。
Privilege:
按权限来审计,当用户使用了该权限则被审计,如执行grant select any table to a,当执行了audit select any table语句后,当用户a 访问了用户b的表时(如select * from b.t)会用到select any table权限,故会被审计。注意用户是自己表的所有者,所以用户访问自己的表不会被审计。
Object:
按对象审计,只审计on关键字指定对象的相关操作,如aduit alter,delete,drop,insert on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。注意Oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access;后,对于随后创建的对象的drop操作都会审计。但这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比 trigger可以对schema的DDL进行“审计”,这个功能稍显不足。
4、审计的一些其他选项
by access / by session:
by access 每一个被审计的操作都会生成一条audit trail。
by session 一个会话里面同类型的操作只会生成一条audit trail,默认为by session。
whenever [not] successful:
whenever successful 操作成功(dba_audit_trail中returncode字段为0) 才审计,
whenever not successful 反之。省略该子句的话,不管操作成功与否都会审计。
5、和审计相关的视图
dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_session,dba_audit_object, dba_audit_statement都只是dba_audit_trail的一个子集。
剩余7页未读,继续阅读
- wusheng20022014-11-16介绍的还比较全面,学习中
- 粉丝: 0
- 资源: 9
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助