Oracle架构之物理存储之审计文件
文章目录
- 1 审计文件(audit files)
- 1.1 定义
- 1.2 查看审计信息
- 1.3 审计相关参数
- 1.4 审计的类型
- 1.4.1 语句审计
- 1.4.2 权限审计
- 1.4.3 对象审计
- 1.4.4 细粒度的审计
 
- 1.5 与审计相关的数据字典视图
 
1 审计文件(audit files)
1.1 定义
审计(Audit)用于监视用户对数据库的操作,审计记录保存在数据字典表中,存储在 system 表空间中的 SYS.AUD$ 表中(可通过视图 dba_audit_trail 查看)或审计文件中(默认位置为 ORACLEBASE/admin/ORACLE_BASE/admin/ORACLEBASE/admin/ORACLE_SID/adump/)。
审计是对特定的用户动作的监控和记录,通常用于:
- 审查可疑的活动
- 监视和收集关于指定数据库活动的数据
不管是否打开数据库的审计功能,以下这些操作会强制被记录:用管理员权限连接 Instance、启动数据库、关闭数据库。
 审计文件的位置由参数 audit_file_dest 决定
1.2 查看审计信息
SQL> show parameter audit_file_dest NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest 	     string	      /u01/app/oracle/admin/orcl/adump查看审计文件:
[oracle@rac1 adump]$ cd /u01/app/oracle/admin/orcl/adump
1.3 审计相关参数
和审计有关的参数主要有以下几个:
show parameter auditNAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest 	     string	      /u01/app/oracle/admin/orcl/adump
audit_sys_operations	 boolean	 FALSE
audit_syslog_level		 string
audit_trail			     string	 DB
- audit_file_dest
 如果AUDIT_TRAIL = OS,则审计记录的文件,存放在audit_file_dest参数指定的目录中。如果指定的路径不存在,会造成数据库无法启动
- Audit_trail
 该参数用于关闭或开启审计功能,取值如下:- None:不做审计。
- DB:启用数据库审计,将审计记录保存在数据库的- sys.AUD$的表中。
- OS:启用数据库审计,将审计记录保存在操作系统文件中,文件位置由- audit_file_dest参数指定。
 
- Audit_sys_operations
 指定是否启用对SYS用户的审计,默认为 false。当设置为 true 时,所有 sys 用户(包括以sysdba、sysoper身份登录的用户)的操作都会被记录。这些审计记录不会保存在aud$表中,而是被保存到操作系统文件中。当设置为 false 时,只记录 sys 用户的连接、数据库的启动和停止。
1.4 审计的类型
1.4.1 语句审计
对某种类型的SQL语句审计,不指定结构或对象如:audittable会审计数据库中所有的create table、drop table、truncate table语句,alter session by scott会审计scott用户所有的数据库连接;
打开关闭audit 命令的格式如下所示:
AUDIT sql_statement_clause 
BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL; 
下表是可以审计的语句类型:
| 语句选项 | SQL操作 | 
|---|---|
| ALTER SYSTEM | 所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话 | 
| CLUSTER | CREATE、ALTER、DROP或TRUNCATE集群 | 
| CONTEXT | CREATE CONTEXT或DROP CONTEXT | 
| DATABASE LINK | CREATE或DROP数据库链接 | 
| DIMENSION | CREATE、ALTER或DROP维数 | 
| DIRECTORY | CREATE或DROP目录 | 
| INDEX | CREATE、ALTER或DROP索引 | 
| MATERIALIZED VIEW | CREATE、ALTER或DROP物化视图 | 
| NOT EXISTS | 由于不存在的引用对象而造成的 SQL 语句的失败 | 
| PROCEDURE | CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE | 
| PROFILE | CREATE、ALTER或DROP配置文件 | 
| PUBLIC DATABASE LINK | CREATE或DROP公有数据库链接 | 
| PUBLIC SYNONYM | CREATE或DROP公有同义词 | 
| ROLE | CREATE、ALTER、DROP或SET角色 | 
| ROLLBACK SEGMENT | CREATE、ALTER或DROP回滚段 | 
| SEQUENCE | CREATE或DROP序列 | 
| SESSION | 登录和退出 | 
| SYNONYM | CREATE或DROP同义词 | 
| SYSTEM AUDIT | 系统权限的AUDIT或NOAUDIT | 
| SYSTEM GRANT | GRANT或REVOKE系统权限和角色 | 
| TABLE | CREATE、DROP或TRUNCATE表 | 
| TABLESPACE | CREATE、ALTER或DROP表空间 | 
| TRIGGER | CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE | 
| TYPE | CREATE、ALTER和DROP类型以及类型主体 | 
| USER | CREATE、ALTER或DROP用户 | 
| VIEW | CREATE或DROP视图 | 
| ALTER SEQUENCE | 任何ALTER SEQUENCE命令 | 
| ALTER TABLE | 任何ALTER TABLE命令 | 
| COMMENT TABLE | 添加注释到表、视图、物化视图或它们中的任何列 | 
| DELETE TABLE | 删除表或视图中的行 | 
| EXECUTE PROCEDURE | 执行程序包中的过程、函数或任何变量或游标 | 
| GRANT DIRECTORY | GRANT或REVOKE DIRECTORY对象上的权限 | 
| GRANT PROCEDURE | GRANT或REVOKE过程、函数或程序包上的权限 | 
| GRANT SEQUENCE | GRANT或REVOKE序列上的权限 | 
| GRANT TABLE | GRANT或REVOKE表、视图或物化视图上的权限 | 
| GRANT TYPE | GRANT或REVOKE TYPE上的权限 | 
| INSERT TABLE | INSERT INTO表或视图 | 
| LOCK TABLE | 表或视图上的LOCK TABLE命令 | 
| SELECT SEQUENCE | 引用序列的CURRVAL或NEXTVAL的任何命令 | 
| SELECT TABLE | SELECT FROM 表、视图或物化视图 | 
| UPDATE TABLE | 在表或视图上执行UPDATE | 
注意:
 从Oracle Database 11g开始,只有在初始参数AUDIT_TRAIL被设置为DB_EXTENDED时,才填充DBA_AUDIT_TRAIL中的列SQL_TEXT和SQL_BIND。默认情况下,AUDIT_TRAIL的值是DB。
 为了关闭HR.JOBS表上KSHELTON的审计,可以使用noaudit命令,如下所示:
