[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网易邮箱的发送和接收服务器的方法如下 在数据库的管理中,右击数据库邮件,选择配置数据库邮件 出现对话框 ...
随机推荐
- Linux:touch 修改文件的时间
修改本文件的时间 参数 描述 例子 -a 只修改访问时间(Access Time) touch -a hello.txt -m 只更新修改时间(Modify Time) touch -m hello. ...
- ABP微服务系列学习-使用Tye启动微服务
Tye是微软开源的一款开发人员工具, 能够用于简化微服务以及分布式应用程序的开发.测试以及部署过程.Tye 的首要目标是简化微服务的开发,具体方式包括仅用一行命令执行多项服务.在容器中使用依赖项目,以 ...
- Python实战项目5-Git远程仓库/分支合并/冲突解决
Git分支 为什么要有分支 可以保证主分支的版本都是可以查看的版本 我们都在开发分支开发,开发完成 合并代码 分支操作 分支查看 git branch 分支创建 git branch 分支名 分支切换 ...
- CentOS7.6 添加系统自启脚本
一.编辑脚本 1.在自定义的脚本中添加 # chkconfig: 235 20 80 # chkconfig: 2345 20 80 其中2345是默认启动级别,全部0-6共有7个级别. 0表示:表示 ...
- Object.assgin基本知识与相关深浅拷贝
一.关于Object.assgin()基本知识 概念 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象.它将返回目标对象. 理解 对象的属性分为可枚举和不 ...
- 这个博客几乎包括了Makefile中的所有 $ 符号解释
来源:https://blog.csdn.net/dlf1769/article/details/78997967 Makefile中的$@, $^, $< , $?, $%, $+, $* h ...
- SQLServer 查询所有外键关联表信息
有时候需要清除一些数据,但是总会有一些外键关联多加阻拦,下面是一些外键关联查询,方便更快捷有效的查询到需要处理的外键信息. 一.外键信息 查询列从左到右分别是: 外键约束名,子表名,外键列名,父表名 ...
- Bug Bash测试
愿望 养成参加 Bug Bash 的习惯,就像养成到点就吃饭一样的习惯. 一.Bug Bash 名词解释 A Bug Bash is a collaborative effort across o ...
- codeforce B. Creating the Contest
http://codeforces.com/contest/1029/problem/B 水题真快乐= = 1 public class Main { 2 public static void mai ...
- HTTP知识点
HTTP 请求/响应的步骤:(工作原理) 客户端连接到 Web 服务器 一个 HTTP 客户端,通常是浏览器,与 Web 服务器的 HTTP 端口(默认为 80)建立一个 TCP 套接字连接.例如,h ...