审计(Audit)用于监视用户所执行的数据库操作,并且Oracle会将审计跟踪结果存放到OS文件或数据库中。默认情况下审计是没有开启的。不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
开启标准数据库审计
AUDIT_TRAIL的取值如下:
DB/TRUE:启动审计功能,并且把审计结果存放在数据库的SYS.AUD$表中
OS:启动审计功能,并把审计结果存放在操作系统的审计信息中
DB_EXTENDED:具有DB/TRUE的功能,另外填写AUD$的SQLBIND和SQLTEXT字段
NONE/FALSE:关闭审计功能
果设置AUDIT_TRAIL = OS,还需要修改参数AUDIT_FILE_DEST。
如果操作系统支持设置AUDIT_TRAIL=OS,文件会自动存放在AUDIT_FILE_DEST所指定的目录下,并且文件名包含进程的PID。
SQL> alter system set audit_trail=db scope=spfile;
System altered.
该参数是static参数,需要重新启动数据库才能生效
SQL> startup force;
ORACLE instance started.
Total System Global Area 167772160 bytes
Fixed Size 1218316 bytes
Variable Size 92276980 bytes
Database Buffers 71303168 bytes
Redo Buffers 2973696 bytes
Database mounted.
Database opened.
审计系统权限:
审计scott用户delete any table的权限
SQL> audit delete any table by scott by session;
Audit succeeded.
SQL> grant delete any table to scott;
Grant succeeded.
SQL> conn scott/oracle
Connected.
SQL> delete hr.aud_test;
19 rows deleted.
SQL> commit;
Commit complete.
SQL> select username,timestamp,ses_actions,obj_name,action_name from dba_audit_trail;
USERNAME TIMESTAMP SES_ACTIONS OBJ_NAME ACTION_NAME
---------- --------- ----------------- ---------- ------------
SCOTT 11-MAY-14 ---S------------ AUD_TEST SESSION REC
SES_ACTIONS的含义:
1 2 3 4 5 6 7 8 9
更改 审计 注释 删除 授权 索引 插入 锁定 重命名
10 11 12 13 14 15 16
选择 更新 引用 执行 未使用 未使用 未使用
S表示成功的意思,恰好上面的S位于10,也就是对表的select成功。
上面的S不是select的意思。另外一个就是F,S和F是相对的。
B表示既有成功、也有失败。
如果使用的是by access,那么SES_ACTIONS列为空,具体的操作显示在ACTION_NAME列中。
因此SES_ACTIONS只是对by session有意义。
审计对象权限:
SQL> audit delete on hr.aud_test by session;
Audit succeeded.
SQL> conn scott/oracle
Connected.
SQL> delete from hr.aud_test where rownum<2;
1 rows deleted.
SQL> conn / as sysdba
Connected.
SQL> select username,timestamp,ses_actions,obj_name,action_name from dba_audit_trail;
USERNAME TIMESTAMP SES_ACTIONS OBJ_NAME ACTION_NAME
---------- --------- ----------------- ---------- ------------
SCOTT 11-MAY-14 ---S------------ AUD_TEST SESSION REC
SCOTT 12-MAY-14 ---S------------ AUD_TEST SESSION REC
审计SQL语句:
SQL> truncate table aud$;
Table truncated.
SQL> audit table by scott by session;
Audit succeeded.
SQL> conn scott/oracle
Connected.
SQL> drop table test;
Table dropped.
SQL> conn / as sysdba
Connected.
SQL> select username,timestamp,ses_actions,obj_name,action_name from dba_audit_trail;
USERNAME TIMESTAMP SES_ACTIONS OBJ_NAME ACTION_NAME
---------- --------- ----------------- ---------- ------------
SCOTT 12-MAY-14 TEST DROP TABLE
审计普通用户登入:
SQL> truncate table aud$;
Table truncated.
SQL> audit session;
Audit succeeded.
SQL> conn scott/123
ERROR:
ORA-01017: invalid username/password; logon denied
Warning: You are no longer connected to ORACLE.
SQL> conn scott/123
ERROR:
ORA-01017: invalid username/password; logon denied
SQL> conn / as sysdba
Connected.
SQL> select username,timestamp,ses_actions,obj_name,action_name from dba_audit_trail;
USERNAME TIMESTAMP SES_ACTIONS OBJ_NAME ACTION_NAME
---------- --------- ----------------- ---------- ------------
SCOTT 12-MAY-14 LOGON
SCOTT 12-MAY-14 LOGON
查看登入信息,确定哪些用户存在安全隐患:
SQL> select to_char(timestamp,'yyyy-mm-dd hh24:mi:ss') fail_time,count(*) fail_count
2 from dba_audit_trail
3 where returncode=1017
4 and username='SCOTT'
5 group by to_char(timestamp,'yyyy-mm-dd hh24:mi:ss')
6 ;
FAIL_TIME FAIL_COUNT
------------------- ----------
2014-05-12 09:02:37 1
2014-05-12 09:02:36 1
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29320885/viewspace-1158915/ ,如需转载,请注明出处,否则将追究法律责任。