Oracle中的审计以及登陆登出、DDL触发器记录表审计等

2    96    2

Tags:

👉 本文共约7187个字,系统预计阅读时间或需28分钟。

什么是审计(Audit)?

审计(Audit)用于监视用户所执行的数据库操作,审计信息可存储于数据字典表,称为审计记录。审计记录存储在SYSTEM表空间中的SYS.AUD$表中,可通过视图DBA_AUDIT_TRAIL查看。审计记录也可以存储在操作系统文件中(默认位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/)。若审计表不存在,则可以通过脚本$ORACLE_HOME/rdbms/admin/cataudit.sql来创建。

审计的内容主要包括对数据库连接、SQL语句执行以及数据库对象访问等操作的跟踪记录。Oracle系统对任何用户所做的登录、操作数据库对象进行自动记录,以便使DBA在事后可以进行监督和检查。

启用审计

Oracle 11g默认启用审计,AUDIT_TRAIL参数的缺省值为DB,这意味着审计数据将记录在数据库中的AUD$审计字典基表上。

初始化参数AUDIT_TRAIL用于控制数据库审计,取值说明如下所示:

  • NONE:禁用数据库审计。
  • OS:启用数据库审计,并将数据库审计记录写入操作系统文件中。
  • DB:启用数据库审计,并将数据库所有审计记录写入数据库的SYS.AUD$表。
  • db_extended:启用数据库审计,并将数据库所有审计记录写入数据库的SYS.AUD$表。另外,填充SYS.AUD$表的SQLBIND列和SQLTEXT列。
  • XML:启用数据库审计,并将所有记录写到XML格式的操作系统文件中。
  • XML,EXTENDED:启用数据库审计,填充审计记录的所有列,包括SQLTEXT和SQLBIND的值。

数据字典

有关数据库审计的一些数据字典视图如下所示:

有关审计的数据字典视图介绍:

名称说明
SYS.AUD$唯一保留审计结果的表,其它均为视图。
STMT_AUDIT_OPTION_MAP包含有关审计选项类型代码的信息,由SQL.BSQ脚本在CREATE DATABASE时创建。
AUDIT_ACTIONS包含审计跟踪动作类型代码的描述,例如INSERT、DROP VIEW、DELETE、LOGON和LOCK。
ALL_DEF_AUDIT_OPTS包含默认对象审计选项。
USER_OBJ_AUDIT_OPTS描述当前用户拥有的所有对象上的审计选项。
DBA_AUDIT_TRAIL包含标准审计跟踪条目,USER_AUDIT_TRAIL只包含已连接用户的审计行。
USER_AUDIT_TRAIL显示与当前用户有关的审计跟踪条目。
DBA_AUDIT_OBJECT包含系统中所有对象的审计跟踪记录。
DBA_AUDIT_SESSION列出涉及CONNECT和DISCONNECT的所有审计记录。
USER_AUDIT_SESSION列出涉及当前用户的CONNECT和DISCONNECT的所有审计跟踪记录。
DBA_AUDIT_STATEMENT列出涉及数据库全部的GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM语句的审计跟踪记录。
DBA_AUDIT_EXISTS列出BY AUDIT NOT EXISTS产生的审计跟踪条目。
DBA_AUDIT_POLICIES记录了数据库中的细粒度审计策略定义。
DBA_FGA_AUDIT_TRAIL列出基于值的审计跟踪记录。
DBA_STMT_AUDIT_OPTS对语句生效的审计选项。
DBA_PRIV_AUDIT_OPTS对系统权限生效的审计选项。
DBA_OBJ_AUDIT_OPTS对数据库生效的审计选项。

迁移SYS.AUD$表

在日常的数据库维护中,经常出现SYSTEM表空间被撑满,在绝大多数情况下是因为数据库登录审计的功能被启动了,此时一般建议把SYS.AUD$相关对象迁移到其它表空间,从而避免SYSTEM被用完的风险。

在Oracle 11g之前迁移方法如下所示:

从Oracle 11g开始可以使用DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION进行迁移:

在Oracle 11g之前通过手工清理的方式或自定义作业来定期清理SYS.AUD$表,如下:

需要注意的是,如果AUD$表过大,那么直接TRUNCATE AUD$表,系统要立即释放大量的EXTENTS,会严重影响系统性能。可以通过如下2个步骤逐步释放EXTENTS:

① 清空数据并且保留原来的EXTENTS:

在这里,REUSE STORAGE是TRUNCATE的一个参数,表示保持原来的存储不变。一般情况下,SQL命令“TRUNCATE TABLE TABLE_NAME;”其实就是“TRUNCATE TABLE TABLE_NAME DROP STORAGE;”。DROP STORAGE是TRUNCATE TABLE的默认参数。

② 逐步回缩EXTENTS:

需要注意的是,在执行的时候,可以根据实际情况调整每次回缩空间的大小。

若审计在OS和XML选项下进行手动删除审计文件。在Oracle 11g中通过DBMS_AUDIT_MGMT包下的子过程进行手动或定期清理。下面的过程可以迁移审计记录到USERS表空间:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
Oracle中的审计以及登陆登出、DDL触发器记录表审计等后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

2 条回复

  1. Avatar photo yxz说道:

    请问博主,如果有用户做了数据导出的这个行为,那么我如何进行审计呢?

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部