数据库审计

来源:互联网 发布:网络共享打印机设置 编辑:程序博客网 时间:2024/04/28 13:40
一、审计指导方针:1、最小化审计选项,降低跟踪文件个数
              2、移动审计表sys.aud$到其他表空间(默认为system表空间)
              3、定期删除跟踪记录
              4、避免审计跟踪记录被非法用户删除(具有delete_catalog_role角色,可删除跟踪记录)
审计分类:特权用户审计
          标准审计
          细粒度审计
审计选择:1、whenever successful 或者whenever not successful,默认为两者
          2、by session 或者 by access
          3、by username
一、特权用户审计
    默认情况下,数据库开启特权用户审计,审计记录存放在audit_file_dest指定的文件中
    审计活动:1、作为sysdba或sysoper连接
              2、数据库启动
              3、数据库关闭
   如果审计特权用户的其他活动,需要设置参数audit_sys_operations为true,默认为false
二、标准审计 1、语句级
             2、权限级
             3、对象级
    审计跟踪数据:操作系统注册
                  数据库用户名
                  终端和会话标识符
                  执行和试图执行的操作
                  日期和时间戳
                  触发审计的SQL文本
   1、设置参数audit_trail (须重启数据库)
      选项:none,db,os,false,db extended,xml,xml extended,true 等同于db。默认为db
      db extended和xml extended 都会填充SQLTEXT和SQLBIND列
      os,xml,xml extended 审计记录存放在操作系统中,若选择其一,需要设置参数audit_file_dest,否则存放在默认位置。
   2、创建试图
      数据库安装后一般会自动创建,若没有,需要建立
     @$ORACLE_HOME/rdbms/admin/cataudit.sql
     若删除,执行catnoaud.sql。一般不用删除,如果想关闭审计,直接设置audit_trail为none或false.
   3、权限
     1、审计高级别操作,须具有audit system 权限
     2、审计特定数据库对象上的操作,须具有audit any 或对象在自己模式中。
   4、执行审计:
     
     语句级
     (1)审计语法:audit <stat>[,...][by <user> [,...]] [by {session|access}] [whenever [not] successful]
      (2) 查看审计记录:dba_audit_trail
      (3) 查看设置的审计选项:dba_stmt_audit_opts
      (4) 禁用审计:noaudit ...
    权限级
     (1) 审计语法:audit <system_priv>[,...][by <user> [,...]] [by {session|access}] [whenever [not] successful] 
      (2)查看审计记录:dba_audit_trail
      (3) 查看设置的审计选项:dba_priv_audit_opts
      (4) 禁用审计:noaudit ...
    对象级
      (1) 审计语法:}audit <stat>[,...] on {<object>|default} [by <user> [,...]] [by {session|access}] [whenever [not] successful]                       /*all=insert,update,select,delete */     
       (2) 查看审计记录:dba_audit_trail
       (3) 查看设置的审计选项:dba_obj_audit_opts
       (4) 禁用审计:noaudit... 
   
   说明:高级别禁用语句将关闭所有低级别的审计
         关闭所有审计:noaudit all
                     noaudit all privileges
                     noaudit all on default
   5、清除审计记录:delete from sys.aud$ where 子句
                    或者truncate table sys.aud$
                                  
                                 
                                                        附录:运行cataudit。sql后数据库创建的对象:
      stmp_audit_option_map     存放审计类型代码 如66表示insert table
      audit_actions             审计跟踪活动类型代码,可从类型号得到活动类型代码
      all_def_audit_opts        包含对象审计选项
      dba_stmt_audit_opts       通过系统并由用户审计的当前系统审计选项
     
      user_obj_audit_opts       一个用户所有对象的审计选项
      dba_obj_audit_opts        所有用户所有对象的审计选项
 
      user_audit_trail          与用户有关的审计条目
      dba_audit_trail           与所有用户有关的审计条目
 
      user_audit_session        系统中用户对象的审计跟踪记录
      dba_audit_session         形同中所有对象的审计跟踪记录
  
      user_audit_statement      列出用户关于grant,revoke,audit,noaudit,alter system语句的审计跟踪信息
      dba_audit_statement       所有用户关于.........................................................
    
      user_audit_object         系统中用户对象的审计跟踪记录
      dba_audit_object          系统中所有对象的审计跟踪记录
     
      dba_audit_exist           列出audit not exists 和audit exists 产生的审计跟踪
      v$xml_audit_trail         11g下,显示标准的精细审计并以xml写到操作系统路径下