[Oracle19C 数据库管理] 配置数据库审计
以下内容未经整理
占位
强制审计:无法关闭此审计,比如记录数据库的开启和关闭。
标准审计:
基于值得审计:创建触发器,基于值进行记录。Trigger占用资源多
细粒度审计:加一些where条件,针对触发where条件的情况进行审计。
统一审计Unified Auditing
启用统一审计之后,会产生两个角色:
- AUDIT_ADMIN:
- 创建审计策略
- 执行AUDIT和NOAUDIT语句
- 查看审计数据
- 管理审计线索audit trail(数据表 in AUDSYS schema)
- AUDIT_VIEWER:
- 查看和分析数据
- 执行DBMS_AUDIT_UTIL PL/SQL软件包。

Unified Auditing是True的时候,统一审计的功能才是开启的。
select value from v$option where parameter = 'Unified Auditing';
VALUE
----------------------------------------------------------------
FALSE
启用统一审计
- 停止lsrnctl监听
[oracle@ol7-19c ~]$ lsnrctl stop
LSNRCTL for Linux: Version 19.0.0.0.0 - Production on 05-FEB-2023 10:38:19
Copyright (c) 1991, 2019, Oracle. All rights reserved.
Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=ol7-19c.localdomain)(PORT=1521)))
The command completed successfully
- 停止数据库
[oracle@ol7-19c ~]$ sqlplus / as sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 5 10:38:30 2023
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL> exit
- 验证后台进程已经停止。
[oracle@ol7-19c ~]$ pgrep -lf smon
[oracle@ol7-19c ~]$
进入$ORACLE_HOME/rdbms/lib,重新编译ins_rdbms.mk(必须在Oracle数据库关闭时操作)
[oracle@ol7-19c ~]$ cd $ORACLE_HOME/rdbms/lib
[oracle@ol7-19c lib]$ make -f ins_rdbms.mk uniaud_on ioracle启用监听,开启数据库。
[oracle@ol7-19c lib]$ lsnrctl start
The command completed successfully
[oracle@ol7-19c lib]$ sqlplus / as sysdba
SQL> startup
ORACLE instance started.
Total System Global Area 1660941720 bytes
Fixed Size 9135512 bytes
Variable Size 989855744 bytes
Database Buffers 654311424 bytes
Redo Buffers 7639040 bytes
Database mounted.
Database opened.
- 查看v$option里面的Unified Auditing参数,此时已经是True。
SQL> select value from v$option where parameter = 'Unified Auditing';
VALUE
----------------------------------------------------------------
TRUE
创建Unified Audit Policy
CREATE AUDIT POLICY 审计策略名
ACTIONS 操作名 ON schema对象 ONLY TOPLEVEL
EVALUATE PER SESSION | PER STATEMENT | PER INSTANCE
ONLY TOPLEVEL不记录非直接的操作。比如用户update数据库的时候被记录,而通过存储过程更新数据则不记录。这样可以减少审计日志。
PER SESSION: 一个会话只记录一次出发的审计。
PER STATEMENT: 每次执行语句触发审计都会记录。审计线索占空间最多。
PER INSTANCE: 不过触发了多少次审计操作,实例只会记录一次。审计线索占空间最少。
发生对应的操作,则会写入到审计线索当中。
审计的范围
系统特权
CREATE AUDIT POLICY audit_syspriv_pol1
PRIVILEGES SELECT ANY TABLE, CREATE TABLE动作
CREATE AUDIT POLICY audit_actions_pol1
ACTIONS AUDIT, ALTER TRIGGER角色
CREATE AUDIT POLICY audit_role_pol1
ROLES DBA, CONNECT系统特权、动作、角色的组合(或的关系)
CREATE AUDIT POLICY audit_mixed_pol1
PRIVILEGES DROP ANY TABLE
ACTIONS CREATE TABLE, DROP TABLE, TRUNCATE TABLE
ROLE hrmanager针对于对象
CREATE AUDIT POLICY audit_objpriv_pol1
ACTIONS SELECT, UPDATE ON hr.employees;记录所有操作
CREATE AUDIT POLICY audit_objpriv_pol1
ACTIONS ALL针对存储过程
CREATE AUDIT POLICY audit_objpriv_pol2
ACTIONS EXECUTE, GRANT ON hr.raise_salary_proc
启用和禁用审计策略
为所有用户启用审计
AUDIT POLICY 审计名;
为某些用户启用审计
AUDIT POLICY 审计名 BY 用户1,用户2;
为所有用户启用审计并排除一些用户
AUDIT POLICY 审计名 EXCEPT 用户1,用户2;
对于操作成功和失败的时候开展审计
AUDIT POLICY 审计名 WHENEVER SUCCESSFUL;
AUDIT POLICY 审计名 WHENEVER NOT SUCCESSFUL;
禁用审计
NOAUDIT POLICY
CDB和PDB级别的审计

