一、何谓数据库审计?

数据库审计,就是对数据库的活动做跟踪记录,主要包括数据库连接,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)         ·以超级管理员权限对数据库的连接(connect AS SYSDBA或connect AS SYSOPER)

2)         ·数据库启动

3)         ·数据库停止

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

超级管理员用户指的是以AS SYSDBA或AS SYSOPER方式连接数据库的用户。初始化参数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.审计某用户的会话的创建与结束

AUDIT SESSION BY scott,fey;

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

AUDIT SESSION;

c.审计删除表的操作

AUDIT DELETE ANY TABLE;

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

AUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;

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

AUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;

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

AUDIT DELETE ANY TABLE BY SESSION;

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

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

AUDIT DELETE ANY TABLE BY ACCESS;

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

AUDIT DELETE ON fey.employee;

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

AUDIT DELETE,UPDATE,INSERT ON fey.employee;

八、停止审计

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

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

NOAUDIT SESSION;

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

NOAUDIT SESSION BY fey,scott;

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

NOAUDIT DELETE ANY TABLE;

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

NOAUDIT DELETE ANY TABLE WHENEVER NOT SUCCESSFUL;

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

NOAUDIT DELETE ANY TABLE WHENEVER SUCCESSFUL;

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

NOAUDIT DELETE ON fey.employee;

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

NOAUDIT DELETE,UPDATE,INSERT ON fey.employee;

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

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

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

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

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

也许我们需要对针对SYS.AUD$表的操作进行审计,如:AUDIT INSERT,UPDATE,DELETE ON sys.aud$ BY ACCESS;

十、Fine-Grained审计

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

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

执行审计的普通信息:

STMT_AUDIT_OPTION_MAP  映射审计选项项类型为代码

AUDIT_ACTIONS 映射审计跟踪操作类型为代码

DBA_AUDIT_TRAIL

USER_AUDIT_TRAIL  和用户相关的审计跟踪内容

语句审计信息:

DBA_STMT_AUDIT_OPTS 贯穿整个系统和用户的,当前系统审计选项的信息

DBA_AUDIT_SESSION 审计连接和断开连接的内容

USER_AUDIT_SESSION 审计用户的连接和断开连接的内容

DBA_AUDIT_STATEMENT 语句审计,审计带有grant,revoke,audit,noaudit,alter system命令的内容

USER_AUDIT_STATEMENT 审计用户使用的语句内容

DBA_AUDIT_EXISTS 审计通过audit exists 命令创建的内容

特权审计:

DBA_PRIV_AUDIT_OPTS

对象审计:

DBA_OBJ_AUDIT_OPTS 用于所有表和视图的审计选项

USER_OBJ_AUDIT_OPTS 用于某个拥有者的表和视图的审计选项

DBA_AUDIT_OBJECT 系统中所有对象的审计记录

USER_AUDIT_OBJECT 用于审计跟踪涉及用户拥有的对象的语句记录

ALL_DEF_AUDIT_OPTS 用于所创建的对象的默认审计选项

DBA_AUDIT_POLICIES

DBA_FGA_AUDIT_TRAIL

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

eg:Audit oracle user login not successful

编辑pfile,enable "audit_trail" 参数:

AUDIT_TRAIL = TRUE

该参数设为TRUE 等同于AUDIT_TRAIL = DB

以该pfile启动DB,并设定以下audit参数:

SQL> AUDIT ALL BY ACCESS WHENEVER NOT SUCCESSFUL;

然后通过查询AUD$来查看当前login失败的状态:

SQL> select statement,timestamp#,userid,userhost,terminal,spare1,COMMENT$TEXT from aud$;

因为在oracle 10g中对default的profile里就对FAILED_LOGIN_ATTEMPTS选项设定成10,也就是说,若尝试密码输入10次后就会将该用户LOCK住,正因为这种情况,若不对这种情况做audit,会造成一些较为严重的后果,比如,尝试者最终未得到密码,但DB端用户被锁,应用亦连接不过来,整个一套系统无法运行。

以下进行测试库上一个用户的密码测试,我们进行10次错误密码输入:

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

SQL> conn bbhr/password

ERROR:

ORA-28000: the account is locked

然后对aud$表进行查看:

SQL>  select statement,timestamp#,userid,userhost,terminal from aud$;

STATEMENT TIMESTAMP#          USERID     USERHOST   TERMINAL

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

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

1                     BBHR       dbtest     pts/1

10 rows selected.

