详解Oracle审计(一)

题记:

有段时间没写过oracle了,今天回归。

本文将详细介绍oracle的审计功能,基于11g版本,但对12c,19c也同样适用。

审计(Audit)用于监视用户所执行的数据库操作,并且 Oracle 会将审计跟踪结果存放到 OS 文件(默认位置为 O R A C L E B A S E / a d m i n / ORACLE_BASE/admin/ ORACLEBASE/admin/ORACLE_SID/adump/),或数据库(存储在 system 表空间中SYS.AUD$ 表中,可通过视图 dba_audit_trail 查看)中。审计可以提供有用的信息,用于揭示权限的滥用和误用。当需要一定的粒度时,DBA 可以使用细粒度的审计来监控对表中某些行或列的访问,而不仅仅是是 否访问表。

在 oracle 11g 中,用 DBCA 工具建库后,审计功能(AUDIT_TRAIL)是默认开启的。审计数据默认存放 SYSTEM 表空间下的 AUD$ 审计字典基表上。开启审计数据库会增加消耗,降低业务性能,因此,如果不是很有必要,在安装好数据库后,可适当选择关闭数据库审计功能。Oracle 还推荐使用基于 OS文件的审计日志记录方式(OS audit trail files),当 AUDIT_TRAIL 设置为 OS 时,审计记录文件将在AUDIT_FILE_DEST 参数所指定的目录中生成。

1. 审计的目的

  1. 确保数据库的安全性:通过记录用户对数据库的访问和操作,可以及时发现潜在的安全漏洞和未经授权的访问。
  2. 满足合规性要求:许多行业和法规要求对数据库活动进行审计,以确保数据的保密性、完整性和可用性。
  3. 故障排查和性能优化:审计日志可以帮助管理员分析数据库性能问题和故障,确定问题的根源。

2. 审计的类型

3. 审计的位置

审计记录可以发送到 SYS.AUD$数据库表或操作系统文件。为了启用审计并指定记录审计记录的位置,将初始参数AUDIT_TRAIL 设置为如下表几个值之一:

参数 AUDIT_TRAIL 是静态参数,须重启实例生效。在使用 SYS.AUD$ 表进行审计时,应该注意监控该表的大小,以避免影响 SYS 表空间中其他对象的空间需求。推荐定期备份 SYS.AUD$ 中的数据,并且截断该表(truncate table aud ; )在 O r a c l e 11 g 中 C R E A T E S E S S I O N 作为受审计的权限来被记录,因此当 S Y S T E M 表空间因磁盘空间而无法扩展时将导致部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。在这种场景中仍可以使用 S Y S D B A 身份的用户创建会话,将审计数据备份后删除一部分记录,或者 T R U N C A T E A U D ;) 在 Oracle 11g 中 CREATE SESSION 作为受审计的权限来被记录,因此当 SYSTEM 表空间因磁盘空间而无法扩展时将导致部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。在这种场景中仍可以使用 SYSDBA 身份的用户创建会话,将审计数据备份后删除一部分记录,或者 TRUNCATE AUD ;)在Oracle11g中CREATESESSION作为受审计的权限来被记录,因此当SYSTEM表空间因磁盘空间而无法扩展时将导致部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。在这种场景中仍可以使用SYSDBA身份的用户创建会话,将审计数据备份后删除一部分记录,或者TRUNCATEAUD 都可以解决上述问题。在默认情况下会以 AUTOEXTEND ON 自动扩展选项创建 SYSTEM 表空间,因此系统表空间在必要时会自动增长,我们所需注意的是磁盘上的剩余空间是否能够满足其增长需求,以及数据文件扩展的上限,对于普通的 8k Smallfile 表空间而言,单个数据文件的最大尺寸是 32G。

4. 开启审计功能

alter system set audit_trail=db_extended scope=spfile; 
-- 重启数据库生效:
 startup force

5. 语句审计

在 Oracle 11g 中,语句审计是一种重要的审计类型,主要用于记录特定的 SQL 语句执行情况。

  1. 语句审计的作用
    安全监控:可以检测到潜在的恶意操作或未经授权的 SQL 语句执行。例如,发现对敏感数据的不当查询或修改操作。
    合规性检查:满足法规和企业内部政策对数据库操作的审计要求。许多行业要求对特定的 SQL 语句进行审计,以确保数据的安全性和完整性。
    性能分析:通过分析频繁执行的 SQL 语句,可以发现性能瓶颈并进行优化。例如,如果发现某个查询语句被频繁执行且执行时间较长,可以考虑对该查询进行优化,如添加索引或调整查询逻辑。
  2. 语句审计的设置
    使用 AUDIT 语句进行设置:
    例如,AUDIT SELECT ON schema.table BY ACCESS; 这条语句将审计对指定模式下的表的 SELECT 语句执行情况。每次用户执行对该表的 SELECT 操作时,都会在审计日志中记录一条相应的审计记录。
    可以审计多种类型的 SQL 语句,包括 SELECT、INSERT、UPDATE、DELETE、CREATE、ALTER、DROP 等。
    通过初始化参数设置审计策略:
    AUDIT_TRAIL参数可以确定审计日志的存储位置,如存储在数据库中(DB)、操作系统文件中(OS)或 XML 文件中。
    AUDIT_SYS_OPERATIONS参数决定是否审计以 SYSDBA 或 SYSOPER 身份执行的操作。
  3. 审计日志的查看与分析
    查看审计日志:可以通过查询数据库视图来查看语句审计的记录。例如,DBA_AUDIT_TRAIL视图包含了所有的审计记录,可以根据需要筛选出特定类型的语句审计记录。
    可以查询特定用户、特定时间段或特定对象的审计记录,以便进行详细的分析。
    分析审计日志:
    可以使用 SQL 查询或第三方工具对审计日志进行分析,以提取有用的信息。例如,统计不同类型 SQL 语句的执行次数、找出频繁执行的语句或检测异常操作。
    通过分析审计日志,可以发现潜在的安全问题、性能瓶颈或合规性问题,并采取相应的措施进行解决。

限于篇幅,本文待续
码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,家人们的点赞和关注是我笔耕不辍的动力。

相关推荐
独行soc23 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
White_Mountain42 分钟前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship42 分钟前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
LIKEYYLL1 小时前
GNU Octave:特性、使用案例、工具箱、环境与界面
服务器·gnu
云云3212 小时前
搭建云手机平台的技术要求?
服务器·线性代数·安全·智能手机·矩阵
云云3212 小时前
云手机有哪些用途?云手机选择推荐
服务器·线性代数·安全·智能手机·矩阵
cominglately2 小时前
centos单机部署seata
linux·运维·centos
魏 无羡2 小时前
linux CentOS系统上卸载docker
linux·kubernetes·centos