一、何谓数据库审计?

数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,SQL语句执行,数据库对象访问这些方面的跟踪记录。

二、审记记录的存储方式

分为两种:一种是存储在操作系统文件中,一种是存储在system表空间中的SYS.AUD$表中。

三、对数据库性能影响的考虑

审计必然需要占用CPU,因此,需要综合平衡审计需求与性能之间的平衡性问题,以确定出最好的审许策略。

四、审记结果中包含哪些信息

前面讲到审许结果的存储分数据库存储和文件存储两种方式。对于数据库存储的情况,SYS.AUD$表中包含以下信息:

1)        ・操作系统用户名

2)        ・数据库用户名

3)        ・连接会话标识

4)        ・终端标识

5)        ・被访问的schema对象名

6)        ・尝试的操作

7)        ・操作的完整代码

8)        ・日期和时间戳

若审计记录存储在外部操作文件中,则该文件可能包含以下信息:

1)         ・操作系统产生的审计记录

2)         ・数据库的审计记录

3)         ・被审计到的数据库操作

4)         ・超级管理员(SYS)的审计记录

其中,被写到文件中的审计记录是以编码的方式存储的,如果要理解这些编码所对应的信息,可以查询以下数据字典表:

编码信息数据字典表

-------------------------------

数据库操作代码表示尝试的操作。它的相关描述可以从数据字典表AUDIT_ACTIONS表中查询到

操作所使用的权限可以在字典表SYSTEM_PRIVILEGE_MAP中查询到对应的说明

完整的操作代码操作成功时将返回0,失败时返回相关oracle错误信息,错误信息码所对应的说明可以从oracle官方文档中获得

--------------------------------

五、缺省的审计

不论当前是否已经开启的审计功能,数据库都会把一些数据库相关的操作写入外部审计文件中(注意:不是写入SYS.AUD$表),这些被缺省审计的操作是:

1)         ・以超级管理员权限对数据库的连接(connectASSYSDBA或connectASSYSOPER)

2)         ・数据库启动

3)         ・数据库停止

六、对超级管理员用户的操作行为的审计

超级管理员用户指的是以ASSYSDBA或ASSYSOPER方式连接数据库的用户。初始化参数AUDIT_SYS_OPERATIONS用来指定是超级管理员的审计选项,如果将AUDIT_SYS_OPERATIONS设置为TRUE,那么所有超级管理员的操作都将被审计,而不管当前是否有开启审计功能,而且所有的审计信息都被写入外部审计文件中(注意:不是写入SYS.AUD$表)。

七、执行审计

1.设定审计记录的存放位置

初始化参数AUDIT_TRAIL指定了审计记录的存放位置,该参数有三个取值:

1)         ・DB审计记录存放在数据库的SYS.AUD$表中

2)         ・OS审计记录存放在外部的操作系统文件中

3)         ・NONE关闭审计(缺省值)

初始化参数AUDIT_FILE_DEST指定了当审外部审记文件目标存储路径,其缺省值是$ORACLE_HOME/rdbms/audit

2.审计选项

这个审计选项指的是执行审计的AUDIT语句的可选项。AUDIT语句的语法请参考oracle官方SQL参考。

3.以实例说明审计

a.审计某用户的会话的创建与结束

AUDITSESSIONBYscott,fey;

b.审计所有用户的会话的创建与结束

AUDITSESSION;

c.审计删除表的操作

AUDITDELETEANYTABLE;

c.审计删除表的操作(限制:只审计删除失败的情况)

AUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.审计删除表的操作(限制:只审计删除成功的情况)

AUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

e.审计删除表的操作(限制:同一个会话中相同的操作语句只审计一次)

AUDITDELETEANYTABLEBYSESSION;

(注:对于这种情况,如果审计记录被设定为存储在外部文件中时,这个效果是体现不出来的,因为oracle无法判断是否已经审计过相同的操作语句。)

f.审计删除表的操作(限制:每支删除语句都审计,不论同一会话中是否有多条相同的操作语句)

