首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Oracle频道
中国IT教育
Google
首页 入门基础 安装配置 体系架构 PLSQL 备份恢复 性能调优 开发技术 资讯动态 考试认证 下载 专题 讨论
您现在的位置: 中国IT实验室 >> Oracle >> 开发技术 >> 正文

Oracle 9i审计技术应用详解

        如何实现审计

        Oracle审计特性提供了三种级别的审计,分别是语句级、权限级和实体级。同时,我们还可以配合使用触发器来实现特定的细粒度的审计功能实现,以到达互补的效果,提供更全面和强有力的审计证据支持。

        语句级审计

        语句级审计表示只审计某种类型的SQL语句,可以审计某个用户,也可以审计所有用户的SQL语句,其语法如下:

        SQL>Audit SQL语句或选项

        [by 用户名] --表示只审计指定用户的SQL语句,不审计其他用户的SQL语句

        [by session/access] --by session:每个会话相同语句只审计一次,系统默认;

        by access:每次都将审计

        Whenever [NOT] Successful;--只审计(不)成功的语句

        SQL语句或选项参数不需要写出全部的SQL语句,只需要写出语句的选项即可,这样可以代表某一类的SQL语句。例如:

        audit table by bjmiadmin by access

        当用户执行Create Table;Drop Table;Truncate Table等与table相关的操作时,系统会自动记录这些过程,将其保存在相应的数据字典中。我们可以通过查询数据字典DBA_STMT_AUDIT_OPTS来查看具体的语句级审计实施细节。

        如果我们不需要再进行审计,可以通过Noaudit命令取消审计,如:

         noaudit table by bjmiadmin by access

        权限级审计

        权限级审计表示只审计某一系统权限的使用状况,可以审计某个用户,也可以审计所有用户,其语法如下:

        SQL>Audit 权限名称

        [by 用户名] --表示只审计指定用户的SQL语句,不审计其他用户的SQL语句

        [by session/access] --by session:每个会话相同语句只审计一次,系统默认;

        by access:每次都将审计

        Whenever [NOT] Successful;--只审计(不)成功的语句

        权限名称包含了大部分的对数据库对象的DDL操作,如alter,create,drop等等。例如:

        audit delete any table

        该命令将对任何用户的删除表的操作进行记录。如果想知道当前对哪些用户进行了哪些权限级别的审计,可以通过查询数据字典DBA_PRIV_AUDIT_OPTS来了解细节。

        如果不需要再对用户进行系统权限的审计,那么可以使用noaudit命令取消对用户所进行的权限审计,如:

         noaudit delete any table

        实体级审计

        实体级审计用于监视所有用户对某一指定用户表的存取状况,实体级审计是不分用户的,其重点关注的是哪些用户对某一指定用户表的操作,其语法如下:

        SQL>Audit 实体选项 ON Schema 实体名称

        [by session/access] --by session:每个会话相同语句只审计一次,系统默认;

         by access:每次都将审计

        Whenever [NOT] Successful;--只审计(不)成功的语句

        各选项范围与语句级及权限级审计相同,例如:

         audit update on bjmiadmin.deptinfo whenever successful

        该命令将对bjmiadmin.deptinfo的更新操作进行记录。如果想知道当前对哪些用户的哪些实体进行了实体级审计及审计的选项,可以通过查询数据字典DBA_OBJ_AUDIT_OPTS来了解实施细节。

        如果不需要再对用户进行系统权限的审计,那么可以使用noaudit命令取消对实体审计,如:

         noaudit update on bjmiadmin.deptinfo

        触发器

        触发器是一种特殊的过程,与普通的过程不同的是,触发器不需要显示调用,而是当某些事件发生时,由数据库系统自动执行。触发器的构成包括:

        触发事件:引起触发器被触发的事件,如insert、update等DML语句或者create、alter、drop等DDL语句,数据库系统事件或者用户事件等等。

        触发条件:由WHEN子句指定的一个逻辑表达式,只有当该表达式为TRUE时,遇到触发器事件才会自动执行触发器。

        触发对象:包括表、视图、模式和数据库。

        触发操作:触发器定义的过程。

        在BJMI电子政务安全审计系统中,我们综合利用了多种触发器类型,如DDL触发器(对所有用户的DDL操作进行审计)、DML触发器(对重要的表和视图的DML操作进行审计,保存数据的历史和更新)、系统事件触发器(记录系统启动、退出或异常错误等)、用户事件触发器(用户登录系统或退出系统的动作)等。如下是实现系统事件审计的触发器:

         CREATE OR REPLACE TRIGGER BJMIADMIN.AUDIT_DB_STARTUP_TRIGGER
        AFTER STARTUP ON DATABASE
        BEGIN
            INSERT INTO BJMIADMIN.AUDIT_DBLOG
            VALUES(SYSDATE,'STARTUP');
        END;

        数据库关闭触发器:

         CREATE OR REPLACE TRIGGER BJMIADMIN.AUDIT_DB_SHUTDOWN_TRIGGER
        BEFORE SHUTDOWN ON DATABASE
        BEGIN
            INSERT INTO BJMIADMIN.AUDIT_DBLOG
            VALUES(SYSDATE,'SHUTDOWN');
        END;

        通过以上触发器的配置,我们可以得到数据库系统的启动和关闭动作的日志,对数据库系统的运转情况可以实现历史查看。这些历史记录将在应用系统层提供给审计管理员进行查看。

上一页  [1] [2] [3] [4] [5] 下一页

【责编:michael】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 ·Java入门 Tomcat的配置技巧精华专题…
 ·Oracle RMAN物理备份技术详解…
 今日更新
 社区讨论
 博客论点
 频道精选
 Oracle频道相关导航