• 5、Oracle数据库审计


    1、审计(Audit):

    对用户所执行的数据库活动的跟踪记录,便于事后监督、检查

    审计信息存放位置:

    审计记录信息,存储在system表空间中的SYS.AUD$数据字典表;

    或操作系统默认位置$ORACLE_BASE/admin/$ORACLE_SID/adump/;

    Oracle 11G以后,数据库默认是开启审计功能的,因此有时候我们忘记了关闭该功能导致SYSTEM表空间暴满,但由于关闭审计功能需要重启数据库,此类操作生产环境下是不允许的,因此我们需要找出哪类审计产生的较多,然后单独的进行关闭;我们可以通过如下方法查找:如果你发现AUD$这个表比较大了,检查下是哪种审计占的空间:

    SQL> select action_name,count(*) from dba_audit_trail group by action_name;

    --一般是LOGON和LOGOFF类型的审计最多。取消此类审计:

    SQL> noaudit session whenever successful;

    --一般来说,如果空间不是占的特别多,此类审计还是保留为好。可以取消对一些登录特别频繁的用户的审计,比如DBSNMP用户:

    SQL> noaudit session by U007;

    --关闭审计后,对表sys.aud$进行清理

    select * from  sys.aud$;

    truncate table selsys.aud$;

    审计参数AUDIT_TRAIL

    参数值取值列表:

    (1).DB/TRUE ---- 启用审计,并且把审计结果存放在数据库的SYS.AUD$表中

    (2).OS ---- 启用审计,并把审计结果存放在操作系统的审计信息中

    (3).DB_EXTENDED ---- 启用审计,把审计结果存放在数据库SYS.AUD$表中,并在CLOB列的SQLBINDSQLTEXT字段记录额外的信息;

    (4).XML ---- 启用审计,以XML格式写所有审计记录;

    (5).EXTENDED ---- 启用审计,在审计跟踪中记录所有列,包括SQLTEXTSQLBIND

    (6).NONE/FALSE ---- 禁用审计

    以下步骤设置Oracle的审计功能:

    (1).修改审计参数AUDIT_TRAIL:

    Alter system set AUDIT_TRAIL=DB scope=spfile;

     (2).初始化数据库审计功能:

    connect /as sysdba执行脚本cataudit.sql,脚本位置D:appAdministratorproduct11.2.0dbhome_1RDBMSADMIN;

     (3).重启数据库:

    由于参数AUDIT_TRAIL不是动态的,需要关闭数据库重启生效

      

    2、审计分类和用法:

    语句审计:

    --语法

    AUDIT sql_statement_clause [BY user_name] | [BY [SESSION | ACCESS]

    WHENEVER [NOT] SUCCESSFUL]

    参数说明:

    sql_statement_clause ---- SQL语句或选项;

    BY ACCESS ---- 存取方式,每条语句被执行一次都要审计,不管语句是否相同;

    BY SESSION ---- 会话方式,相同的语句只被审计一次,这也是系统默认方式;

    WHENEVER SUCCESSFUL ---- 表示只对成功语句进行审计;

    WHENEVER NOT SUCCESSFUL ---- 表示只对不成功语句进行审计。

    --举例:

    --(1).审计用户对对象的操作:

    Audit table by scott;

    --(2).审计用户执行的SQL语句:

    Audit create table by scott;

    Audit insert table by u0007; ---- 审计insert into表或视图;

    Audit delete table by u0007; ---- 审计删除表或视图中的行;

    --(3).指定审计方式:

    Audit delete table by u0007 by access; ---- 存取方式,每条语句执行一次都要审计;

    --(4).审计成功与不成功的会话:

    Audit session by u007 whenever not successful; ---- 只对不成功语句进行审计;

    --(5).了解哪些用户进行了审计,可查询数据字典视图DBA_STMT_AUDIT_OPTS

    select * from dba_stmt_audit_opts where user_name='U007';

    --(6).停止语句审计:

    Noaudit alter table by U007;

     

    权限审计:

    --语法:

    AUDIT privilege [BY user_name] | [BY [SESSION | ACCESS]

    WHENEVER [NOT] SUCCESSFUL]

     

    对象审计:

    --语法:

    AUDIT schema_object_clause ON schema

    [BY user_name] | [BY [SESSION | ACCESS]

    WHENEVER [NOT] SUCCESSFUL]

    Audit select,insert,delete on scott.dept by access;

    3、细粒度审计(FGA)

    是由DBMS_FGAPL/SQL程序实现的

    生命不息,折腾不止;不计后果,不问前程!
  • 相关阅读:
    流程控制和数组
    数据类型和运算符
    JavaWeb(一)-Servlet中的Config和Context
    成语接龙
    java 解决树形结构数据 (有序无序通杀)
    java https
    git 使用教程
    Spring boot 解决跨域问题
    redis详解(四)--高可用分布式集群
    redis详解(三)--面试题
  • 原文地址:https://www.cnblogs.com/jionjionyou/p/5507066.html
Copyright © 2020-2023  润新知