AUDITDELETEANYTABLEBYACCESS;

g.审计对fey.employee表的delete操作

AUDITDELETEONfey.employee;

h.审计对fey.employee表的delete、updet、insert操作

AUDITDELETE,UPDATE,INSERTONfey.employee;

八、停止审计

停止审计使用NOAUDIT语句,该语句的语法请参考oracle官方SQL参考。下面以实例说明NOAUDIT的使用:

a.停止所有对会话的创建与结束的审计

NOAUDITSESSION;

b.停止对用户fey,scott的会话的创建与结束的审计

NOAUDITSESSIONBYfey,scott;

c.停止审计删除表的操作

NOAUDITDELETEANYTABLE;

c.停止审计删除表的操作(限制:停止审计删除失败的情况)

NOAUDITDELETEANYTABLEWHENEVERNOTSUCCESSFUL;

d.停止审计删除表的操作(限制:停止审计删除成功的情况)

NOAUDITDELETEANYTABLEWHENEVERSUCCESSFUL;

g.停止审计对fey.employee表的delete操作

NOAUDITDELETEONfey.employee;

h.停止审计对fey.employee表的delete、updet、insert操作

NOAUDITDELETE,UPDATE,INSERTONfey.employee;

九、对审计记录表SYS.AUD$的管理

当SYS.AUD$表的审计记录越来越多的时候,以至达到存储极限时,会因为审计记录无法写入而产生错误。或许我还也需要对该表的数据进行一些转储或者碎片的整理,或是删除一些我们认为不再需要的审计记录。这些都是要考虑的事情。下面给出一个对该表进行存储碎片的整理的一个方法:

a.将该表的数据selectinto到另一个表中,或利用export导出到外部文件

b.truncate这张表(要以超级管理员登录才行)

c.再将原先转储的数据再加载进来。

也许我们需要对针对SYS.AUD$表的操作进行审计,如:AUDITINSERT,UPDATE,DELETEONsys.aud$BYACCESS;

十、Fine-Grained审计

如前面所述,审计的记录中并没有含操作所作用的数据,比如说,需要审计针对一个表的select,而且需要在审计记录中包含select语句所返回的数据。这时,就需要用到Fine-Grained审计。Fine-Grained审计是基于oracle的事件,其原理是在insert,update或delete相关的事件中截取相关的数据。属于orale程序开发的范畴。具体可以参考相关oracle文�。

十一、审计相关的数据字典视图

STMT_AUDIT_OPTION_MAP

AUDIT_ACTIONS

ALL_DEF_AUDIT_OPTS

DBA_STMT_AUDIT_OPTS

DBA_PRIV_AUDIT_OPTS

DBA_OBJ_AUDIT_OPTS

USER_OBJ_AUDIT_OPTS

DBA_AUDIT_TRAIL

USER_AUDIT_TRAIL

DBA_AUDIT_OBJECT

USER_AUDIT_OBJECT

DBA_AUDIT_SESSION

USER_AUDIT_SESSION

DBA_AUDIT_STATEMENT

USER_AUDIT_STATEMENT

DBA_AUDIT_EXISTS

DBA_AUDIT_POLICIES

DBA_FGA_AUDIT_TRAIL

各视图的详细说明请参考oracle官方参考手册

