一、 简介

1. 什么是标准审计

标准审计审计SQL语句、权限、对象和网络活动。 可以使用AUDIT语句配置标准审计,使用NOAUDIT语句删除此配置。可以将审计记录写入数据库审计跟踪或操作系统审计文件。

11g默认审计选项

-- 以下权限将对所有用户审计
select privilege,success,failure from dba_priv_audit_opts;PRIVILEGE                                SUCCESS    FAILURE
---------------------------------------- ---------- ----------
CREATE EXTERNAL JOB                      BY ACCESS  BY ACCESS
CREATE ANY JOB                           BY ACCESS  BY ACCESS
GRANT ANY OBJECT PRIVILEGE               BY ACCESS  BY ACCESS
EXEMPT ACCESS POLICY                     BY ACCESS  BY ACCESS
CREATE ANY LIBRARY                       BY ACCESS  BY ACCESS
GRANT ANY PRIVILEGE                      BY ACCESS  BY ACCESS
DROP PROFILE                             BY ACCESS  BY ACCESS
ALTER PROFILE                            BY ACCESS  BY ACCESS
DROP ANY PROCEDURE                       BY ACCESS  BY ACCESS
ALTER ANY PROCEDURE                      BY ACCESS  BY ACCESS
CREATE ANY PROCEDURE                     BY ACCESS  BY ACCESS
ALTER DATABASE                           BY ACCESS  BY ACCESS
GRANT ANY ROLE                           BY ACCESS  BY ACCESS
CREATE PUBLIC DATABASE LINK              BY ACCESS  BY ACCESS
DROP ANY TABLE                           BY ACCESS  BY ACCESS
ALTER ANY TABLE                          BY ACCESS  BY ACCESS
CREATE ANY TABLE                         BY ACCESS  BY ACCESS
DROP USER                                BY ACCESS  BY ACCESS
ALTER USER                               BY ACCESS  BY ACCESS
CREATE USER                              BY ACCESS  BY ACCESS
CREATE SESSION                           BY ACCESS  BY ACCESS
AUDIT SYSTEM                             BY ACCESS  BY ACCESS
ALTER SYSTEM                             BY ACCESS  BY ACCESS23 rows selected.
-- 以下语句也将对所有用户审计:
select audit_option,success,failure from dba_stmt_audit_opts;AUDIT_OPTION                             SUCCESS    FAILURE
---------------------------------------- ---------- ----------
ALTER SYSTEM                             BY ACCESS  BY ACCESS
SYSTEM AUDIT                             BY ACCESS  BY ACCESS
CREATE SESSION                           BY ACCESS  BY ACCESS
CREATE USER                              BY ACCESS  BY ACCESS
ALTER USER                               BY ACCESS  BY ACCESS
DROP USER                                BY ACCESS  BY ACCESS
PUBLIC SYNONYM                           BY ACCESS  BY ACCESS
DATABASE LINK                            BY ACCESS  BY ACCESS
ROLE                                     BY ACCESS  BY ACCESS
PROFILE                                  BY ACCESS  BY ACCESS
CREATE ANY TABLE                         BY ACCESS  BY ACCESS
ALTER ANY TABLE                          BY ACCESS  BY ACCESS
DROP ANY TABLE                           BY ACCESS  BY ACCESS
CREATE PUBLIC DATABASE LINK              BY ACCESS  BY ACCESS
GRANT ANY ROLE                           BY ACCESS  BY ACCESS
SYSTEM GRANT                             BY ACCESS  BY ACCESS
ALTER DATABASE                           BY ACCESS  BY ACCESS
CREATE ANY PROCEDURE                     BY ACCESS  BY ACCESS
ALTER ANY PROCEDURE                      BY ACCESS  BY ACCESS
DROP ANY PROCEDURE                       BY ACCESS  BY ACCESS
ALTER PROFILE                            BY ACCESS  BY ACCESS
DROP PROFILE                             BY ACCESS  BY ACCESS
GRANT ANY PRIVILEGE                      BY ACCESS  BY ACCESS
CREATE ANY LIBRARY                       BY ACCESS  BY ACCESS
EXEMPT ACCESS POLICY                     BY ACCESS  BY ACCESS
GRANT ANY OBJECT PRIVILEGE               BY ACCESS  BY ACCESS
CREATE ANY JOB                           BY ACCESS  BY ACCESS
CREATE EXTERNAL JOB                      BY ACCESS  BY ACCESS28 rows selected.

2. 谁可以执行标准审计

