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 用户(包括以 sysdbasysoper 身份登录的用户)的操作都会被记录。这些审计记录不会保存在 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选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话
CLUSTERCREATE、ALTER、DROP或TRUNCATE集群
CONTEXTCREATE CONTEXT或DROP CONTEXT
DATABASE LINKCREATE或DROP数据库链接
DIMENSIONCREATE、ALTER或DROP维数
DIRECTORYCREATE或DROP目录
INDEXCREATE、ALTER或DROP索引
MATERIALIZED VIEWCREATE、ALTER或DROP物化视图
NOT EXISTS由于不存在的引用对象而造成的 SQL 语句的失败
PROCEDURECREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
PROFILECREATE、ALTER或DROP配置文件
PUBLIC DATABASE LINKCREATE或DROP公有数据库链接
PUBLIC SYNONYMCREATE或DROP公有同义词
ROLECREATE、ALTER、DROP或SET角色
ROLLBACK SEGMENTCREATE、ALTER或DROP回滚段
SEQUENCECREATE或DROP序列
SESSION登录和退出
SYNONYMCREATE或DROP同义词
SYSTEM AUDIT系统权限的AUDIT或NOAUDIT
SYSTEM GRANTGRANT或REVOKE系统权限和角色
TABLECREATE、DROP或TRUNCATE表
TABLESPACECREATE、ALTER或DROP表空间
TRIGGERCREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
TYPECREATE、ALTER和DROP类型以及类型主体
USERCREATE、ALTER或DROP用户
VIEWCREATE或DROP视图
ALTER SEQUENCE任何ALTER SEQUENCE命令
ALTER TABLE任何ALTER TABLE命令
COMMENT TABLE添加注释到表、视图、物化视图或它们中的任何列
DELETE TABLE删除表或视图中的行
EXECUTE PROCEDURE执行程序包中的过程、函数或任何变量或游标
GRANT DIRECTORYGRANT或REVOKE DIRECTORY对象上的权限
GRANT PROCEDUREGRANT或REVOKE过程、函数或程序包上的权限
GRANT SEQUENCEGRANT或REVOKE序列上的权限
GRANT TABLEGRANT或REVOKE表、视图或物化视图上的权限
GRANT TYPEGRANT或REVOKE TYPE上的权限
INSERT TABLEINSERT INTO表或视图
LOCK TABLE表或视图上的LOCK TABLE命令
SELECT SEQUENCE引用序列的CURRVAL或NEXTVAL的任何命令
SELECT TABLESELECT 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_OPERATIONSTRUE。这种审计记录发送到与操作系统审计记录相同的位置。因此,这个位置是和操作系统相关的。当使用其中一种权限时执行的所有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对语句生效的审计选项

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

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

相关文章

C++面试速通宝典——9

170. 简述数组和指针的区别? ‌‌‌‌  答:数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。指针可以随时指向任意类型的内存块。 1. 修改内容上的区别 char a[] “hello”; a[0] ‘X’; char * p …

毕设分享 基于协同过滤的电影推荐系统

文章目录 0 简介1 设计概要2 课题背景和目的3 协同过滤算法原理3.1 基于用户的协同过滤推荐算法实现原理3.1.1 步骤13.1.2 步骤23.1.3 步骤33.1.4 步骤4 4 系统实现4.1 开发环境4.2 系统功能描述4.3 系统数据流程4.3.1 用户端数据流程4.3.2 管理员端数据流程 4.4 系统功能设计 …

【Android 源码分析】Activity生命周期之onStop-2

忽然有一天,我想要做一件事:去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

信息安全工程师(28)机房安全分析与防护

前言 机房安全分析与防护是一个复杂而细致的过程,涉及到物理安全、环境控制、电力供应、数据安全、设备管理、人员管理以及紧急预案等多个方面。 一、机房安全分析 1. 物理安全威胁 非法入侵:未经授权的人员可能通过门窗、通风口等进入机房,…

【LeetCode】每日一题 2024_10_10 优质数对的总数 I(暴力/哈希)

前言 每天和你一起刷 LeetCode 每日一题~ LeetCode 启动! 题目:优质数对的总数 I 代码与解题思路 简单题先暴力~ 直接对着题意模拟即可,力扣上只要是标着简单标签的题目,不用犹豫,直接对他使用暴力吧! …

亮度(luminance)

亮度(luminance)的单位是坎德拉每平方米(cd/m)。它是用来描述光源或物体表面发出的光在某个方向上的亮度程度。亮度可以简单理解为人眼感知的物体表面在某一特定方向上发出的光强。 亮度的理解: 亮度的概念&#xff…

LabVIEW混合控制器质量检测

