[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网易邮箱的发送和接收服务器的方法如下 在数据库的管理中,右击数据库邮件,选择配置数据库邮件 出现对话框 ...
随机推荐
- label勾选问题,checkbox
<input id="overck_21" data-role="none" name="check" class="reg ...
- cximage菜单(Mirror)
// ID_CXIMAGE_MIRROR 文件:CxImage\demo\demoDoc.cpp 菜单项:cximage->Mirror ON_COMMAND(ID_CXIMAGE_MIRROR ...
- containerd.service containerd-1.6.8-linux-amd64.tar.gz cni-plugins-linux-amd64-v1.1.1.tgz 标准文件下载
配置K8S时 可能会用到#systemcd来管理containerd,这https://raw.githubusercontent.com/containerd/containerd/main/con ...
- vue框架4
购物车案例 v-model进阶 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...
- 档案系统区块链集成 leveldb.net集成
leveldb.net工作原理:leveldb为键值对数据库,具有增加,删除,查询功能,利用加密链式结构存储和查询数据. 区块(block):在区块链技术中,数据以电子记录的形式被永久储存下来,存放这 ...
- 类型提示和python函数中'->'的用法
一.类型提示 在python中,我们定义一个有参函数,调用该函数时需要传入参数,如下所示: # 定义一个简单的函数 def get_full_name(first_name, last_name): ...
- 关于我在安装2.6.9版本bochs虚拟机时遇到的问题以及解决过程
更新于:2019.7.2 在阅读<一个64位操作系统的设计与实现>过程中,搭建实验环境遇到的诸多困难. 本人的实验环境:vmware15.0 下安装有kali-liunx虚拟机里进行的安装 ...
- window下快速启动mysql,bat脚本
cls @echo off:设置窗口字体颜色color 0a :设置窗口标题TITLE MySQL管理程序 call :checkAdmin goto menu:菜单:menuclsecho. ech ...
- MAC系统连接Windows共享文件的方法:
MAC系统连接Windows共享文件的方法: 1.首先先确认Windows系统下已开启共享.并且两台电脑之间局域网已通. 2.苹果MAC系统,点击桌面.打开顶部菜单 "前往". 3 ...
- Launchpad是什么?Launchpad使用教程
Launchpad是什么?Launchpad 是用来查找和打开Mac系统下的 app 的最快捷方式,通过 Launchpad,您可以查看.整理并轻松打开Mac里面几乎所有的应用软件.下面带来Mac ...