详解Oracle审计(二)

题记:

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

1. 语句审计实操演示实例

sqlplus / as sysdba
show parameter audit_trail
alter system set audit_trail=db_extended scope=spfile;
startup force
show parameter audit_trail
-- 启用审计 scott 用户的建表操作
alter user scott account unlock identified by scott;
audit create table by scott by access;
select user_name,audit_option,success,failure
from dba_stmt_audit_opts
where user_name='SCOTT';
conn scott/scott
create table tt(id int);
-- 查看审计记录
conn / as sysdba
select username, to_char(timestamp,'MM/DD/YY HH24:MI:SS') Timestamp, obj_name,
action_name, sql_text
from dba_audit_trail
where username= 'SCOTT';
-- 取消审计
noaudit create table by scott;
select user_name,audit_option,success,failure
from dba_stmt_audit_opts
where user_name='SCOTT';
conn scott/scott
create table ee(id int);
-- 查看审计记录
conn / as sysdba
select username,to_char(timestamp,'MM/DD/YY HH24:MI:SS') Timestamp,obj_name,
action_name, sql_text
from dba_audit_trail
where username= 'SCOTT';

2. 权限审计

在 Oracle 11g 中,权限审计主要用于跟踪用户对系统权限的使用情况。

  1. 权限审计的目的
    安全管控:了解用户对特定权限的使用,及时发现权限滥用或未经授权的权限使用情况,从而加强数据库的安全性。
    合规需求:满足法规和企业内部的合规要求,确保对权限的使用有明确的记录和监控。
    故障排查:在出现问题时,通过查看权限审计日志,可以确定是否是由于权限不当使用导致的问题。
  2. 权限审计的设置
    使用 AUDIT 语句进行权限审计设置:
    例如,AUDIT CREATE SESSION BY ACCESS;这条语句将审计用户创建会话的权限使用情况。每当有用户使用 CREATE SESSION 权限登录数据库时,就会在审计日志中记录一条相应的审计记录。
    可以对各种系统权限进行审计,如 CREATE TABLE、DROP VIEW、ALTER USER 等。
    初始化参数配置:
    AUDIT_TRAIL参数决定审计日志的存储位置,可以选择存储在数据库中、操作系统文件中或 XML 文件中。
    AUDIT_SYS_OPERATIONS参数决定是否审计以 SYSDBA 或 SYSOPER 身份执行的操作,这些操作通常涉及高级权限的使用。
  3. 审计日志的查看与分析
    查看审计日志:可以通过查询数据库视图来查看权限审计记录。例如,DBA_AUDIT_TRAIL视图包含了所有的审计记录,可以根据权限类型、用户等条件进行筛选。
    可以查看特定权限的使用情况,以及使用该权限的用户和时间。
    分析审计日志:
    可以使用 SQL 查询或第三方工具对审计日志进行分析,以提取有用的信息。例如,统计不同权限的使用次数、找出频繁使用特定权限的用户等。
    通过分析权限审计日志,可以发现潜在的安全风险,并采取相应的措施,如调整用户权限、加强安全培训等。
  4. 权限审计实操演示实例
alter system set AUDIT_SYS_OPERATIONS=true scope=spfile;
startup force
cd /u01/app/oracle/admin/orcl/adump/
-- 可用编辑器查看 *.aud 审计文件内容
-- 设置审计
conn / as sysdba
audit create table by scott by access;
audit session by scott;
select user_name,privilege,success,failure
from dba_priv_audit_opts
where user_name='SCOTT' order by user_name;
conn scott/scott
create table tt(id int);
-- 查看审计记录
conn / as sysdba
select username,to_char(timestamp,'MM/DD/YY HH24:MI:SS') Timestamp, obj_name,
action_name, sql_text
from dba_audit_trail
where username= 'SCOTT';
-- 取消审计
noaudit create table by scott;

3. 对象审计

