QUESTION 41
SQL> AUDIT DROP ANY TABLE BY scott BY SESSION WHENEVER SUCCESSFUL;
What is the effect of this command?
A. One audit record is created for every successful DROP TABLE command executed in the session of SCOTT
B. One audit record is generated for the session when SCOTT grants the DROP ANY TABLE privilege to other users
C. One audit record is created for the whole session if user SCOTT successfully drops one or more tables in his session
D. One audit record is created for every session of any other user in which a table owned by SCOTT is dropped successfully
E. One audit record is created for every successful DROP TABLE command executed by any user to drop tables owned by SCOTT
什么是审计 => 记录对数据对象的所有操作。什么时候,什么用户对对象做出了什么类型的操作。默认情况下审计是关闭的。
审计相关的表安装
SQLPLUS> connect / AS SYSDBA
SQLPLUS> select * from sys.aud$; --没有记录返回
SQLPLUS> select * from dba_audit_trail; - 没有记录返回
如果做上述查询的时候发现表不存在,说明审计相关的表还没有安装,需要安装。
SQLPLUS> connect / as sysdba
SQLPLUS> @$ORACLE_HOME/rdbms/admin/cataudit.sql
审计表安装在SYSTEM表空间。所以要确保SYSTEM表空间又足够的空间存放审计信息。
安装后要重启数据库
审计分为三类
1.语句审计(Statement Auditing) => 对预先指定的某些SQL语句进行审计。
例如: AUDIT CREATE TABLE => 表明审查记录CREATE TABLE语句。
2.权限审计(Privilege Auditing) => 对涉及某些权限的操作进行审计。
例如先赋予用户a查询权限: GRANT SELECT ANY TABLE TO a;AUDIT SELECT ANY TABLE;
然后当用户a执行查询语句时:SELECT * FROM b.T 用到了SELECT 权限,所以此条语句会被记录。
有时候语句既是语句审计又是权限审计内容。如上面说到的CREATE TABLE。
3.对象审计(Object Auditing) => 审计作用在指定对象上的操作。
例如: AUDIT ALTER,DELETE,DROP ON a.T by b;
语句指定审定用户a的表,同时by指定只审定用户b发起的操作。
审计语句参数
1. By [Session | Access]
Session => 对每个会话中发生的重复操作只做一次记录。
Access => 每次操作都会被记录。
例子:
AUDIT SELECT,UPDATE,INSERT,DELETE
ON a.T
BY SESSION
对所有a用户下的T表进行的独立操作都将被记录。
2.Whenever [not] sucessful
Sucessful => 操作成功才会被记录。
not Sucessful => 操作失败才会被记录。
NULL(不设置) => 该语句设置则不管成功与否都记录
例子:
AUDIT ADELETE ANY TABLE
WHENEVER NOT SUCESSFUL;
对所有删除失败的动作进行记录。
启用审计的两个重要参数
Audit_SYS_Operations => 指定所有系统(sysdba,sysoper)用户的操作是否都被记录。默认为false。
内容记录在audit_file_dest指定的文件中。
Audit Trail => 通过数据库初始文件init.ora参数中的AUDIT_TRAIL来启用和禁用审计。
有三个取值:
None => 默认,不做审计
DB => 将audit_trail 记录在数据库审计相关表中,aud$
OS => 将audit_trail 记录在操作系统文件中,文件目录地址由audit_file_dest指定
审计结果在数据库保存形式
SYS.AUD$ 是唯一保留审计结果的表。其它的都是视图。
STMT_AUDIT_OPTION_MAP 包含有关审计选项类型代码的信息由SQL.BSQ 脚本在CREATEDATABASE 的时候创建
AUDIT_ACTIONS 包含对审计跟踪动作类型代码的说明
ALL_DEF_AUDIT_OPTS 包含默认对象审计选项。当创建对象时将应用这些选项
DBA_STMT_AUDIT_OPTS 描述由用户设置的跨系统的当前系统审计选项
DBA_PRIV_AUDIT_OPTS 描述由用户正在审计的跨系统的当前系统权限
DBA_OBJ_AUDIT_OPTS 描述在所有对象上的审计选项
USER_OBJ_AUDIT_OPTS USER 视图描述当前用户拥有的所有对象上的审计选项
以下是审计记录
DBA_AUDIT_TRAIL 列出所有审计跟踪条目
USER_AUDIT_TRAIL USER视图显示与当前用户有关的审计跟踪条目
DBA_AUDIT_OBJECT 包含系统中所有对象的审计跟踪记录
USER_AUDIT_ OBJECT USER 视图列出一些审计跟踪记录而这些记录涉及当前用户可以访问的对象的语句
DBA_AUDIT_SESSION 列出涉及CONNECT 和DISCONNECT 的所有审计跟踪记录
USER_AUDIT_ SESSION USER视图列出涉及当前用户的CONNECT 和DISCONNECT 的所有审计跟踪记录
DBA_AUDIT_STATEMENT 列出涉及数据库全部的GRANT REVOKE AUDIT NOAUDIT 和ALTER SYSTEM 语句的审计跟踪记录
USER_ AUDIT_ STATEMENT 对于USER 视图来说这些语句应是用户发布的
DBA_AUDIT_EXISTS 列出BY AUDIT NOT EXISTS 产生的审计跟踪条目
下面的视图用于细粒度审计
DBA_AUDIT_POLICIES 显示系统上的所有审计策略
DBA_FGA_AUDIT_TRAIL 列出基于值的审计的审计跟踪记录