Oracle 11g是一款非常强大的数据库管理系统,它提供了很多的安全与管理机制,其中审计机制在企业级应用中尤其重要。Oracle 11g的审计功能可以帮助我们追踪数据库的操作历史和变化情况,对于数据安全非常重要。
在Oracle 11g中,审计主要通过审计跟踪功能实现。管理员可以选择全局的审计跟踪,即所有的用户都将被跟踪审计,或者对具体的用户或者对象进行审计。
--开启审计跟踪功能
SQL>ALTER SYSTEM SET AUDIT_TRAIL=DB SCOPE=SPFILE;
--开启全局审计
SQL>AUDIT ALL BY DEFAULT;
开启审计跟踪功能之后,还需要设置审计级别,Oracle 11g提供了SYSDBA和SYSOPER两个审计级别,其中SYSDBA级别可以记录所有的数据库操作信息,包括登录数据库、创建数据库对象、创建或删除用户等敏感操作。
--开启SYSDBA级别审计
SQL>AUDIT CREATE SESSION, ALTER DATABASE, DROP USER BY SYSDBA;
除了全局审计外,我们还可以通过AUDIT SESSION命令,对具体的用户进行审计。AUDIT SESSION命令可以控制在什么条件下,对哪些用户进行审计。
--审计用户tom执行SELECT语句
SQL>AUDIT SELECT TABLE, VIEW, PROCEDURE BY tom WHERE SESSIONID>200;
审计跟踪可以将审计信息保存到数据库或者操作系统文件中,我们可以通过以下命令设置审计跟踪的输出目录。
--开启审计跟踪并将审计信息保存到操作系统文件中
SQL>AUDIT ALL BY DEFAULT EXCEPT SYSLOG BY ACCESS;
SQL>ALTER SYSTEM SET AUDIT_FILE_DEST='/u01/audit/' SCOPE=SPFILE;
审计跟踪还提供了多种审计信息过滤机制,包括用户名过滤、时间过滤、操作对象过滤等。过滤条件可以通过以下命令设置。
--审计tom在2019年1月份执行的SELECT语句
SQL>AUDIT SELECT TABLE, VIEW BY tom WHEN 'SYS_CONTEXT(''USERENV'',''CURRENT_DATE'')>=''01-JAN-2019'' and SYS_CONTEXT(''USERENV'',''CURRENT_DATE'')
审计跟踪无法保证数据库的绝对安全,但是它可以对已经发生的异常事件提供追踪和证明。在企业级应用中,审计跟踪功能是非常重要的安全措施。