在 Oracle 11g 中,对象审计用于审计对特定数据库对象(如表、视图、存储过程等)的访问。

  1. 对象审计的目的
    数据安全:确保对敏感数据库对象的访问受到监控,防止未经授权的数据访问和修改。
    合规性要求:满足行业法规和企业内部政策对特定对象审计的要求。
    问题排查:在出现数据异常或安全事件时,通过对象审计日志可以快速确定对特定对象的操作历史,帮助找出问题的根源。
  2. 对象审计的设置
    使用 AUDIT 语句进行对象审计设置:
    例如,AUDIT SELECT ON schema.table BY ACCESS; 这条语句将审计对指定模式下的表的 SELECT 操作。可以对不同的操作类型进行审计,如 INSERT、UPDATE、DELETE 等。
    对于视图,可以使用类似的语句进行审计,如 AUDIT SELECT ON schema.view BY ACCESS;。
    对于存储过程,可以审计其执行情况,如 AUDIT EXECUTE ON schema.procedure BY ACCESS;。
    通过初始化参数配置:
    AUDIT_TRAIL参数决定审计日志的存储位置,可以存储在数据库中、操作系统文件中或 XML 文件中。
    AUDIT_SYS_OPERATIONS参数决定是否审计以 SYSDBA 或 SYSOPER 身份执行的操作。
  3. 审计日志的查看与分析
    查看审计日志:可以通过查询数据库视图来查看对象审计记录。例如,DBA_AUDIT_TRAIL视图包含了所有的审计记录,可以根据对象名称、操作类型等条件进行筛选。
    可以查看对特定对象的具体操作时间、用户、操作类型等信息。
    分析审计日志:
    可以使用 SQL 查询或第三方工具对审计日志进行分析,以提取有用的信息。例如,统计对特定对象的操作次数、找出频繁访问特定对象的用户等。
    通过分析对象审计日志,可以发现潜在的安全风险和性能问题,并采取相应的措施进行改进。
  4. 对象审计实操演示实例
show parameter audit_trail
alter system set audit_trail=db_extended scope=spfile;
startup force
show parameter audit_trail
-- 审计设置
audit select,insert,delete on scott.dept by access;
select object_name,object_type,alt,del,ins,upd,sel
from dba_obj_audit_opts;
conn scott/scott
insert into dept values(11,'aa','aa');
insert into dept values(12,'bb','bb');
commit;
-- 查看审计记录
conn / as sysdba
select timestamp,action_name,sql_text
from dba_audit_trail
where owner='SCOTT';
-- 取消审计
noaudit select,insert,delete on scott.dept;
--审计查询:
show parameter audit_trail
alter system set audit_trail=db_extended scope=spfile;
startup force
show parameter audit_trail
-- 设置审计
audit select,insert,delete on scott.dept by access;
-- 清空审计记录
delete sys.aud$;
conn scott/scott
insert into dept values(13,'cc','cc');
select * from dept;
delete from dept where deptno=11;
update dept set loc='abc' where deptno=12;
-- 查看审计记录
conn / as sysdba
select username,timestamp,owner,action_name,obj_name from dba_audit_object;

4. 细粒度审计

在 Oracle 11g 中,细粒度审计(Fine-Grained Auditing,FGA)是一种更为强大和灵活的审计方式,可以基于特定的条件进行审计,提供了更细粒度的控制。

  1. 细粒度审计的目的
    精准监控:能够针对特定的数据库对象、特定的操作以及特定的条件进行审计,实现对数据库活动的精准监控。
    减少开销:与传统的审计方式相比,细粒度审计可以只对满足特定条件的操作进行审计,从而减少不必要的审计开销。
    满足复杂需求:适应复杂的业务场景和安全要求,例如只审计对特定表中特定列的访问,或者只审计满足特定条件的 SQL 语句。
  2. 细粒度审计的设置
    使用 DBMS_FGA 包进行设置:
    例如,以下代码将对特定表中特定列的更新操作进行细粒度审计:
      DBMS_FGA.ADD_POLICY(object_schema => 'schema_name',object_name => 'table_name',policy_name => 'audit_policy',audit_condition => 'col1 > 100',audit_column => 'col1',statement_types => 'UPDATE');END;/

可以设置审计条件、审计的列、操作类型等参数,以满足不同的审计需求。
配置审计策略:
可以根据业务需求和安全要求,灵活配置细粒度审计策略。例如,可以设置多个审计策略,分别针对不同的表、列和操作条件进行审计。
3. 审计日志的查看与分析
查看审计日志:可以通过查询数据库视图来查看细粒度审计记录。例如,DBA_FGA_AUDIT_TRAIL视图包含了细粒度审计的记录,可以根据审计策略名称、对象名称等条件进行筛选。
可以查看详细的审计信息,包括操作时间、用户、操作类型、审计条件等。
分析审计日志:
可以使用 SQL 查询或第三方工具对细粒度审计日志进行分析,以提取有用的信息。例如,分析特定条件下的操作频率、找出异常操作等。
通过分析细粒度审计日志,可以更好地了解数据库活动,发现潜在的安全问题和性能瓶颈,并采取相应的措施进行优化和改进。
4. 细粒度审计实操演示实例