随着工业自动化水平的提高,对控制器的精度、稳定性、可靠性要求也在不断上升。特别是在工程机械、自动化生产、风力发电等领域,传统的质量检测方法已无法满足现代工业的高要求。因此,开发一套自动化、精确、可扩展的混合控制器质量检测平台成…

【Linux】常用系统命令

Linux 系统中有许多常用的命令,适用于不同的任务和场景。以下是一些基础且常用的 Linux 命令: 1. **文件和目录操作** - ls:列出目录内容。 - cd:改变当前目录。 - pwd:打印当前工作目录。 - mkdir&#…

Redis 数据类型string(字符串)

目录 1 基本特性 2 主要操作命令 2.1 设置键值 2.1.1 SET key value [EX seconds] [PX milliseconds] [NX|XX] 2.1.2 MSET key value [key value ...] 2.1.3 SETEX key seconds value 2.1.4 PSETEX key milliseconds value 2.1.5 APPEND key value 2.2 获取键值 …

Pikachu-Cross-Site Scripting-xss盲打

xss盲打,不是一种漏洞类型,而是一个攻击场景;在前端、或者在当前页面是看不到攻击结果;而是在后端、在别的页面才看到结果。 登陆后台,查看结果;

Extreme Compression of Large Language Models via Additive Quantization阅读

文章目录 Abstract1. Introduction2. Background & Related Work2.1. LLM量化2.2. 最近邻搜索的量化 3.AQLM:Additive Quantization for LLMs3.1. 概述3.1.0 补充**步骤说明****举例说明** 3.2. 阶段1:代码的波束搜索3.3. 阶段2:码本更新3.4. 阶段3&…

Qt Creator 通过python解释器调用*.py

全是看了大佬们的帖子,结合chatGPT才揉出来。在此做个记录。 安装python在Qt Creator *.pro 文件中配置好环境来个简单的example.py调用代码安装pip添加opencv等库调用包含了opencv库的py代码成功 *.pro配置: INCLUDEPATH C:\Users\xuanm\AppData\Lo…

wordpress在页面中调用另外一个页面的内容

在WordPress中,一个页面调用另一个页面的内容通常不是WordPress设计的直接功能,因为WordPress的页面和内容通常是独立管理的。不过,你可以通过几种方法来实现这一需求: 1. 使用WordPress的短代码(Shortcodes) 你可以创建一个自定…

操作系统中的并发控制——使用条件变量同步

本期主题: 操作系统中的并发控制,条件变量 往期链接: linux设备驱动中的并发操作系统中的多线程问题——原子操作、自旋锁的底层实现操作系统并发控制——使用互斥锁实现同步 操作系统并发控制之条件变量同步 1. 问题描述2. 条件变量的API讲…

Netty的线程模型

Netty的线程模型是其核心特性之一,主要包括以下几个方面: 线程模型概述 作用与重要性:线程模型决定了代码在操作系统、编程语言和框架中的执行方式,对于处理多线程相关的问题至关重要。在网络编程中,合理的线程模型可…

云栖实录 | Hologres3.0全新升级:一体化实时湖仓平台

本文根据2024云栖大会实录整理而成,演讲信息如下: 演讲人: 姜伟华 | 阿里云智能集团资深技术专家、Hologres 负责人 丁 烨 | 阿里云智能集团产品专家、Hologres 产品负责人 活动: 2024 云栖大会 - 商用大数据计算与分析平台论…

Python中的数据可视化:从入门到进阶

数据可视化是数据分析和科学计算中的重要环节,它通过图形化的方式呈现数据,使复杂的统计信息变得直观易懂。Python提供了多种强大的库来支持数据可视化,如Matplotlib、Seaborn、Plotly等。本文将从基础到进阶,详细介绍如何使用这些…

[单master节点k8s部署]31.ceph分布式存储(二)

Ceph配置 Ceph集群通常是一个独立的存储集群,可以部署在 Kubernetes 集群之外。Ceph 提供分布式存储服务,能够通过 RADOS、CephFS、RBD(块存储)、和 RGW(对象存储)等方式与 Kubernetes 集成。即使 Ceph 部…

逼近理论及应用精解【9】

文章目录 全卷积模型定义数学原理与公式架构典型结构应用优点挑战例题 ANNSENet(Squeeze-and-Excitation Networks)定义数学原理与公式计算定理架构例子例题 ResNet(残差网络)定义数学原理与公式计算定理算法过程架构例子例题 参考…

PostgreSQL学习笔记五:数据库基本操作

在 PostgreSQL 中,您可以执行一系列基础操作来管理数据库、备份和恢复数据。以下是一些常用的命令和步骤: 创建数据库 使用以下命令创建新数据库: CREATE DATABASE database_name;您也可以在创建时指定数据库所有者和其他参数:…