Normal

0

7.8 磅

0

2

false

false

false

MicrosoftInternetExplorer4

仅使用权限、角色、视图、甚至细粒度安全策略建立访问控制系统还不能保证数据库的安全。审计数据库的使用能让我们知道访问控制机制是否确实像所希望的那样工作。审计涉及监控和记录用户的数据库活动。

Oracle提供了大量的审计类型的控制选择,可以再会话级或在整个数据库级进行审计。主要分为标准审计和细粒度审计,标准审计基于语句级、权限级和对象级。而细粒度审计涉及某种粒度的数据访问,或涉及基于内容的某些活动。

应该尽量使审计选项满足审计目的的最低要求。在审计打开时,应密切关注SYSTEM表空间和SYS.AUD$表。如果SYS.AUD$被填满,则数据库中进一步的连接和DML活动可能会停止。因此,应该定期归档和清除SYS.AUD$表中的记录。

Oracle数据库允许在3中不同的级别上审计数据库的使用,这3中级别分别为:语句、权限和对象。语句级审计指定任意类型对象上所有活动的审计。权限级审计跟踪源于系统权限的活动。对象级审计监控特定表上的UPDATE、DELETE和INSERT等语句的活动。

1)启用审计

为了审计数据库内的所有用户的活动,甚至是登陆数据库的活动,需要再初始化参数文件中指定AUDIT_TRAIL参数以启用审计。AUDIT_TRAIL参数可以取如下的值:

lNONE:禁用数据库审计。NONE为此参数的默认值。

lOS:指出Oracle将把审计记录写到一个操作系统文件中。

lDB:指出Oracle将把审计记录写入数据库审计跟踪,可视为DBA_AUDIT_TRAIL(存储在SYS.AUD$表中)。

lDB,EXTENDED:指出Oracle将把所有审计记录发送到数据库审计跟踪,除此之外,填充SQLBIND和SQLTEXTCLOB列。

lXML:指定数据库审计,进入OS文件的是XML格式的审计记录。

lXML,EXTENDED:与XML设置相同,另外还记录所有审计跟踪列,包括SQLTEXT和SQLBIND。

如果指定AUDIT_TRAIL=OS,则审计跟踪不再数据库中存储审计信息,而是在由AUDIT_TRAIL_DEST参数指定的位置存储审计信息。如果指定AUDIT_TRAIL=OS且省略AUDIT_TRAIL_DEST参数,则默认将审计信息写到$ORACLE_HOME/rdbms/audit/目录中。

2)Oracle的默认审计

在没有指定AUDIT_TRAIL参数的默认情况下,Oracle也会将3种类型的数据库活动记录到$ORACLE_HOME/rdbms/audit目录中:

l作为SYSOPER或SYSDBA连接

l数据库启动

l数据库关闭

通常,审计文件捕获用户SYS(具有SYSDBA权限)进行的CONNECT、SHUTDOWN、STARTUP事件。

3)打开审计

一旦设置了AUDIT_TRAIL参数,就启用了数据库中的审计。但是,为了实际开始审计,还必须指定希望数据库审计哪些表和哪些活动。

可以使用恰当的命令开始任何级别的审计活动。示例如下:

SQL> audit select on employees;

SQL> audit delete any table by wjw whenever not successful;

SQL> audit update any table;

SQL> audit session by wjw;

SQL> audit select,insert,update,delete on employees by access

whenever successful;

下面是一个更强的审计选项,它保证审计所有权限:

SQL> audit all privileges;

4)关闭审计

为了关闭审计,可以使用几乎和打开审计相同的语句。示例如下:

SQL> noaudit session;

SQL> noaudit delete any table by wjw whenever not successful;

SQL> noaudit delete any table by wjw;

如果要关闭所有级别(语句、权限和对象)的审计,可以使用下面3条语句:

SQL> noaudit all;/*关闭所有语句审计*/

SQL> noaudit all privileges;/*关闭所有权限审计*/

SQL> noaudit all on default;/*关闭所有对象审计*/

5)用触发器定制数据库审计

可以再Oracle中创建集中类型的触发器,包括DML触发器和DDL触发器以及系统级触发器。

a)为审计使用基于DML的触发器:

SQL> create or replace trigger audit_insert_regions

after insert on hr.regions

for each row

insert into regions_audit

values(user,sysdate);

b)为审计使用系统触发器:

Oracle提供了强有力的系统级触发器,如数据库启动之后、数据库关闭之前引发的触发器。登陆和退出触发器对数据库审计特别有用。

下面为一个记录用户登陆和退出数据库信息的系统级触发器示例:

(1)创建一个记录登陆和退出数据库信息的表:

SQL> create table logon_audit(

user_id varchar2(30),

session_id number(10),

logon_time date,

logoff_time date,

host varchar2(20));