SQL>` noaudit index by kshelton; Noaudit succeeded.
也可能希望按常规方式审计成功的和不成功的登录,这需要两个audit命令:
SQL> audit session whenever successful; Audit succeeded. 
SQL> audit session whenever not successful; Audit succeeded. 
1.4.2 权限审计
当用户使用了该权限则被审计,如:CREATE TABLE或ALTER INDEX和语句审计一样,权限审计可以指定一个或多个特定的用户作为审计的目标;
打开关闭权限审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clause中,而不是在语句中,指定系统权限。
 例如,可能希望将ALTER TABLESPACE权限授予所有的DBA,但希望在发生这种情况时生成审计记录。启用对这种权限的审计的命令看起来类似于语句审计:
SQL> audit alter tablespace by access whenever successful; 
Audit succeeded.
每次成功使用 ALTER TABLESPACE权限时,都会将一行内容添加到SYS.AUD$。
使用SYSDBA和SYSOPER权限或者以SYS用户连接到数据库的系统管理员可以利用特殊的审计。为了启用这种额外的审计级别,可以设置初始参数AUDIT_SYS_OPERATIONS为TRUE。这种审计记录发送到与操作系统审计记录相同的位置。因此,这个位置是和操作系统相关的。当使用其中一种权限时执行的所有SQL语句,以及作为用户SYS执行的任何SQL语句,都会发送到操作系统审计位置。
1.4.3 对象审计
审计特定模式对象上运行的特定语句,如:EMP表上的UPDATE语句模式对象审计应用于数据库中的所有用户;
打开关闭操作
 对象审计的访问看起来类似于语句审计和权限审计:
AUDIT schema_object_clause BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL; 
schema_object_clause 指定对象访问的类型以及访问的对象。可以审计特定对象上14种不同的操作类型,下表中列出了这些操作。
| 对象选项 | 说明 | 
|---|---|
| ALTER | 改变表、序列或物化视图 | 
| AUDIT | 审计任何对象上的命令 | 
| COMMENT | 添加注释到表、视图或物化视图 | 
| DELETE | 从表、视图或物化视图中删除行 | 
| EXECUTE | 执行过程、函数或程序包 | 
| FLASHBACK | 执行表或视图上的闪回操作 | 
| GRANT | 授予任何类型对象上的权限 | 
| INDEX | 创建表或物化视图上的索引 | 
| INSERT | 将行插入表、视图或物化视图中 | 
| LOCK | 锁定表、视图或物化视图 | 
| READ | 对DIRECTORY对象的内容执行读操作 | 
| RENAME | 重命名表、视图或过程 | 
| SELECT | 从表、视图、序列或物化视图中选择行 | 
| UPDATE | 更新表、视图或物化视图 | 
1.4.4 细粒度的审计
根据访问对象的内容来审计表访问和权限使用程序包DBMS_FGA来建立特定表上的策略;
从Oracle9i开始,通过引入细粒度的对象审计,或称为FGA,审计变得更为关注某个方面,并且更为精确。由称为DBMS_FGA的PL/SQL程序包实现FGA。
使用标准的审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列。通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量。
程序包DBMS_FGA具有4个过程:
- ADD_POLICY:添加使用谓词和审计列的审计策略
- DROP_POLICY:删除审计策略
- DISABLE_POLICY:禁用审计策略,但保留与表或视图关联的策略
- ENABLE_POLICY:启用策略
1.5 与审计相关的数据字典视图
下表包含了与审计相关的数据字典视图。
| 数据字典视图 | 说 明 | 
|---|---|
| AUDIT_ACTIONS | 包含审计跟踪动作类型代码的描述,例如INSERT、DROP VIEW、DELETE、LOGON和LOCK | 
| all_def_audit_opts | 查看数据库用 on default 子句设置了哪些默认对象审计 | 
| DBA_AUDIT_OBJECT | 与数据库中对象相关的审计跟踪记录 | 
| DBA_AUDIT_POLICIES | 数据库中的细粒度审计策略 | 
| DBA_AUDIT_SESSION | 与CONNECT和DISCONNECT相关的所有审计跟踪记录 | 
| DBA_AUDIT_STATEMENT | 与GRANT、REVOKE、AUDIT、NOAUDIT和ALTER SYSTEM命令相关的审计跟踪条目 | 
| DBA_AUDIT_TRAIL | 包含标准审计跟踪条目。USER_AUDIT_TRAILUSER_TRAIL_AUDIT只包含已连接用户的审计行 | 
| DBA_FGA_AUDIT_TRAIL | 细粒度审计策略的审计跟踪条目 | 
| DBA_COMMON_AUDIT_TRAIL | 将标准的审计行和细粒度的审计行结合在一个视图中 | 
| DBA_OBJ_AUDIT_OPTS | 对数据库对象生效的审计选项 | 
| DBA_PRIV_AUDIT_OPTS | 对系统权限生效的审计选项 | 
| DBA_STMT_AUDIT_OPTS | 对语句生效的审计选项 | 
相关文章:
Oracle架构之物理存储之审计文件
文章目录 1 审计文件(audit files)1.1 定义1.2 查看审计信息1.3 审计相关参数1.4 审计的类型1.4.1 语句审计1.4.2 权限审计1.4.3 对象审计1.4.4 细粒度的审计 1.5 与审计相关的数据字典视图 1 审计文件(audit files) 1.1 定义 审…...
 
DAY6 面向对象
概念 对象是一种特殊的数据结构,可以用来记住一个事物的数据,从而代表该事物,可以理解为一个模板表,总而言之万物皆对象,比如一个人、一个物体等。 怎么创建对象 先设计对象的模板,也就是对象的设计图&a…...
 
代码随想录 (三)—— 哈希表部分刷题
当我们想使用哈希法来解决问题的时候,我们一般会选择如下三种数据结构。 数组set (集合)map(映射) 在java中有就是,hashmap, LinkedHashMap, TreeMap ,HashTable 等 总结一下,当我们遇到了要快速判断一个…...
搜维尔科技:使用 SenseGlove Nova 2 远程操作机械手,实现了对鸡蛋的精细操控
使用SenseGlove Nova 2远程操作机械手,实现了对鸡蛋的精细操控 搜维尔科技:使用 SenseGlove Nova 2远程操作机械手,实现了对鸡蛋的精细操控...
Mybatis是什么?优缺点分别有哪些?
MyBatis 是一个开源的持久层框架,它提供了将 SQL 语句和 Java 对象进行映射的功能,使得开发者可以通过简单的配置来实现数据库操作,减少了手写 SQL 的工作量。 MyBatis 的优点: 1. 简单易用:MyBatis 采用了简单的配置…...
 
opencascade鼠标拖拽框选功能
1.首先在OccView中添加用于显示矩形框的类 //! rubber rectangle for the mouse selection.Handle(AIS_RubberBand) mRectBand; 2.设置框选的属性 mRectBand new AIS_RubberBand(); //设置属性 mRectBand->SetLineType(Aspect_TOL_SOLID); //设置变宽线型为实线 mRe…...
docker 部署 postgres
这里以postgres:12.6为例: 1. 拉取postgres镜像 docker pull postgres:12.62. 创建挂载目录 mkdir -p /mydata/docker/postgres-1/data3. 启动postgres容器 docker run --name postgres-12.6 \-e POSTGRES_PASSWORD123456 \-p 5432:5432 \-v /mydata/docker/pos…...
 
【重学 MySQL】五十、添加数据
【重学 MySQL】五十、添加数据 使用INSERT INTO语句添加数据基本语法示例插入多行数据注意事项 使用LOAD DATA INFILE语句批量添加数据其他插入数据的方式注意事项 在MySQL中,添加数据是数据库操作中的基本操作之一。 使用INSERT INTO语句添加数据 使用 INSERT IN…...
 
硬货!Zabbix监控AIX系统服务案例
本文将介绍如何使用Zabbix自定义键值脚本方式监控AIX 系统IBM CICS中间件进程服务以及日志文件等信息。 Customer Information Control System (CICS) Transaction Server 是 IBM 针对 z/OS 的多用途事务处理软件。这是一个功能强大的应用程序服务器,用于大型和小型…...
 
python常见面试题
1、什么是Python?为什么它会如此流行? Python是一种解释的、高级的、通用的编程语言。 Python的设计理念是通过使用必要的空格与空行,增强代码的可读性。 它之所以受欢迎,就是因为它具有简单易用的语法。 ▍2、为什么Python执…...
 
低功耗接地故障控制器D4145
一、概述 D4145 是一个接地故障断路器。它能够检测到不良的接地条件,譬如装置接触到水时,它会在有害或致命的电击发生之前将电路断开。 D4145能检测并保护从火线到地线,从零线到地线的故障.这种简单而传统的电路设计能够确保其应用自如和长时间的可靠性。…...
SpringMVC的处理流程
深入理解 SpringMVC 的请求处理流程:从用户请求到视图渲染的八个步骤 SpringMVC 是当前流行的基于 Java 的 Web 框架之一,它通过前端控制器 DispatcherServlet 将用户的 HTTP 请求统一接收并处理,随后将请求分发到具体的处理器(通…...
 
SpringBoot统一日志框架
在项目开发中,日志十分的重要,不管是记录运行情况还是定位线上问题,都离不开对日志的分析。 1.日志框架的选择 市面上常见的日志框架有很多,它们可以被分为两类:日志门面(日志抽象层)和日志实…...
 
vue-live2d看板娘集成方案设计使用教程
文章目录 前言v1.1.x版本:vue集成看板娘(暂不使用,在v1.2.x已替换)集成看板娘实现看板娘拖拽效果方案资源备份存储 当前最新调研:2024.10.2开源方案1:OhMyLive2D(推荐)开源方案2&…...
springboot接口如何支持400并发量
Spring Boot 本身并不直接限制并发量,但是你可以通过配置来优化应用以处理更多的并发请求。以下是一些关键配置和优化技巧: 服务器连接配置(application.properties 或 application.yml): # 服务器连接数配置 server.tomcat.max…...
Verilog中的: `+:` 和 `-:`
: 和 -: 标准解释 logic [15:0] down_vect; logic [0:15] up_vect;down_vect[lsb_base_expr : width_expr] up_vect [msb_base_expr : width_expr] down_vect[msb_base_expr -: width_expr] up_vect [lsb_base_expr -: width_expr]举例 reg [31:0] dword; reg [7:0] byte0…...
为何四次挥手要等待2MSL
参考文章:https://zhuanlan.zhihu.com/p/204988465 A主动关闭连接一方,B是被动关闭一方 我们假设A发送了ACK报文后过了一段时间t之后B才收到该ACK,则有 0 < t < MSL。因为A并不知道它发送出去的ACK要多久对方才能收到,所以…...
 
C++——模拟实现list
1.初步实现结点和链表 namespace jxy {template<class T>struct list_node{T _data;list_node<T>* _prev;list_node<T>* _next;list_node(const T& x T()):_data(x),_prev(nullptr),_next(nullptr){}};template<class T>class list//list的框架本…...
React中useState、useReducer与useRef
useState 详解 useState 是 React 函数组件中用于管理组件状态的 Hook。它提供了一种简洁的方式来在函数组件中添加状态,并在状态改变时触发组件重新渲染。以下是 useState 的详细解析: 一、基本概念 useState 是一个函数,它接收一个初始状…...
 
ReGCL Rethinking Message Passingin Graph Contrastive Learning
AAAI24 推荐指数: #paper/⭐ 总体说:利用梯度对对比正负样本加权的。个人觉得和与正负样本加权没有区别,读完之后不想做笔记了。...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
 
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
 
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
 
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
 
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
 
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