oracle数据库登录审计,oracle数据库审计相关推荐

  1. oracle rman 登录方式,oracle rman登陆及连接target数据库的步骤方法

    方法一: [oracle@odd-oelr4u8~]$ rman target sys/oracle@PROD1521 catalogcatalog_admin/catalog_admin@PROD2 ...

  2. oracle官网能用的账号,oracle 官方登录账号Oracle的在windows下的安装及使用

    一:官网下载oracle数据库 这里我下载的是oracle 11g r2,根据自己的操作系统选择相应的下载文件,我这里是windows 64位的,所以选择第二个,点击see all 点击accept ...

  3. mysql数据库登录认证_MySQL数据库的用户认证系统

    这两天受朋友的托付,要我帮他写一个使用MySQL数据库的用户认证系统.我当然不好推脱的,只得耗费了一晚上的休息时间,写了个很简单的PHP程序.由于赶的很仓卒,可能会太简陋了些,而且可能还会有错误和漏洞 ...

  4. oracle无法登录em,oracle em登陆不了,账户密码过期

    登陆oracle em 登陆不了截图如下: 更改用户密码无效: 查看后台log: 2015-06-27 10:11:31,640 Thread-1080228448 WARN  collector: ...

  5. oracle获取登录名,oracle如何获取当前登录的用户名

    Microsoft Windows [版本 5.2.3790] (C) 版权所有 1985-2003 Microsoft Corp. C:/>sqlplus SQL*Plus: Release ...

  6. oracle 审计数据大,oracle审计AUD$过大导致的数据库登录异常

    今天,省分技术人员反映数据库登录异常. 查询oerr,发现该错误是一般性提示,可能导致的原因有数据库未注册.本地文件配置问题等.由于平时连接并没有问题,是突发情况,所以排除了配置问题. 远程登录查询监 ...

  7. oracle审计AUD$过大导致的数据库登录异常

    今天,省分技术人员反映数据库登录异常. 查询oerr,发现该错误是一般性提示,可能导致的原因有数据库未注册.本地文件配置问题等.由于平时连接并没有问题,是突发情况,所以排除了配置问题. 远程登录查询监 ...

  8. oracle 9i aix 迁移,Oracle 9i 在AIX上的安装 (转)

    ■可以删除原有的.cpio文件腾出剩余的空间 2.检查要求 检查附录1的表格系统要求的内容 3.预安装 ■完成安装任务 □以Root用户登录 □建立目录/oracle,此目录下至少有3G以上的空间,见 ...

  9. oracle批量构造数据,oracle批量构造数据方法 - rd_clp的个人空间 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...

    1.一种是只要数据条数,至于里面内容可以是序列方式,另外可能几个表中相互 id的关联,那建议用存诸过程写. 表a(id,name)有学员的信息 表b(id,testid,subject,score)有 ...

最新文章

  1. 安卓蓝牙键盘按键映射_双层按键功能自定义:魔蛋68蓝牙双模机械键盘体验
  2. Android中Video的三种播放方式的实现
  3. 51Nod 1298 圆与三角形相交 计算几何
  4. Python元组介绍
  5. hbase中清空整张表的数据
  6. sublime mysql插件_开发者最常用的8款Sublime text 3插件
  7. PHP在哪里执行_php文件放在哪运行
  8. centos 6.4 使用sendmail发送邮件(cacti)
  9. (2020)Java后端开发----(面试题和笔试题)
  10. VHDL实验-实现一位全加器
  11. imazing是什么?iPhone苹果第三方iOS设备管理软件
  12. 使用GoldWave制作“淡入/淡出”效果
  13. 有些公司的年会,还不如《天龙八部》的万仙大会
  14. NAT技术与代理服务器详解
  15. 科技云报道:新基建已到来,网络安全建设跟上了吗?
  16. SAAS 技术栈回顾
  17. (44.1)【APP应用漏洞发现】抓包工具、协议分析、逆向工程
  18. kubernetes Pod 污点与容忍
  19. 1.FastAPI简介
  20. oracle 每3位加逗号,[DB][Oracle]Oracle格式化数字的方法(指定小数点位数,每3位加逗号)...

热门文章

  1. 加载jsp页面报#{} is not allowed in template text
  2. sigal mq_notify
  3. Oracle基础知识-SQL简单命令
  4. 地图大数据来了!中国人口吸引力城市TOP 10
  5. Modbus协议模型
  6. 为什么俄罗斯不怕芯片卡脖子?
  7. 使用Java8的进来,这几个方法不香吗?
  8. 一次蚂蚁金服的辛酸面试历程
  9. 大白话带你梳理一下Dubbo的那些事儿
  10. Servlet高级应用---Servlet与缓存