Oracle:审计

Oracle提供了审计工具,用于跟踪、记录、统计数据库活动的方方面面!——sqlserver似乎还没有该功能!

Oracle的审计功能三大类

  1. 利用初始化参数控制的:数据库内置审计
  2. 利用dbms_fga提供的:表、视图的精细审计
  3. 利用触发器实现的:强大、复杂、灵活的 应用审计

下面介绍数据库内置审计功能

  默认情况下:oracle不启用数据库审计功能。Oracle只记录数据库的基本活动,可以通过windows的事件查看器查看审计记录聊——这时候所提供的信息是一般的windows服务所必须提供的信息。没有oracle的主动审计工作在里面。(这时候的oracle把基本活动记录在想关的日志中:错误、跟踪、后台、用户等)

  • audit_sys_operations={false(默认:不启用特权用户的审计)|true}
  • audit_trail={none(默认:不启用普通用户的审计)|os|db|db_extended|xml|xml_extended}

设置审计audit:需要audit system、audit any权限。

  • audit {all | sqlstatment....} [by {all users | user....| proxy....}]   [by {session | access}]   [whenever { all | successful | not successful}]
  • audit {all privileges | role.... | system_privileges....}  [by {all users | user....| proxy....}]   [by {session | access}]   [whenever { all | successful | not successful}]
  • audit {all | object_options....} on { default | directory directory_name | [schema.] object}   [by {session | access}]   [whenever { all | successful | not successful}]
  • audit network   [by {session | access}]   [whenever { all | successful | not successful}]
  • 注意:只有对象审计是立即生效的,其他的审计只对将来的会话生效!

停止审计noaudit:权限需求同audit ,定义形式相同——除了没有 [by {session | access}] 子定义

注意:noaudit必须和也只能取消之前定义完全相同的audit语句,并不会取消所有或指定的类,其他的audit会继续进行

审计推荐

  • by access 可以审计每一次执行,对于dml来说:by session 对同一会话内相同的dml语句只记录一次审计记录是不合适的!
  • by user 可以只审计某个、某些用户的,比较实用

查询审计信息:dba_audit_trail字典表。审计纪律记录在sys.aud$fixed表里,可以通过查询dba_audit_trail数据字典表获取信息

  • dba_audit_xxx:审核的记录细节信息
  • dba_stmt_audit_opts:语句审核设置
  • dba_priv_audit_opts:权限审核设置
  • dba_obj_audit_opts:对象审核设置
原文地址:https://www.cnblogs.com/jinzhenshui/p/1525325.html