ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 学习笔记:数据库安全性--审计

学习笔记:数据库安全性--审计

原创 Linux操作系统 作者:c_shore 时间:2011-08-26 02:29:21 0 删除 编辑

  


数据库安全性:

※监视和审计是安全过程的重要部分,分为:

①强制性审计:不管其它审计选项或参数为何,所有Oracle 数据库都会审计特定的操作

②标准数据库审计:通过设置AUDIT_TRAIL 初始化参数启用审计后,可选择要审计的对象和权限。

③基于值审计:不仅会捕获已发生的审计事件,还会捕获插入、更新或删除的实际值

④细粒度审计(FGA):,这种审计可捕获已发出的实际SQL 语句,而不仅仅是发生了事件的SQL 语句。

⑤DBA审计:在DBA 与审计者或安全管理员之间划分审计责任,审计者或安全管理
员在操作系统审计线索中负责监视DBA 的活动。



※标准数据库审计:启用数据库审计并指定审计选项(登录事件、系统活动和对象权限或使用的SQL 语句)后,数据库开始收集审计信息。

 审计线索(AUDIT_TRAIL)  可设置为不同的值:

①OS:审计记录将存储在操作系统的审计系统中。

在Windows环境下,审计记录存储在事件日志中。在UNIX 或Linux 环境下,审计记录存储在  AUDIT_FILE_DEST 参数指定的文件中。
②DB: 可复查DBA_AUDIT_TRAIL 视图中的审计记录,这个视图是SYS 方案的一部分。

③XML:审计记录会写入AUDIT_FILE_DEST 参数指向的目录中的XML 文件。使用V$XML_AUDIT_TRAIL 视图可查看此目录中的所有                 XML 文件。

※启动数据库审计:  可使用EM修改SPFILE 或者 使用指令ALTER SYSTEM SET audit_trail="参数" SCOPE=SPFILE;  



※指定审计选项:

①审计SQL语句:AUDIT TABLE; 可审计影响表的任何DDL语句(包括CREATE、DROP、TRUNCATE等)

②审计系统权限:可用来审计任何系统权限

例如:AUDIT select any table,create any triggers;

AUDIT select any table BY hr BY session;

△审计设置:

by access 默认情况 ,每次行使经过审计的系统权限时,就会生成一条审计记录

by session 分组审计记录,以便每个会话只生成一条记录

③审计对象权限:可用来审计对表、视图、过程、序列、目录和用户定义的数据类型执行的操作

例如AUDIT UPDATE ON HR.EMPLOYEES BY ACCESS;

△默认情况下,审计对象权限时按会话分组,即by session


※禁用审计选项: ALTER SYSTEM SET audit_trail="NONE" SCOPE=SPFILE; 即不做审计

※也可针对权限进行禁用审计: NOAUDIT 替换 AUDIT

例如:NOAUDIT DELETE ON HR.JOBS;

NOAUDIT UPDATE ON HR.JOBS;


基于值审计

※进行数据审计会记录审计对象中发生的插入,更新,删除操作,但是不会捕获更改的值

※基于值审计:扩展了数据库审计的功能,它能够捕获更改的实际值。基于值审计利用了数据库触发器(事件驱动的PL/SQL 构造)。

※与标准数据库审计相比,使用基于值审计时,性能下降幅度比较大。性能下降幅度取决于触发器代码的效率

※仅在标准数据库审计捕获的信息不足的情况下,才会使用基于值审计

※基于值审计的关键在于审计触发器。


※ 可按表或视图中的单个列设置重点FGA 审计选项,甚至可以将其设置为条件选项,以便只在符合管理员定义的特定规范时才捕获审

※可使用DBMS_FGA PL/SQL 程序包来创建目标表或视图的审计策略。

※使用DBMS_FGA.ALL_COLUMNS和DBMS_FGA.ANY_COLUMNS,可根据语句中是使用了任一相关列还是全部相关列来进行审计。

※审计策略:使用DBMS_FGA.ADD_POLICY 过程创建FGA 策略

该过程接受以下参数

△策略名 policy_name => '策略名'       例如policy_name => 'audit_emps_salary'

△审计条件 audit_condition => '审计条件'        例如audit_condition => 'department_id = 10'

△审计列:审计列定义了要审计的数据  audit_column 例如audit_column => 'SALARY' 

如果未指定此参数,则仅由AUDIT_CONDITION 参数确定审计事件是否必须发生。

△对象 对象是要审计的表或视图 object_schema 与 object_name 

object_schema => 'hr'
object_name => 'employees'

△处理程序 用于定义在审计期间必须执行的任何附加操作的PL/SQL程序  handler_schema 与 handler_name

例如

使用以下参数执行SECURE.LOG_EMPS_SALARY 过程:
handler_schema => 'secure'
handler_module => 'log_emps_salary'

△状态 指示是否启用了FGA策略 enable  例如  enable => TRUE  


审计的DML语句:注意事项

※如果满足FGA 谓词并且引用了相关列,则会审计记录。

※因为DELETE 语句会访问表中的所有列。因此,不管相关列是什么,总是要审计DELETE 语句。

※会审计MERGE 语句以及基础INSERT 或UPDATE 生成语句。


FGA准则

※要审计所有语句,请使用null 条件。

※策略名必须唯一

※创建策略时,审计的表或视图必须已经存在。

※如果表中不存在审计的列,则不会审计任何行。

※如果事件处理程序不存在,则不会返回任何错误但仍会创建审计记录。


DBA审计

※具有SYSDBA 或SYSOPER 权限的用户可在数据库处于关闭状态时进行连接,并进行更改,所以这些权限的审计线索须存放在数据库外部。

※可使用audit_sys_operations 设置为TRUE 启用对SYSDBA或SYSOPER 操作的附加审计。


维护审计线索

※标准审计的审计线索存储在AUD$ 表中。FGA 的审计线索存储在FGA_LOG$ 表中。

※这两个表都是在SYSTEM 表空间中创建的,不支持将审计表移动到SYSTEM表空间外部

※基本维护必须包括复查审计记录及删除数据库或操作系统中的较旧记录

※审计线索会不断增长,一直填满可用的存储空间,会导致性能问题。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26121819/viewspace-705824/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2011-08-01

  • 博文量
    32
  • 访问量
    23348