保证数据库的安全有两种方式,一种是通过权限的存取控制机制,即通过预先控制来防止安全事件的发生;另一种是数据库审计,即对数据库活动做跟踪记录,当发生安全事件时,通过对数据库活动记录进行审计来发现并修复安全问题。
Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象。审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用。数据库审计的主要对象包括数据库链接、SQL语句执行、数据库对象访问等方面。审计记录存储的位置有两种选择:一种是存储在操作系统文件中,一种是存储在system表空间的sys.aud$表中。
1、和审计相关的参数
(1) audit_sys_operations
(2) audit_trail
(3) audit_file_dest:指定审计信息的文件夹
SQL>show parameter audit –查询和审计相关的两个参数
2、audit_sys_operations参数
audit_sys_operations参数审计SYSDBA的活动,默认值false,相关的审计信息记录在操作系统文件中(因为有可能记录时数据库还未启动)。当参数值为false时,以下操作系统会强制记录在audit_file_dest指定的文件夹中:
(1) 用管理员权限连接实例
(2) 启动数据库
(3) 关闭数据库
audit_sys_operations参数设置为true后,作为SYSDBA和SYSOPER连接数据库的用户所发布的每条语句都会被写入操作系统的审计中,从而能够给出DBA所进行操作的完整记录。设置audit_sys_operations参数的语句如下:
SQL>alter system set audit_sys_operations=TRUE scope=spfile;
SQL>alter system set audit_sys_operations=FALSE scope=spfile;
3、audit_trail 参数
(1)audit_trail 参数的值可以设置为以下几种:
? NONE:不审计,默认值。
? DB:开启审计功能,将audit记录到sys.aud$表(审计的结果只有连接信息,不记录到SQLBIND和SQLTEXT字段)。
? OS:审计记录写入一个操作系统文件。
? DB,extended:开启审计功能,将audit记录到sys.aud$表(审计信息除了连接信息还包含了当时执行的具体语句,记录到SQLBIND和SQLTEXT字段)。
? Xml:审计记录写入xml格式的操作系统文件。
? Xml,extended:审计记录写入xml格式的操作系统文件,包括SQLBIND和SQLTEXT值。
说明:这个参数是写到spfile里面的静态参数,需要重启数据库。
(2)设置参数值
SQL> alter system setaudit_trail=‘DB‘ scope=spfile;
说明:参数AUDIT_TRAIL不是动态的,为了使AUDIT_TRAIL参数中的改动生效,必须关闭数据库并重新启动。在对SYS.AUD$表进行审计时,应该注意监控该表的大小,以避免影响SYS表空间中其他对象的空间需求。
4、开启与关闭审计
(1) 开启审计案例
SQL>conn /as sysdba
SQL>show parameter audit
S