(2)创建登陆触发器和退出触发器:

SQL> create or replace trigger logon_audit_trigger

after logon on database

begin

insert into logon_audit

values(user,

sys_context(‘userenv’,’sessionid’),

sysdate,

null,

sys_context(‘userenv’,’host’));

end;

SQL> create or replace trigger logoff_audit_trigger

after logoff on database

begin

insert into logon_audit values

(user,

sys_context(‘userenv’,’sessionid’),

null,

sysdata,

sys_context(‘userenv’,’host’));

end;

(3)查看用户的登陆/退出信息:

SQL> select * from logon_audit;

c)为审计使用DDL触发器:

可以用DDL触发器捕获用户对对象所做的更改,包括修改、创建和删除各种类型的对象。还可以捕获关于引发DDL触发器的时间和用户的大量属性。

(1)创建一个记录修改DDL信息的表:

SQL> create table ddl_log(

username varchar2(20),

change_date date,

object_type varchar2(20),

object_owner varchar2(20),

database varchar2(20));

(2)创建DDL触发器:

SQL> create or replace trigger ddl_log_trigger

after ddl on database

begin

insert into ddl_log values

(ora_login_user,

sysdate,

ora_dict_obj_type,

ora_dict_obj_owner,

ora_database_name);

end;

(3)查看用户修改DDL信息:

SQL> select * from ddl_log;

Oracle允许基于内容审计数据库中的活动,即可以规定只针对满足一定条件的语句而不是所有的SELECT、INSERT、UPDATE和DELETE语句来写审计记录。可以对想监控的个别的表或特定的操作应用细粒度审计(FGA)。

使用FGA只需要dbms_fga程序包上的权限。在使用DBMS_FGA程序包时,审计记录不进入标准的SYS.AUD$审计表,即使打开了数据库的审计跟踪也是如此。审计记录进入一个名为SYS.FGA_AUD$的表。

1)启用细粒度审计

使用FGA不需要打开数据库范围的审计,因为这种审计是基于表访问的。FGA记录可以通过DBA_FGA_AUDIT_TRAIL和DBA_COMMON_AUDIT_TRIAL视图来访问,后一个视图组合了标准和细粒度审计日志记录。

用DBMS_FGA程序包的ADD_POLICY过程来添加细粒度审计策略。下面为该过程的结构。

SQL> execute

dbms_fga.add_policy(

object_schema

varchar2,

object_name

varchar2,

policy_name

varchar2,

audit_condition

varchar2,

audit_column

varchar2,

handler_schema

varchar2,

handler_module

varchar2,

enable boolean,

statement_types

varchar2,

audit_trail

binary_integer in default,

audit_column_opts

binary_integer in default);

以下是ADD_POLICY过程的参数说明:

lobject_schema:待审计的对象的模式;默认为NULL,表示登陆用户的模式。

lobject_name:待审计的对象的名称。

lpolicy_name:用户给出的审计策略名。

laudit_condition:行内的条件,指出一个监控条件;默认为NULL,其作用于TRUE相同。

laudit_column:希望审计的列访问;默认为NULL,表示所有列访问都要审计;audit_column_opts参数与这个参数结合使用。

lhandler_schema:包含事件处理程序的模式;默认为NULL,表示当前模式。

lhandler_module:过程或程序包名。

lenable:此参数启用和禁用策略;默认值为TRUE,表示启用策略。

lstatement_types:此策略可以应用的SQL语句类型:insert、update、delete或select。默认为select。

laudit_trail:指出是否填写fga_log$表中的lsqltext和lsqlbind的参数;DB设置不填写这两个列;默认值为DB_EXTENDED,它填写这两个列。

laudit_column_opts:确定查询引用audit_column参数中指定的列或所有列时,是否实施审计;设置为DBMS_FGA.ALL_COLUMNS,则语句只在引用audit_column参数中指定的所有列时进行审计;默认为DBMS_FGA.ANY_COLUMNS,表示如果语句引用audit_column参数指定的任何列时进行审计。

2)使用细粒度审计

下面的FGA示例审计hr.exp表上任何访问sales部门的任何雇员的salary列的DML语句:

SQL> execute

dbms_fga.add_policy(

object_schema

=> 'hr',

object_name

=> 'emp',

policy_name

=> 'chk_hr_emp',

audit_condition

=> 'dept = ''sales'' ',

audit_column

=> 'salary',

statement_types

=> 'insert,update,delete,select',

handler_schema

=> 'sec',

handler_module

=> 'log_id',

enable =>

true);

3)查看审计跟踪

如果在数据库中使用FGA,则DBA_FGA_AUDIT_TRAIL视图显示审计跟踪(存储在sys.fga_aud$表中)。