oracle数据库视图存放位置,oracle数据库审计相关推荐

  1. oracle查看视图数据,查看oracle 10g 视图-数据库专栏,ORACLE

    查看oracle 10g 视图 1.  查看数据库的名字和归档状态 sql> select name,log_mode from v$database; name      log_mode - ...

  2. oracle日志存放默认位置,oracle——数据库日志存放位置

    1,默认情况下,oracle的日志文件记录在$ORACLE/rdbms/log目录下 [oracle@oracle log]$ pwd /home/oracle/oracle/product/10.2 ...

  3. SQL Server2019还原.bak文件为数据库且更改数据库的存放位置

    简单了解bak文件 bak是一个备份文件,为文件格式扩展名.这类文件一般在.bak前面加上应该有原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有的则是由原文件的后 ...

  4. oracle参数文件initorcl位置,ORACLE参数文件

    ORACLE参数文件 简介 参数文件记录了数据库的配置.在数据库启动时,Oracle要根据参数文件中的参数配置数据库.如果为各个内存池分配多少内存,允许打开的进程数和会话数等.要让数据库启动,必须先读 ...

  5. oracle的视图如何使用,Oracle 视图讲解及使用实例

    Oracle之视图 2018.9.12 由于视图的数据与表数据互相关联,所以切记谨慎操作 建立视图 使用下面sql语句来完成视图的创建 create or replace view 视图名 as se ...

  6. oracle 物化视图没效果,Oracle物化视图失效的几种情况及测试

    物化视图(Materialized Views)是查询的结果集,所有原表和视图的变更都将导致物化视图的失效,最近就发现了一个物化视图经常失 说明:物化视图(Materialized Views)是查询 ...

  7. oracle查询视图时慢,oracle视图查询速度慢

    一般对视图的查询最好都分解为对数据表的 直接查询效果要好一些. 可以在参数文件中设置SHARED_POOL_RESERVED_SIZE参 数,这个参数在SGA共享池中保留一个连续的内存空间,连 续的内 ...

  8. windows服务器审计日志存放位置,windows服务器审计日志存放位置

    windows服务器审计日志存放位置 内容精选 换一换 Manager的审计日志默认保存在数据库中,如果长期保留可能引起数据目录的磁盘空间不足问题,管理员如果需要将审计日志保存到其他归档服务器,可以在 ...

  9. SQL server 数据库导入(附加)和分离 数据库分离之后位置 复制数据库

    1.数据库附加 添加----确认 选择添加之后当前文件路径可以看到你数据库保存的位置,也就是分离之后的位置,默认在这个位置 C:\Program Files\Microsoft SQL Server\ ...

最新文章

  1. Android教程之android数据库编程
  2. systemd设置静态IP
  3. OpenCV-差分法实现绿叶识别(图像差分+颜色通道)
  4. java 天上掉东西游戏的源代码_【小游戏】前两天的小游戏终于调试成功了。。。。直接源代码...
  5. 苹果手机投影到墙上_针对商业用户倾情打造,明基E582智能无线投影仪体验
  6. 深交所与庄家6次过招 中集认沽走下神坛幕后
  7. 我的世界服务器ess配置文件,《我的世界》ess指令大全及用法详解
  8. java 序列化版本号_序列化版本号serialVersionUID的作用
  9. 通过Debugx5在电脑端调试微信页面
  10. 民生通讯面向全国招募民生通讯形象授权营业厅
  11. 3.20 关于怎样做好小红书直播的一些技巧【玩赚小红书】
  12. Git项目库删除找回
  13. 你身边的博士刚毕业以及稳定下来后的年薪大约是 多少?
  14. My97DatePicker控件显示时分秒
  15. 8K视频大?带你来算算
  16. [附源码]java毕业设计高铁售票管理系统
  17. 【Unity3D自学记录】自制作手机平衡球游戏
  18. 排序算法 | 快速排序算法原理及实现和优化(一)
  19. 观察:户外墙体激光投影成全球性趋势
  20. 自动化和计算机专业哪个好就业,我感觉南航就业最好的专业还是电气,自动化,计算机类...

热门文章

  1. 销售人员26个致命弱点
  2. Deploying Kubernetes with CoreDNS using kubeadm
  3. Swift中的循环强引用 【使用无主引用解决】
  4. 使用 utmpdump 监控 CentOS 用户登录历史
  5. oracle 修改数据表结构常用sql
  6. Velocity引擎导致jvm内存外内存泄露
  7. 你认为手机会取代个人电脑吗?
  8. matlab gui自定义图片做背景,matlab GUI自定义图片做背景
  9. 【转载】如何清晰地表达信息
  10. 使用事务码DBCO实现SAP链接外部数据库以及读取例程