sqlplus / as sysdba
show parameter audit_trail
alter system set audit_trail=db_extended scope=spfile;
startup force
show parameter audit_trail
create user andy identified by andy;
grant create session to andy;
grant select on hr.employees to andy;
alter user hr account unlock identified by hr;
-- 设置 FGA 审计策略
begin
dbms_fga.add_policy(
object_schema => 'HR', object_name => 'EMPLOYEES', policy_name => 'SAL_SELECT_AUDIT',
audit_condition => 'instr(job_id,''_MAN'') > 0', audit_column => 'SALARY');
end;
/
conn andy/andy
select employee_id, first_name, last_name, email from hr.employees where employee_id = 100;
-- 查看审计记录
conn / as sysdba
select to_char(timestamp,'mm/dd/yy hh24:mi:ss') timestamp, object_schema, object_name,
policy_name, statement_type
from dba_fga_audit_trail where db_user = andy';
conn andy/andy
select employee_id, first_name, last_name, salary from hr.employees where employee_id = 100;
-- 查看审计记录
conn / as sysdba
select to_char(timestamp,'mm/dd/yy hh24:mi:ss') timestamp, object_schema, object_name,
policy_name, statement_type
from dba_fga_audit_trail where db_user = 'andy';

第一个查询访问经理信息,但没有访问 SALARY 列。第二个查询与第一个查询相同,但是访问了SALARY 列,因此触发了 FGA 策略,从而在审计跟踪中生成了一行。

  1. 与审计相关的数据字典视图
  2. 在这里插入图片描述
    本篇完结。
    码字不易,宝贵经验分享不易,请各位支持原创,转载注明出处,多多关注作者,家人们的点赞和关注是我笔耕不辍的动力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/455772.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenCV和HALCON

OpenCV和HALCON是两种广泛用于图像处理和计算机视觉的开发库,它们各有优缺点,适合不同的应用场景。以下是两者的比较: 1. 开发背景与定位 OpenCV (Open Source Computer Vision Library): 开源库,最初由Intel开发&…

Gitlab 完全卸载–亲测可行

1、停止gitlab gitlab-ctl stop2.卸载gitlab(注意这里写的是gitlab-ce) rpm -e gitlab-ce 3、查看gitlab进程 ps aux | grep gitlab 4、杀掉第一个进程(就是带有好多.............的进程) 5、删除所有包含gitlab文件 find / …

【计网】深入理解网络通信:端口号、Socket编程及编程接口

目录 1.端口号 1.1.理解源 IP 地址和目的 IP 地址 1.2.认识端口号 1.3.端口号范围划分 1.4理解 "端口号" 和 "进程 ID" 2.socket编程 2.1.理解 socket 2.2.socket编程的概念 2.3. 传输层的典型代表 认识 TCP 协议 认识 UDP 协议 2.3 网络字节序…

基于Multisim的水位测量电路设计与仿真

1.利用LED指示灯显示水位(最低水位、1/4、1/2、3/4、最高水位)。 2.达到最高水位时,自动报警。

探索Python与Excel的无缝对接:xlwings库的神秘面纱

文章目录 探索Python与Excel的无缝对接:xlwings库的神秘面纱1. 背景介绍:为何选择xlwings?2. xlwings是什么?3. 如何安装xlwings?4. 简单的库函数使用方法打开工作簿创建工作簿读取单元格数据写入单元格数据保存并关闭…

消息会话—发送消息自动滚动到最底部

背景 在项目开发中,实现用户友好的输入交互是提升用户体验的关键之一。例如,在消息会话页面中,为了确保用户在发送新消息后页面能自动滚动到最底部,从而始终保持最新消息的可见性,需要实现自动滚动功能。这不仅提升了…

Spring Boot集成:高效论坛网站的构建

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理论坛网站的相关信息成为必然。开发合适的论…

【GISBox使用指南】免费实现影像切片的工具,还支持多种格式服务发布!

一、什么是影像数据? 在地理信息系统中,影像数据是指通过遥感技术、摄影测量或其他成像手段获取的,以数字形式存储的地理空间图像信息。这些数据涵盖了从卫星遥感影像、航空摄影影像到地面摄影影像等多种类型,在GIS中的应用广泛而…

