• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Oracle11g audit审计配置全过程

    发布者: Error | 发布时间: 2025-6-18 09:27| 查看数: 34| 评论数: 0|帖子模式

    一、audit是什么?

    Oracle的审计功能允许数据库管理员跟踪和记录对数据库的操作,以确保数据库的安全性、合规性和完整性。
    Oracle提供了多种审计功能和方法,可以针对不同的需求和场景进行配置和使用,主要包括:

    • 标准审计(Standard Auditing):用于审计特定的SQL语句、特权、对象和操作。
    • 细粒度审计(Fine-Grained Auditing, FGA):允许对表级别的数据访问进行细粒度控制和审计。
    • 统一审计(Unified Auditing):Oracle 12c引入的新特性,整合了标准审计、FGA等多种审计方式。

    二、启用audit

    要启用数据库审计,需要初始化参数 AUDIT_TRAIL :
    参数值含义none默认值,不做审计db启用数据库审计并将所有审计记录指向数据库审计跟踪 (SYS.AUD$) 中db_extended完成 AUDIT_TRAIL=DB 的全部操作并填充 SYS.AUD$ 表的 SQL 绑定和 SQL 文本列xml启用数据库审计并将所有审计记录以 XML 格式指向一个操作系统文件os启用数据库审计并将所有审计记录指向一个操作系统文件此外,还应设置以下数据库参数:

    • AUDIT_FILE_DEST :指定操作系统审计跟踪位置的动态参数,默认位置为 $ORACLE_BASE/admin/$ORACLE_SID/adump。
    • AUDIT_SYS_OPERATIONS :启用对用户 SYS 以及使用 SYSDBA、SYSOPER、SYSASM、SYSBACKUP、SYSKM 和 SYSDG 权限进行连接的用户发出的操作的审计,该参数应当设为 true。
    可以通过以下命令修改参数
    1. alter system set audit_sys_operations=TRUE scope=spfile;
    2. alter system set audit_trail=db_extended scope=spfile;
    复制代码
    重启数据库才能生效
    1. shutdown immediate;
    2. startup;
    复制代码
    查看是否启动了审计功能
    1. show parameter audit;
    复制代码
    三、配置标准审计

    标准审计是 Oracle 数据库的基本审计级别,可对数据库对象(如表、视图、过程等)的操作进行审计。
    审计记录包括对 DDL 和 DML 操作的记录,例如对表的 SELECT、UPDATE、INSERT 或 DELETE 操作进行记录。
    标准审计可以通过 AUDIT 和 NOAUDIT 命令进行配置。
    AUDIT语法
    1. AUDIT action [, action, ...] on object_name [by user] [whenever condition];
    复制代码

    • action: 指定要审计的操作,可以是单个操作(如 SELECT、INSERT、UPDATE、DELETE)或多个操作的组合。
    • object_name: 指定要审计的对象,可以是表、视图、过程等数据库对象。
    • BY user: 可选项,指定要审计的用户。如果不指定,默认为当前用户。
    • WHENEVER condition: 可选项,指定触发审计的条件,例如成功或失败。
      AUDIT 参数说明
    • action:
      单个操作:SELECT、INSERT、UPDATE、DELETE、ALTER、DROP、CREATE、SYSTEM AUDIT、SESSION AUDIT等。
      多个操作组合:用逗号分隔,例如 SELECT, INSERT, UPDATE 表示同时审计这三种操作。
    • object_name:
      表示要审计的对象,可以是表名、视图名、过程名等数据库对象。
      也可以使用 ALL 来审计所有对象,或者使用通配符 % 来匹配多个对象。
    • by user:
      指定要审计的用户,可以是具体用户名或者 PUBLIC(对所有用户生效)。
      如果不指定 BY user,默认为当前用户。
    • whenever condition:
      可以用来指定触发审计的条件,常见的条件包括 SUCCESSFUL(成功操作)和 NOT SUCCESSFUL(失败操作)。
      例如,WHENEVER SUCCESSFUL 表示只审计成功的操作,而 WHENEVER NOT SUCCESSFUL 表示只审计失败的操作。
    示例:
    审计对特定表的SELECT操作:
    1. AUDIT SELECT ON employees;
    复制代码
    审计特定用户对特定表的SELECT操作:
    1. AUDIT SELECT ON employees BY hr_user;
    复制代码
    审计对特定表的失败的SELECT操作:
    1. AUDIT SELECT ON employees WHENEVER NOT SUCCESSFUL;
    复制代码
    可以通过以下查询显示已启用的审计选项和配置,以及审计的状态信息。
    1. SELECT * FROM DBA_PRIV_AUDIT_OPTS; -- 查看特权操作的审计配置
    2. SELECT * FROM DBA_STMT_AUDIT_OPTS; -- 查看语句级操作的审计配置
    3. SELECT * FROM DBA_OBJ_AUDIT_OPTS;  -- 查看对象级操作的审计配置
    复制代码
    通过使用 AUDIT 语句,管理员可以灵活地配置审计策略,跟踪和记录数据库中特定操作的执行情况,以确保数据库的安全性和合规性。

    四、审计记录管理

    审计记录管理包括查看、存档和清理审计记录。

    1.查看审计记录

    可以通过以下视图查看审计记录:
    1. DBA_AUDIT_TRAIL:查看标准审计记录。
    2. DBA_FGA_AUDIT_TRAIL:查看细粒度审计记录。
    3. UNIFIED_AUDIT_TRAIL:查看统一审计记录。
    复制代码
    2.清理审计记录

    可以定期清理过期的审计记录,以避免占用过多的存储空间。
    例如:

    • 删除30天前的标准审计记录:
    1. DELETE FROM SYS.AUD$ WHERE TIMESTAMP# < SYSDATE - 30;
    复制代码

    • 删除30天前的细粒度审计记录:
    1. DELETE FROM DBA_FGA_AUDIT_TRAIL WHERE TIMESTAMP < SYSDATE - 30;
    复制代码
    请注意,开启审计功能可能会对数据库性能产生一定影响,因此应根据实际需求和安全政策来配置审计选项,并定期维护审计记录以保证数据库的安全性和合规性。

    总结

    以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

    来源:https://www.jb51.net/database/328385ltt.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表