数据库中审计(Audit)
是指对用户所执行的数据库活动做跟踪记录,它是数据库管理系统安全性重要部分。通过审计功能,与数据库安全性相关的操作均可被记录下来。
Oracle11g中,对数据的审计相对于10g等作了简单的改动。以提供更方便\更强大的审计功能。
1>默认情况下,DB Audit参数AUDIT_TRAIL的值被设置成DB(表示审计功能默认开启,而在以前的版本中默认NONE是关闭的)。这样oracle11g中允许对任何对象、语句或权限进行Audit。
2>默认情况下,有更多的语句将处于DB Audit审计范围内,并且这些Audit操作不会导致严重的I/O问题。所有,将Audit活动维持在可接受水平,同时对性能的影响降低到最小。
查看DB的Audit参数: show AUDIT_TRAIL
修改DB的Audit参数:alter system set audit_trail = DB scope = spfile;
DB/TRUE 启用Audit,并且把Audit结果存放在DB的SYS.AUD$表中。
OS 启用Audit,并且把Audit结果存放在操作系统的Audit信息中。
DB_EXTENDED 启用Audit,并且把Audit结果存放在DB的SYS.AUD$表中。并在CLOB列的SQLBIND和SQLTEXT字段记录额外的信息。
XML 启用Audit,以XML格式写所有审计记录。
EXTENDED 启用审计,在审计跟踪中记录所有列,包括sqltext和sqlbind值
NONE/FALSE 禁用审计。(根据需要关闭,挡在创建或删除临时表时,会产生大量的审计信息,而影响I/O,故考虑关闭)
Audit内容:包括对数据库连接,SQL语句执行,以及数据对象访问等操作的跟踪记录。
Oracle系统对任何用户所做的登录、做做数据库对象进行自动记录,以便DBA在事后进行监督和检查。
目地:1> 审查可疑的活动(如data被非授权用户所删除,此时管理员可以决定对该DB的所有连接进行审计,以及对DB的所有表的删除操作进行Audit,以确定数据被哪个用户删除的)
2> 监视和收集关于制定数据库活动的数据(DBA可以收集那些表经常被修改,哪些表的I/O操作比较频繁,或者在某个时刻最多有多少个并发用户连接数据库等统计数据)
Audit分类:语句Audit、权限Audit、对象Audit
1> 语句Audit: 对某种类型的SQL语句进行Audit,不指定结构或者对象。这里从SQL语句的角度进行指定,Audit只关心执行的语句。
例如: audit create table 语句,表示对"createtable"语句的执行进行记录,不管这条语句是否针对某个对象操作。
其只审计某类型的SQL语句,基本语法如下:
audit sql_statement_clause[ by user_name]|[by [session|access][whenwver [not] successful]]
sql_statement_clause: SQL语句或选项
[ by user_name]: 只对指定用户名的某语句进行审计;如果没有该选项表示多全体用户的某指定语句进行审计
by access: 存取方式,每条语句被执行一次都要审计不管语句是否相同。
by session: 会话方式, 相同的语句只被审计一次,这也是系统默认方式。
whenever succeful: 表示只对成功语句进行审计
whenever not succeful: 表示只对不成功语句进行审计
语句选项:
alter system 所有alter system选项,例如动态改变实例参数,切换日志文件组,以及终止用户会话。
rollback segment creat、alter或者drop回滚段。
sequence create或者drop序列
session 登录和退出
table creat、drop或者truncate表
tablespace create、alter或者drop表空间。
users create、alter或者drop用户。
type create、alter或者drop类型或类型主体。
view create、alter或者drop视图。
alter table 任何alter table 命令
例如:audit create table by scott. 对scott用户创建表进行审计。
audit create table by scott by access;
audit createtable by scott by access whenever not successful
查看系统对哪些用户进行了语句审计:
select user_name,audit_option,success,failure from dba_stmt_audit_opts;
[/code]
[code="java"]Audit Trail allows you to tracked who performs DML on a given table and selected columns of those tables…
[code="java"][/code]