CDB$ROOT创建的Audit Policy应用到所有的PDB(Common).
APP$ROOT创建的Audit Policy应用到APP容器下的所有PDB(Common).
PDB创建的Audit Policy应用到这个PDB(Local)
修改审计策略
ALTER AUDIT POLICY命令用来修改审计策略。
ALTER AUDIT POLICY 审计名
ADD ACTIONS select ON hr.job_history
实作: 创建审计用户
创建audit_admin用户
SQL> create user c##audmgr container=all;
User created.
SQL> alter user c##audmgr identified by oracle account unlock;
User altered.
SQL> grant connect, audit_admin to c##audmgr container=all;
Grant succeeded.
创建audit_viewer用户
SQL> create user c##audvwr container=all;
User created.
SQL> alter user c##audvwr identified by oracle account unlock;
User altered.
SQL> grant connect, audit_viewer to c##audvwr;
Grant succeeded.
实作: 创建审计Policy
- 使用上一个实作创建的c##audmgr登录pdb1
[oracle@ol7-19c dbhome_1]$ sqlplus c##audmgr/oracle@pdb1;
SQL*Plus: Release 19.0.0.0.0 - Production on Sun Feb 5 11:20:07 2023
Version 19.3.0.0.0
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SQL>
- 创建一个audit policy,对于HR.Jobs表的任何更新,都会被审计记录。
SQL> create audit policy audit_jobs_update
2 actions update on hr.jobs;
Audit policy created.
- 启用这个policy
SQL> audit policy audit_jobs_update;
Audit succeeded.
- 查询audit_unified_policies可以看得到创建的audit policy以及它的配置。
SQL> select policy_name, audit_option, object_name
2 from audit_unified_policies
3 where policy_name='AUDIT_JOBS_UPDATE';
POLICY_NAME AUDIT_OPTION OBJECT_NAME
-------------------- -------------------- --------------------
AUDIT_JOBS_UPDATE UPDATE JOBS
- 使用其他用户,对hr.jobs表进行更新操作。
SQL> update hr.jobs
2 set max_salary=10000
3 where job_id='ST_MAN';
1 row updated.
- 切换到c##audmgr用户,查询unified_audit_policies。
SQL> col dbusername for a10
SQL> col action_name for a10
SQL> col "date" for a20
SQL> col unified_audit_policies for a22
SQL> select unified_audit_policies, dbusername, action_name,
2 to_char(event_timestamp, 'DD-MON-YY HH24:MI') "DATE"
3 from unified_audit_trail
4 where dbusername in ('PDBADMIN')
5 and action_name not in ('LOGON', 'LOGOFF')
6 order by 4;
UNIFIED_AUDIT_POLICIES DBUSERNAME ACTION_NAM DATE
---------------------- ---------- ---------- ------------------
AUDIT_JOBS_UPDATE PDBADMIN UPDATE 05-FEB-23 11:37
AUDIT_JOBS_UPDATE PDBADMIN UPDATE 05-FEB-23 11:37
基于值的审计

细粒度审计

