热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Oracle审计日志配置与管理指南

本文详细介绍了Oracle数据库中审计日志(audittrail)的配置方法及各参数选项的功能,包括如何启用系统范围的审计记录,以及如何将审计数据存储在不同的位置和格式。

Oracle数据库中的审计功能允许管理员监控和记录对数据库的各种操作。通过配置AUDIT_TRAIL参数,可以控制审计信息的记录方式和存储位置。

AUDIT_TRAIL参数可选值及其含义如下:

  • DB/TRUE: 启用系统级审计,审计记录将被写入数据库的审计跟踪表(SYS.AUD$)。需要注意的是,SYSDBA用户的活动不会被记录到该表中。
  • OS: 启用系统级审计,审计数据将被写入由AUDIT_FILE_DEST参数指定的目录下的文本文件中,适用于特权用户和普通数据库用户。
  • DB,EXTENDED: 类似于DB/TRUE设置,但额外填充了SYS.AUD$表中的SQLTEXT和SQLBIND CLOB列,以包含SQL语句的文本和绑定变量。
  • XML: 启用系统级审计,审计数据将以XML格式存储在由AUDIT_FILE_DEST参数指定的目录下。
  • XML,EXTENDED: 除了具备XML模式的所有特性外,还会填充SQLBIND和SQLTEXT列。

更改审计配置后,通常需要重启数据库实例才能使设置生效。

SQL> alter system set AUDIT_TRAIL = DB scope=spfile;
SQL> shutdown immediate
SQL> startup

如果审计表AUD$不存在,可以通过运行以下命令手动创建:

SQL> conn / as sysdba
SQL> @?/rdbms/admin/cataudit.sql

为了优化性能或满足特定需求,可能需要将审计表移动到不同的表空间:

alter table AUD$ move tablespace AUD;
alter table aud$ move lob (sqlbind) store as (tablespace AUD);
alter table aud$ move lob (sqltext) store as (tablespace AUD);

对于Oracle 10.2.0.5及以上版本,还可以使用自动段空间管理(ASSM)来管理和压缩审计表:

conn / as sysdba
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
audit_trail_type => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD,
audit_trail_location_value => 'USERS'
);
END;
/
alter table sys.aud$ enable row movement;
alter table sys.aud$ shrink space cascade;

此外,还可以通过脚本将审计表从SYSTEM表空间移出,以减少SYSTEM表空间的压力。在执行此操作前,建议先将audit_trail设置为NONE并重启数据库。

create tablespace "AUDIT"
datafile '$HOME/data/aud01.dbf' size 500k
default storage (initial 100k next 100k pctincrease 0)
/
create table audx tablespace "AUDIT"
storage (initial 50k next 50k pctincrease 0)
as select * from aud$ where 1 = 2
/
rename AUD$ to AUD$$
/
rename audx to aud$
/
create index i_aud2
on aud$(sessionid, ses$tid)
tablespace "AUDIT" storage(initial 50k next 50k pctincrease 0)
/

通过审计功能,可以有效检测潜在的安全威胁,如登录尝试失败等。例如,可以通过以下SQL语句启用对未成功登录尝试的审计:

SQL> AUDIT CREATE SESSION BY ACCESS WHENEVER NOT SUCCESSFUL;
SQL> AUDIT CONNECT BY ACCESS WHENEVER NOT SUCCESSFUL;

一段时间后,可以通过查询AUD$表来检查审计结果,识别可能的攻击行为:

select returncode, action#, userid, userhost, terminal 
from aud$
where returncode='1017' and action=100;

此外,还可以通过以下命令快速查看数据库当前的审计配置状态:

show parameter audit

通过AUDIT_TRAIL、AUDIT_FILE_DEST、AUDIT_SYS_OPERATIONS和AUDIT_SYSLOG_LEVEL等参数,可以灵活控制审计数据的记录方式、存储位置和发送目标。同时,可以通过AUDIT语句来指定需要审计的具体操作、权限和对象,从而实现精细化的安全管理。


推荐阅读
author-avatar
禅城花市C077
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有