SQL> select

timestamp,db_user,os_user,object_schema,object_name,sql_text

from

dba_fga_audit_trial;

oracle数据库审计os,审计Oracle数据库的使用相关推荐

  1. oracle之 变更OS时间对数据库的影响

    本文:说明提供了操作系统日期变更对数据库.应用程序数据和作业的影响. 1.它将会影响插入的任何记录,如果涉及到sysdate,则更改日期. 2.它还会影响在那个日期运行的任何调度器作业. 如果将系统时 ...

  2. oracle数据库视图存放位置,oracle数据库审计

    一.何谓数据库审计? 数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,SQL语句执行,数据库对象访问这些方面的跟踪记录. 二.审记记录的存储方式 分为两种:一种是存储在操作系统文件中,一 ...

  3. linux 审计oracle,开启和关闭oracle数据库中的审计功能

    开启和关闭oracle数据库中的审计功能 第1步:查看审计功能是否开启? SQL> show parameter audit; NAME           TYPE         VALUE ...

  4. oracle数据库审计优点缺点,Oracle数据库安全性:标准数据库审计

    Oracle 数据库在其标准版和企业版数据库中均提供了强健的审计支持.审计记录包括有关已审计的操作.执行操作的用户以及操作的时间和日期的信息.审计记录可以存储在数据库审计线索中或操作系统上的文件上.标 ...

  5. oracle学习笔记之 审计

    Oracle数据库审计 数据库审计是监视并记录选定的用户数据库操作.主要分为标准审计和精细粒度审计(FGA,Fine-Grained Auditing),标准审计可在语句级.对象级.权限级进行审计:精 ...

  6. oracle数据库存储结构语句,oracle之物理数据库结构描述

    oracle之物理数据库结构概述 oracle的物理结构其实是由各种各样的文件组成的, 其中与数据库相关的有: 数据文件(data file):这些文件是数据库的主要文件:其中包括数据表.索引和所有其 ...

  7. Oracle 体系结构(8)—— Oracle 的审计文件(Audit files)

    Oracle 体系结构(8)-- Oracle 的审计文件(Audit files) 文章目录 Oracle 体系结构(8)-- Oracle 的审计文件(Audit files) 一.查看审计信息 ...

  8. Oracle 9i 10g编程艺术-深入数据库体系结构——第3章:文件

    第3章                      文件 这一章中,我们将分析构成数据库和实例的8种文件类型.与实例相关的文件只有: q         参数文件(parameter file):这些文 ...

  9. 数据库审计服务器性能要求,数据库审计技术指标资质要求-.docx

    数据库审计技术指标 资质要求: 提供自主知识产权证明文件(软件著作权.软件产品登记). 提供与需求单位同类HIS系统的三甲医院数据库审计的销售案例. 中标供应商必须在成交结果公示后按照用户要求提供为期 ...

最新文章

  1. AJAXControlToolkit-Framework3.5SP1 下载地址
  2. 线程间操作无效:从不是创建控件的线程访问它的三种方法
  3. JSP中文乱码问题解决
  4. pom.xml文件指定jdk版本号/跳过测试
  5. spring中事务配置的3种方式-2
  6. python中text怎么旋转字体_Python+OpenCV实现旋转文本校正方式
  7. Javascript之RegExp
  8. 按钮点击没有反应_时控开关按键没反应怎么办?
  9. JUnit4套件测试
  10. mysql自增主键查询及auto_increment修改。
  11. 如何做一名出色的初级开发?
  12. T3 - 构建大型 Web 应用的 JavaScript 框架
  13. Xilinx:词汇表
  14. 最优化理论与方法(袁亚湘 孙文瑜)笔记(二)
  15. CnOpenData中国各区县工商注册企业分年份数量统计(含新增,注销企业数量)
  16. mos管 rl_三极管与MOS管工作状态图解分享
  17. 操作系统(六) 页面置换
  18. 全景拍摄—地面拍摄教程
  19. 作为学科的计算机科学(COMPUTING AS A DISCIPLINE)
  20. java 接口方法名重复_Java接口/实现命名约定[重复]

热门文章

  1. SSM项目之商铺系统-店铺注册之js实现和店铺类别、区域信息的获取(十一)
  2. 梦想CAD控件(网页CAD插件) 2022.12.12更新
  3. Packet Tracer 思科模拟器练习8
  4. 北斗卫星信号类型及卫星颗数
  5. IOS 地球坐标-火星坐标-百度坐标 转换
  6. 期货怎么看仓单(如何查看期货仓单)
  7. 浅析继电器触点粘连问题
  8. 主板地和外壳接地_使用安全外壳和安全副本
  9. 开发一个app平台大概需要多少钱?
  10. CC1101与STC单片机通信