详解Oracle审计(一)

embedded/2024/10/18 5:31:09/

题记:

有段时间没写过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 ;)在Oracle11gCREATESESSION作为受审计的权限来被记录,因此当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 语句的执行次数、找出频繁执行的语句或检测异常操作。
    通过分析审计日志,可以发现潜在的安全问题、性能瓶颈或合规性问题,并采取相应的措施进行解决。

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


http://www.ppmy.cn/embedded/128364.html

相关文章

限流是什么?如何限流?怎么限流?

概述 什么是限流 对某一时间窗口内的请求数进行限制,保持系统的可用性和稳定性,防止因流量暴增而导致的系统运行缓慢或宕机 为什么要限流 因为互联网系统通常都要面对大并发大流量的请求,在突发情况下(最常见的场景就是秒杀、抢购),瞬时大流量会直接将系统打垮,无法…

HBase中的Write-Ahead Log 详解

HBase(Hadoop Database)是基于 Hadoop 的分布式、列族存储数据库,擅长处理大规模的结构化数据。HBase 采用了 Write-Ahead Log (WAL) 机制来保证数据的持久性和容错性,这与其他数据库的 WAL 概念类似,但在 HBase 的架构…

git log

git log 查看日志的完整信息; git log --oneline 只查看日志id和日志信息--一行显示。 git log --graph

AI赋能网络安全:十大专业场景深度解析与实战应用

引言 随着信息技术的飞速发展,网络安全已成为企业运营和个人隐私保护的重中之重。面对日益复杂多变的网络威胁,传统的人工防御手段已难以满足当前的安全需求。在此背景下,人工智能(AI)技术的引入为网络安全领域带来了革…

提升教学|探索在线教育平台开发,助力数字化教育

随着互联网技术的飞速发展,教育领域也在经历着深刻的变革。在线教育以其便捷性、灵活性和个性化学习路径的优势,正逐渐成为主流的学习方式之一,在线教育平台的开发成为了教育行业的趋势,为在线教育带来了新的机遇。 一、在线教育系…

PageHelper循环依赖问题

1. 问题 2. 原因 项目中SpringBoot的版本为2.7.18。 SpringBoot2.6.x后不推荐使用循环依赖,也就是说从2.6.x版本开始,如果项目里还存在循环依赖,SpringBoot将拒绝启动! 3. 解决 去pageHelper github看,才看到新版本…

全金属的两足机器人钢铁侠开发

比较喜欢钢铁侠和终结者,其全金属的机身,反射着金属的光泽,透露出令人惊叹的美感。 这也是一个全金属机器人,周身有十几片铝片和四个舵机组成,可以叫他钢铁侠或者终结者。这么笨,这么小,可以说是…

docker容器里的时间不对,linux解决方案

docker容器里的时间不对,linux解决方案 docker容器里的时间不对,linux解决方案 docker容器里的时间不对,linux解决方案 我看了网上有许多解决方案, 但是,我尝试后,发现,对我来说无效 随之又查了许多资料,费了好大劲,才搞定。 # 查看主机时间 [root ~]# date Fri Sep …