数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接, SQL 语句执行,数据库对象访问这些方面的跟踪记录。
安全控制、跟踪数据变化、程序 BUG 调试、自定义的数据汇总分析、操作日志
一种是存储在操作系统文件中,一种是存储在 system 表空间中的 SYS.AUD$ 表中
审计必然需要占用 CPU ,因此,需要综合平衡审计需求与性能之间的平衡性问题,以确定出最好的审许策略。
操作系统用户名、数据库用户名、连接会话标识、终端标识、被访问的 schema 对象名、尝试的操作、操作完整代码、日期时间戳
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 反之。省略该子句的话,不管操作成功与否都会审计。
cmd>sqlplus sys/sys as sysdba
SQL> show parameter audit_trail
NAME TYPE VALUE
------------------------------------ ----------- ------
audit_trail string NONE
NONE:不开启审计功能。
DB:开启审计功能,并将审计记录保存在数据库系统提供的审计视图,要求用于审计功能的视图已创建。
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:审计记录写入一个操作系统文件。
TRUE:与参数DB效果等同。
.FALSE:不开启审计功能。
SQL> alter system set audit_trail=db,extended scope=spfile; --审计管理用户(以sysdba/sysoper角色登陆)
SQL> alter system set audit_trail ='DB' scope=spfile;
系统已更改。
SQL>startup force;
SQL> audit insert,update,delete on scott.emp whenever successful;
审计已成功。
SQL> select * from dba_audit_trail; 停用:noaudit all on scott.emp;
修改scott用户emp表的字段,再用select * from dba_audit_trail 查看审计结果