知乎付费投流怎么做?如何投放知乎广告?

知识经济背景下,知乎凭借其高质量的内容和精准的用户群体,成为了品牌营销的新蓝海。作为国内领先的知识分享平台,知乎汇聚了大量高学历、高收入、高消费能力的用户,他们对新知识、新产品有着强烈的好奇心和探索欲,是品…

成功解决pycharm软件中按住Ctrl+点击指定函数却不能跳转到对应库中的源代码

成功解决pycharm软件中按住Ctrl点击指定函数却不能跳转到对应库中的源代码 目录 解决问题 解决方法 解决问题 在pycharm软件中按住Ctrl点击指定函数却不能跳转到对应库中的源代码 解决方法

github pages + hugo 搭建静态博客网站

体验地址 1. 起因, 目的: 其实6年前,我就写过这个。 项目代码 博客地址 最近想改写一下。 github 推荐的主题是 Jekyll, 我当时用的就是这个,感觉很麻烦。尤其是文章命名。 新的主题 hugo 用起来还行。 2.过程: 过程记录&am…

比较相同机器上 redis和mysql分别单独承载的 最大连接数量

在相同的机器上,Redis 和 MySQL 的最大连接数量会受到硬件配置(如 CPU、内存、网络等)、配置参数和应用场景的影响。以下是对 Redis 和 MySQL 在单机环境下最大连接数的比较: Redis 最大连接数量 默认配置: Redis 默…

轻松掌握Win10录屏技巧:四大神器推荐!

在Win10系统中,录屏功能的应用越来越广泛,无论是用于工作演示、在线教学还是游戏分享,一款好用的录屏软件都是必不可少的。今天,我们将推荐四款录屏工具! 福昕录屏大师 直达链接:www.foxitsoftware.cn/RE…

iOS--利用UITableViewDataSourcePrefetching实现平滑如丝的无限滚动

前言: 相信大家在网络不好的时候使用列表分页的App会获得非常不好的体验,由于网络的问题,会有明显的卡顿,就像抖音等App,那么我们是否能使用一些手段来优化这个体验呢?这里可以用到UITableView中另一个协议…

Linux Debian12基于ImageMagick图像处理工具编写shell脚本用于常见图片png、jpg、jpeg、tiff格式批量转webp格式

在Linux系统中,使用ImageMagick可以图片格式转换,其中最常用的是通过命令行工具进行。 ImageMagick是一个非常强大的图像处理工具集,它包含了许多用于图像转换的命令。 一、安装ImageMagick(如果尚未安装)&#xff1…

蓝牙资讯|iOS 18.1 正式版下周推送,AirPods Pro 2耳机将带来助听器功能

苹果公司宣布将在下周发布 iOS 18.1 正式版,同时确认该更新将为 AirPods Pro 2 耳机带来新增“临床级”助听器功能。在启用功能后,用户首先需要使用 AirPods 和 iPhone 进行简短的听力测试,如果检测到听力损失,系统将创建一项“个…

MoCoOp: Mixture of Prompt Learning for Vision Language Models

文章汇总 当前的问题 1)数据集风格变化。 如图1所示,对于一个数据集,单个软提示可能不足以捕获数据中呈现的各种样式。同一数据集中的不同实例可能与不同的提示符兼容。因此,更**自然的做法是使用多个提示来充分表示这些变化**。 2)过拟合…

101. UE5 GAS RPG 实现范围技能奥术爆发表现

在上一篇文章里,我们实现了范围技能的范围指示功能。范围指示是在释放技能前,确认技能的攻击范围,在确认位置后,通过额外按键进行触发技能释放。 在这一篇里,我们将先实现在技能里使用范围指示,并能够播放对…

硬件基础知识补全计划【一】电阻

一、电阻理论 1.1 电流定义 电流:电流的强弱用电流强度来描述,电流强度是单位时间内通过导体某一横截面的电荷量,简称电流,用I表示。1 秒内有 6.241509310^18 个元电荷通过横截面的电流,定义为 1 安 (A)。 电压&…

Redis Search系列 - 第四讲 支持中文

目录 一、支持中文二、自定义中文词典2.1 Redis Search设置FRISOINI参数2.2 friso.ini文件相关配置1)自定义friso UTF-8字典2)修改friso.ini配置文件 三、实测中文分词效果 一、支持中文 Redis Stack 从版本 0.99.0 开始支持中文文档的添加和分词。中文…