详解Oracle审计(二)

news2024/10/18 5:56:10

题记:

本文将承接上篇详细介绍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.coloradmin.cn/o/2217574.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从0开始深度学习(11)——多层感知机

前面介绍了线性神经网络,但是线性模型是有可能出错的,因为线性模型意味着是单调假设,但是现实中往往很复杂。例如,我们想要根据体温预测死亡率。 对体温高于37摄氏度的人来说,温度越高风险越大。 然而,对体…

LeetCode 3200.三角形的最大高度:枚举

【LetMeFly】3200.三角形的最大高度:枚举 力扣题目链接:https://leetcode.cn/problems/maximum-height-of-a-triangle/ 给你两个整数 red 和 blue,分别表示红色球和蓝色球的数量。你需要使用这些球来组成一个三角形,满足第 1 行…

远距离长航时低成本泡沫垂直起降固定翼无人机技术详解

关于远距离长航时低成本泡沫垂直起降固定翼无人机技术,以下是一个详细的技术解析: 一、技术概述 远距离长航时低成本泡沫垂直起降固定翼无人机是一种结合了垂直起降技术和固定翼设计优势的无人机系统。该技术通过采用泡沫材料制造无人机机体&#xff0…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中,完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发,还是通过uni-app、Flutter等跨平台工具生成的IPA文件,上传到App Store的流程都是类似的。苹果…

车易泊车位管理相机 —— 智能管理,停车无忧

在现代城市生活中,停车问题一直是困扰着车主和城市管理者的难题。车位难找、停车管理混乱等问题不仅浪费了人们的时间和精力,也影响了城市的交通秩序和形象。而车易泊车位管理相机的出现,为解决这些问题提供了一种高效、智能的解决方案。 一、…

DataWhale10月动手实践——Bot应用开发task03学习笔记

一、工作流 1. 工作流的定义 工作流由多个节点组成,这些节点可以包括大语言模型(LLM)、代码模块、逻辑判断工具、插件等。每个节点需要不同的信息来执行其功能。工作流的核心含义是:对工作流程及其操作步骤之间的业务规则进行抽…

无人机之位置信息计算篇

一、主要导航技术 卫星导航 全球定位系统(GPS):无人机上装有专门的接收器,用于捕获GPS系统发射的无线电信号。当无人机接收到来自至少四颗卫星的信号时,通过计算信号抵达时间的微小差异,即可运用三角定位…

SQL语句查询

SQL语句查询 查询产生一个虚拟表 看到的是表形式显示的结果&#xff0c;但结果并不真正存储 每次执行查询只是从数据表中提取数据&#xff0c;并按照表的形式显示出来 查询语法 SELECT <列名> FROM <表名> [WHERE <查询条件表达式>] SELECT …

插齿刀的齿数选择不同会有什么影响?

插齿——作为一种常用的制齿手段&#xff0c;经常被用到有台肩的齿轮以及空刀槽很窄的双联或多联齿轮&#xff0c;以及各种内齿加工中。虽然强力车齿在现在应用的越来越多了&#xff0c;但是插齿这种加工应该在相当长的一段时间内还是会继续服役的。中这期咱们聊聊插齿刀齿数对…

显示指定目录下所有.c文件中出现指定字符串的行号 Linux环境 C语言实现

问题&#xff1a;显示指定目录及其后代目录下所有.c文件中出现指定字符串的行号 算法&#xff1a; 分为两个文件编写 &#xff1a; display_string_lineno.c &#xff0c; Read_line.c 分为三个函数编写 &#xff1a; void display_lineno(char* dirname,const char *pstr)…

sankey.top - 桑基图/桑吉图/流程图/能量流/物料流/能量分析

sankey.top 桑基图大师(SankeyMaster)是您创建复杂桑基图表的首选工具。轻松输入数据并创建桑基图表&#xff0c;准确揭示复杂的数据关系&#xff01; 应用 https://apps.apple.com/cn/app/sankeymaster-sankey-diagram/id6474908221 在线编辑器 https://studio.sankeymaste…

解决ultralytics中的YOLOv8在执行task.py文件添加模块操作出现的KeyError报错

报错详情&#xff1a; 在ultralytics项目文件夹内运行/home/xxx/ultralytics/train.py进行单GPU训练的时候训练可以正常进行 from ultralytics import YOLO# Load a model model YOLO("/home/xxx/ultralytics/ultralytics/cfg/models/v8/yolov8s-FASFF.yaml") # …

Github学生包的JetBrains认证过期/idea认证过期如何解决?

官网通过Github更新状态即可JetBrains Account 注意要到邮箱走流程

自动化测试与敏捷开发的重要性

敏捷开发与自动化测试是现代软件开发中两个至关重要的实践&#xff0c;它们相互补充&#xff0c;共同促进了软件质量和开发效率的提升。 敏捷开发的重要性 敏捷开发是一种以人为核心、迭代、循序渐进的软件开发方法。它强调以下几个核心价值观和原则&#xff1a; 个体和交互…

力扣 简单 83.删除排序链表中的重复元素

文章目录 题目介绍题解 题目介绍 题解 法一&#xff1a;带dummy node class Solution {public ListNode deleteDuplicates(ListNode head) {//根据提示&#xff0c;val的值在-100~100&#xff0c;如果括号里面不填则默认dummy.val0&#xff0c;可能会和某些测试用例的val一样…

第三季度中国游戏市场收入创历史新高;京东物流与淘宝天猫达成合作;YouTube 上线“用相机拍摄”标签....|网易数智日报

第三季度中国游戏市场收入917.66亿&#xff0c;创历史新高 中国音数协游戏工委今日发布了最新的 2024 年第三季度中国游戏产业季度报告。 数据显示&#xff0c;2024 年第三季度中国游戏市场收入 917.66 亿元&#xff0c;环比增长 22.96%&#xff0c;同比增长 8.95%。 中国音…

完全指南:如何高效进行业务应用开发?

❤️ 温馨提醒 本篇文章较长&#xff0c;你可以根据目录选择最感兴趣的部分阅读。当然&#xff0c;我相信如果你全部阅读完&#xff0c;一定会有不少的收获。 引言 企业对业务应用开发的需求正在日益增长。 据 Gartner 统计&#xff0c;全球企业软件市场预计将在 2025 年达到…

数据结构——哈夫曼树及其应用(哈夫曼编码)

判断树&#xff1a;用来描述分类过程的二叉树 哈夫曼树&#xff08;最优二叉树&#xff09;的基本概念 路径&#xff1a;从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度&#xff1a;两结点间路径上的分支数。 结点的路径长度计算&#xff1…

【jQuery】jQuery 处理 Ajax 以及解决跨域问题的方式

文章目录 HTTP原生创建 AjaxjQuery 处理 Ajax$.ajax()$().load()$.get()$.post() 跨域CORSJSONPiframeweb sockets HTTP 超文本传输协议&#xff08;HTTP&#xff0c;HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。设计 HTTP 最初的目的是为了提供一种发…

Redis中String类型数据扩容原理分析

大家好&#xff0c;我是 V 哥。在 Java 中&#xff0c;我们有动态数组ArrayList&#xff0c;当插入新元素空间不足时&#xff0c;会进行扩容&#xff0c;好奇 Redis 中的 String 类型&#xff0c;C 语言又是怎样的实现策略&#xff0c;带着疑问&#xff0c;咱们来了解一下。 最…