任何用户都可以使用AUDIT语句为其自己拥有的对象配置审计,使用NOAUDIT语句删除此配置,执行此任务不需要其他权限。无论AUDIT_TRAIL参数设置如何,用户都可以运行语句来设置审计选项。如果已禁用审计,则下次启用时,Oracle数据库将记录由AUDIT语句设置的审计活动。

  • 要审计另一个schema中的对象,用户必须具有AUDIT ANY系统特权。
  • 要审计系统权限,用户必须具有该AUDIT SYSTEM权限。
  • 如果O7_DICTIONARY_ACCESSIBILITY初始化参数已设置为FALSE(缺省值),则只有拥有该SYSDBA特权的用户才能对SYS.AUD$和SYS.FGA_LOG$表中的数据执行DML操作。
  • 无需设置AUDIT_TRAIL即可启用细粒度审计或SYS审计。对于细粒度审计,可以根据需要添加和删除细粒度审计策略,将它们应用于要监视的特定操作或对象。要启用SYS审计,将AUDIT_SYS_OPERATIONS参数设置为TRUE。

二、 审计参数设置

AUDIT_TRAIL参数值(重启生效):

  • none:不启用审计功能;
  • db:启用审计功能,审计信息写入sys.aud$数据字典中,审计结果只有连接信息,没有sql语句(sys用户的记录以及强制性要求的记录都写入os文件);
  • db, extended:与db相比,审计结果增加了执行的sql和绑定变量
  • os:启用审计功能,审计信息以文本格式写入os文件;
  • xml:启用审计功能,审计信息以xml格式写入os文件,没有sql语句;
  • xml, extended:与xml相比,审计结果增加了执行的sql和绑定变量

AUDIT_TRAIL

三、 标准审计类型

1. 根据审计内容分类

  • 语句审计(Statement Auditing):对特定的SQL语句进行审计,不指定具体对象;
  • 权限审计(Privilege Auditing):对特定的系统权限使用情况进行审计;
  • 对象审计(Object Auditing):对特定的对象上执行的特定语句进行审计;
  • 网络审计(Network Auditing):对网络协议错误与网络层内部错误进行审计。

2. 根据用户是否执行成功分类

  • 对执行成功的语句进行审计
  • 对失败的语句进行审计
  • 无论成功与否都进行审计

3. 根据对同一语句审计次数分类

  • 会话审计(by session,默认):用户在同一会话执行的相同语句只审计一次,记一条审计记录
  • 访问审计(by access):用户执行多少次语句就审计多少次,形成多少条审计记录

四、 审计配置

1.  语句审计

  • 语句审计是对特定的SQL语句进行审计,与具体的对象没有关系。
AUDIT sql_statement_shortcut | ALL | ALL STATEMENTS
[BY user_lists] | [IN SESSION CURRENT] [BY SESSION | ACCESS] [WHENEVER [NOT] SUCCESSFUL]

解释:

- sql_statement_shortcut:被审计的SQL语句shortcut;

- ALL:审计大部分SQL语句,这里不在列出;

- ALL STATEMENT:对最高级别的SQL语句进行审计,即对直接执行的SQL语句进行审计,而不对包含在PL/SQL程序中的SQL语句进行审计(ALL STATEMENT级别才能审计commit和rollback操作);

- BY user_lists:指定审计的用户,如果不指定,则审计全部用户;

- IN SESSION CURRENT:只对当前会话进行审计;

- BY SESSION:会话审计,同一个SQL语句只审计一次;

- BY ACCESS:存取审计,同一个SQL语句执行几次就审计几次;

- WHENEVER SUCCESSFUL:只审计执行成功的SQL语句;

- WHENEVER NOT SUCCESS:只审计执行不成功的SQL语句;

AUDIT

例如

-- all statement 级别
audit all statements by aud_user by access; -- DML
audit update table, insert table, delete table by aud_user by access; -- Select
audit Select table by aud_user by access; -- 执行权限
AUDIT EXECUTE PROCEDURE by aud_user BY ACCESS WHENEVER NOT SUCCESSFUL;-- 审计对表所有操作
audit table by aud_user by access;-- 审计指定用户连接/断开操作
audit connect by aud_user;
-- 审计所有用户连接/断开操作
audit connect;-- 审计用户授权操作
audit grant any role by access;
audit grant any object privilege by access;
audit grant any privilege by access;
  • 要取消对某个语句的审计,只需将AUDIT命令改为NOAUDIT命令即可,其语法与AUDIT相同。NOAUDIT 取消审计的操作对已经连接的session无用,但新开的session将不再审计。
  • 通过数据字典DBA_STMT_AUDIT_OPTS可以了解当前数据库哪些用户进行了语句审计及审计设置信息。例如,查看与scott用户相关的语句审计:
SQL> select * from dba_stmt_audit_opts where user_name='SCOTT';USER_NAME PROXY_NAME  AUDIT_OPTION    SUCCESS    FAILURE
--------- ----------- --------------- ---------- ----------
SCOTT                 TABLE           BY ACCESS  BY ACCESS
SCOTT                 INSERT TABLE    BY ACCESS  BY ACCESS

2.  权限审计

  • 权限审计是对特定的系统权限进行审计
AUDIT system_privilege | [ALL PRIVILEGES] [BY user_lists] | [IN SESSION CURRENT] [BY SESSION | ACCESS] [WHENEVER [NOT] SUCCESSFUL]

例子

-- 每次成功使用ALTER TABLESPACE权限时,都会将一行内容添加到SYS.AUD$
audit alter tablespace by access whenever successful;-- 审计 select any table权限
audit select any table by aud_user by access; 
  • 通过数据字典DBA_PRIV_AUDIT_OPTS查看当前数据库中对哪些用户使用了什么权限审计。

3. 对象审计

  • 对象审计是指对特定模式对象的操作进行审计,与用户无关
-- sql_operation指定特定对象上要审计的SQL语句
AUDIT sql_operation | ALL ON [schema.]object] [BY user_lists] | [IN SESSION CURRENT][BY SESSION | ACCESS] [WHENEVER [NOT] SUCCESSFUL]

例子

-- 审计对scott.dept表所有操作
audit all on scott.dept by access;-- 审计对hr.employees表DML操作
audit update,insert,delete on hr.employees by access;
  • 查询DBA_OBJ_AUDIT_OPTS查看当前数据库对哪些对象进行了对象审计

4. 网络审计

对协议错误与网络层内部错误进行审计,捕获客户端与服务器通信过程中发生的错误,这些错误由SQL*NET网络服务抛出。

AUDIT NETWORK [BY SESSION | ACCESS] [WHENEVER [NOT] SUCCESSFUL]

例子

-- Configuring Network Auditing
AUDIT NETWORK BY ACCESS;--Removing Network Auditing
NOAUDIT NETWORK;

五、 DDL操作审计

生产环境经常遇到DROP、TRUNCATE、DELETE等误操作,其中大部分影响较大的是DDL

1. 启|禁用

alter system set enable_ddl_logging = TRUE|FALSE; -- 不需重启

2. 审计记录位置

审计内容只有时间、语句,不记录执行者

  • 12c之前版本

alert日志

  • 12c开始

$ORACLE_BASE/diag/rdbms/dbname/dbname/log ddl

http://www.orasql.com/blog/archives/2014/09/05/tracking_drop_op.htm

六、 强制审计

Oracle始终进行审计某些与数据库相关的操作,并将它们写入操作系统审计文件。即使已启用数据库审计(AUDIT_TRAIL参数设置为DB),Oracle仍会将强制审计内容写入操作系统文件。

默认情况下,操作系统文件位于$ORACLE_BASE/admin/$ORACLE_SID/adump目录中。在Windows系统上,Oracle数据库还会将此信息写入Windows事件查看器。可以通过设置AUDIT_FILE_DEST初始化参数来更改此目录的位置(重启生效)

强制审计包括以下操作:

  • 数据库启动:审计记录内容包括启动实例的操作系统用户,用户终端标识符以及日期和时间戳。此数据存储在操作系统审计跟踪中,因为数据库审计跟踪在成功完成启动之后才可用。
  • SYSDBA和SYSOPER登录:Oracle数据库记录所有SYSDBA和SYSOPER连接。
  • 数据库关闭:审计记录内容包括关闭实例的操作系统用户,用户终端标识符以及日期和时间戳。

七、 审计相关视图

视图名 含义
SYS.AUD$ 审计功能基表,其他视图里的数据都是由aud$所得。如果需要删除审计数据,只需要删除aud$中数据既可。
DBA_AUDIT_TRAIL 查询所有审计记录的信息
DBA_AUDIT_STATEMENT DB配置了哪些语句级审计
DBA_PRIV_AUDIT_OPTS DB配置了哪些权限级审计
DBA_OBJ_AUDIT_OPTS DB配置了哪些对象级审计
DBA_AUDIT_OBJECT 查询所有对象跟踪信息,信息完全包含在dba_audit_trail中
DBA_AUDIT_SESSION 查询logon或logoff的信息
DBA_AUDIT_EXISTS 列出audit not exists和audit exists(默认)产生的审计跟踪
AUDIT_ACTIONS 可以查询出aud$等视图中actions列的含义
SYSTEM_PRIVILEGE_MAP 可以查询出aud$等视图中priv$used列的含义(注意前面加'-')

参考

Oracle中如何记录和查看用户的登录记录 - 墨天轮