审计所有的行,
条件出错,报ORA-28112
[Oracle19C 数据库管理] 配置数据库审计的更多相关文章
- 机器数据的价值 - Web 访问日志和数据库审计日志
计算机数据 大量的数据流,不断增长的来源,蕴含着巨大的价值 在 Splunk,我们大量谈及计算机数据.这些数据是指在数据中心.“物联网”和互联设备世界中运行的所有系统产生的数据.其中包括支撑组织的应用 ...
- mongo 3.4分片集群系列之六:详解配置数据库
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- oracle数据库审计
Oracle使用大量不同的审计方法来监控使用何种权限,以及访问哪些对象.审计不会防止使用这些权限,但可以提供有用的信息,用于揭示权限的滥用和误用. 下表中总结了Oracle数据库中不同类型的审计. 审 ...
- 数据库审计 DBAudit - Yearning 最新版
数据库审计 DBAudit 2019/09/26 Chenxin 数据库审计 基本概念 数据库审计(简称DBAudit)能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库 ...
- EF里的默认映射以及如何使用Data Annotations和Fluent API配置数据库的映射
I.EF里的默认映射 上篇文章演示的通过定义实体类就可以自动生成数据库,并且EF自动设置了数据库的主键.外键以及表名和字段的类型等,这就是EF里的默认映射.具体分为: 数据库映射:Code First ...
- 在SQL2008配置数据库镜像1418错误的处理
在SQL2008配置数据库镜像错误一般都由以下原因造成 1.主体.镜像服务器SQL SERVER选择本账号切保持一致 2.在数据库镜像配置向导中的“服务账号”选项中请选择需要同步数据库的登陆名,例如数 ...
- Android通过xml文件配置数据库
之前一段时间自己封装了两个数据库,一个是ORM数据库,另一个是事件流数据库,项目相应的地址如下: ORM数据库:https://github.com/wenjiang/SimpleAndroidORM ...
- SQL Server代理(4/12):配置数据库邮件
SQL Server代理是所有实时数据库的核心.代理有很多不明显的用法,因此系统的知识,对于开发人员还是DBA都是有用的.这系列文章会通俗介绍它的很多用法. 在以前的文章里我们看到,SQL Serve ...
- 新建Oracle数据库时,提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序
新建一个oracle数据库时,当提示使用database control配置数据库时,要求在当前oracle主目录中配置监听程序等字样的时候,问题是那个监听的服务没有启动,解决方法如下: 打开cmd命 ...
- SQL Server 2012 配置数据库邮件
发送和接受邮箱不能用QQ邮箱,可以用163网易邮箱,同时要求要发送邮件的计算机能上外网 查看163网易邮箱的发送和接收服务器的方法如下 在数据库的管理中,右击数据库邮件,选择配置数据库邮件 出现对话框 ...
随机推荐
- echart4和echarts5同时引入方法
main.js import Vue from 'vue' 同时引入如下: // 引入echart4,echarts4版本放本地, import echarts4 from '../static/js ...
- Switchquery:移动端秒级配置触达平台
作者:京东零售 胡本奎 一 背景 随着移动互联网的快速发展,为满足各类用户及人群的体验需求,移动端的开发者们开发了丰富多彩的体验与功能.同时对于快速控制各类功能的切换.灰度,降级等能力的要求也越来越高 ...
- LeetCode-838 推多米诺
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/push-dominoes 题目描述 n 张多米诺骨牌排成一行,将每张多米诺骨牌垂直竖立.在开始时 ...
- gmgo国密算法库
gmgo国密算法库 一.背景介绍 基于go1.17.5实现的国密算法库,包括: sm2 : 基于emmansun/gmsm的sm2部分实现部分扩展. sm3 : 基于emmansun/gmsm的sm3 ...
- Visual Studio Code C / C++ 语言环境配置的历程
前言 从大一开始学习c++用的dev-c++,后来看到老师用的是vs code,实在是馋它的颜值便去下了vs 2017.至于为什么下载vs 2017呢?是因为下载的时候我以为他们是一样的,便下了v ...
- PO/PI
典型集成场景 PI总体架构 消息映射 General Concepts(通用概念) 映射编辑器 元素 分配源/目标消息类型 有3种消息类型可分配给消息映射 1.使用已经存在于IR中的对象(比如消息类型 ...
- 蓝牙mesh组网实践(厂商透传模型介绍)
目录 CH582的官方EVT中,除了代理节点例程和天猫精灵例程外都提供了厂商定义的透传模型. 模型位于蓝牙mesh网络协议中的最上层,负责标准化用户应用场景的实例,比如说开关模型.亮度模型.风速模型. ...
- netmiko批量操作网络设备_pandas版
from concurrent.futures import ThreadPoolExecutor import netmiko import os from threading import Loc ...
- python中下拉框选择
如选择省区城市 provice = driver.find_element_by_id('****') #先给定位的元素付个变量 select(prvice).select_by_bisible_te ...
- word生成产生错误的原因
技术背景 很多时候我们网站或者系统需要提供一些word文件,例如证明.docx或者订单.docx等文件供用户下载打印等. 用Java操作word文档,毫无疑问,当下最流行apache poi,对于po ...