Oracle审计篇——标准审计相关推荐

  1. Oracle审计篇——统一审计

    一. 统一审计作用 统一审计跟踪从各种来源捕获审计信息.通过统一审计,您可以从以下来源捕获审计记录: 来自统一审计策略和AUDIT设置中的审计记录(包括sys的审计记录) 来自DBMS_FGA的细粒度 ...

  2. Oracle标准审计实战过程详解

    点击上方"蓝字" 关注我们,享更多干货! # 前言 # 最近很多人咨询我Oracle的审计功能,下面我用一个非常清晰的过程给大家讲解一个相关案例. 我们都知道Oracle审计功能很 ...

  3. oracle学习笔记之 审计

    Oracle数据库审计 数据库审计是监视并记录选定的用户数据库操作.主要分为标准审计和精细粒度审计(FGA,Fine-Grained Auditing),标准审计可在语句级.对象级.权限级进行审计:精 ...

  4. linux 审计oracle,开启和关闭oracle数据库中的审计功能

    开启和关闭oracle数据库中的审计功能 第1步:查看审计功能是否开启? SQL> show parameter audit; NAME           TYPE         VALUE ...

  5. 政府安全资讯精选 2017年第十八期 工信部近三年将466个“问题APP”纳入黑名单;阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商...

    摘要: 工信部近三年将466个"问题APP"纳入黑名单:阿里云成为全球唯一完成德国C5云安全基础附加标准审计云服务商:新加坡政府首开漏洞奖励计划,邀"白帽子"渗 ...

  6. Oracle fgs(精细审计)使用

    Oracle fgs(精细审计)使用 1)grant execute on dbms_fga to scott 2)添加审计策略(scott) begin DBMS_FGA.ADD_POLICY( o ...

  7. Oracle 业务表自制审计字段使用

    2019独角兽企业重金招聘Python工程师标准>>> 审计字段即记录数据的创建人.创建时间.修改人.修改时间的字段.体现在每一张数据库表中.为了减少代码量需要设置一套通用的方法. ...

  8. 区块链安全100问 | 第七篇:智能合约审计流程及审计内容

    零时科技--专注于区块链安全领域 深圳零时科技有限公司(简称:零时科技),公司成立于2018年11月,是一家专注于区块链生态安全的实战创新型网络安全企业,团队扎根区块链安全与应用技术研究,以丰富的安全 ...

  9. 计算机审计 pdf,计算机审计第三章作业.pdf

    1. 审计软件的审计实施阶段前,包括哪些内容? 答: a. 项目管理 b. 数据准备 c. 审计准备 2. 新建审计项目时,在"项目登记"界面里,在定义'审计时限范围'时,可以创建 ...

最新文章

  1. MaxCompute,基于Serverless的高可用大数据服务
  2. Python爬虫入门(7):正则表达式
  3. oracle 客户端监听文件配置
  4. 【Java并发编程】之八:多线程环境中安全使用集合API
  5. P3796 【模板】AC自动机(加强版)
  6. WIN10安装ubuntu全过程
  7. KMP字符串匹配算法理解(转)
  8. qwt+qt5.4.1+win7 环境搭建(完美版)
  9. 如何迁移SAV客户端
  10. 【综述】Google团队发布,一文概览Transformer模型的17大高效变种
  11. JavaScript判断浏览器类型及版本(新增IE11)
  12. OraclePLSQL 安装及乱码问题解决
  13. php找100到1000之间的素数_php编程输出100以内的素数
  14. 高等数学和计算机相结合的论文,高等数学教学与专业结合模式的初步探索论文...
  15. 述职答辩提问环节一般可以问些什么_01、述职答辩操作流程指引
  16. Bootstrap系列之面包屑导航(Breadcrumb)
  17. python灰产路子有哪些_Python3 网络爬虫(四):视频下载,那些事儿!-后台/架构/数据库-敏捷大拇指-一个敢保留真话的IT精英社区...
  18. Exchange Server 2003反垃圾邮件配置黑名单RBL
  19. 编制项目预算的方法和步骤
  20. 【2021牛客暑期多校训练营7 】 xay loves count

热门文章

  1. 腾讯云备案授权码常见问题及解决方法
  2. html中常用的一些英文单词
  3. 【CodingNoBorder - 12】无际软工队 - 求职岛:BETA 阶段测试报告
  4. 智能三定律(1),提出智能三条定律的背景和原因
  5. 好心情提醒:企业员工心理健康服务更需要“心理医生”
  6. Hexo博客迁移到腾讯云
  7. 防泄密软件可以管理电脑的使用,还能防止数据泄漏...
  8. 智能会议纪要生成,从音视频到一键生成会议特征数据
  9. 基于51单片机的温度报警器QAQ
  10. vscode忽略某些文件