Oracle审计功能详解

更新时间:2023-06-30 19:51:44 阅读: 评论:0

Oracle审计功能详解
一、 审计分类:
Oracle中审计总体上可分为“标准审计”和“细粒度审计”后者也称为“基于政策的审计”,在Oracle10G之后功能得到很大增强。其中标准审计分为用户级审计和系统级审计。用户级审计是任何Oracle用户可设置的审计,主要是用户针对自己创建的数据库表或视图进行审计,记录所有用户对这些表或视图的一切成功和(或)不成功的访问要求以及各种类型的SQL操作。系统级审计只能由DBA设置,用以监测成功或失败的登录要求、监测GRANT和REVOKE操作以及其他数据库级权限下的操作。
二、 标准审计:
2.1 分类:
ORACLE中分别支持以下三种标准审计类型:
          语句审计,对某种类型的SQL语句审计,不指定结构或对象。
          特权审计,对执行相应动作的系统特权的使用审计。
          对象审计,对一特殊模式对象上的指定语句的审计。
这三种标准审计类型分别对如下3方面进行审计:
          审计语句的成功执行、不成功执行,或者其两者。
          对每一用户会话审计语句执行一次或者对语句每次执行审计一次。
          对全部用户或指定用户的活动的审计。
当数据库的审计功能打开后,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。审计记录可存在数据字典表(称为审计记录)或操作系统审计记录中。数据库审计记录是在SYS模式的AUD$表中。
2.2 和审计相关的两个主要参数
迷你披萨Audit_sys_operations
默认为fal,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,假如数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。假如是windows平台,audti trail会记录在windows的事件管理中,假如是linux/unix平台则会记录在audit_file_dest参数指定的文件中。
Audit_trail
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:与DB一样,但是审计结果里面除了连接信息还包含了当时执行的SQL_TEXT和SQL_BIND
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML10g里新增,将audit trail以XML格式记录在操作系统文件中;
XML,Extended与XML一样,但是审计结果里面除了连接信息还包含了当时执行的SQL_TEXT和SQL_BIND
注:这两个参数是static参数,需要重新启动数据库才能生效。
2.3 审计级别
当开启审计功能后,可在三个级别对数据库进行审计:Statement(语句)Privilege(权限)、object(对象)。
Statement
按语句来审计,比如audit table 会审计数据库中所有的create table,drop table,truncate table语句,alter ssion by cmy会审计cmy用户所有的数据库连接。
用法AUDIT sql_statement_clau BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL;
表1列出了可以审计的语句类型,并且在每个类别中包含了相关语句的简要描述。如果指定
all,则审计该列表中的任何语句。然而,表2中的语句类型在启用审计时不属于all类别;必须在audit命令中显式地指定它们。
表1 包括在ALL类别中的可审计语句
语 句 选 项
SQL操作
ALTER SYSTEM
所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话
CLUSTER
CREATE、ALTER、DROP或TRUNCATE集群
CONTEXT
CREATE CONTEXT或DROP CONTEXT
DATABASE LINK
CREATE或DROP数据库链接
DIMENSION
CREATE、ALTER或DROP维数
DIRECTORY
CREATE或DROP目录
INDEX
CREATE、ALTER或DROP索引
MATERIALIZED VIEW
CREATE、ALTER或DROP物化视图
NOT EXISTS
由于不存在的引用对象而造成的SQL语句的失败
PROCEDURE
CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
PROFILE
CREATE、ALTER或DROP配置文件
PUBLIC DATABASE LINK
CREATE或DROP公有数据库链接
PUBLIC SYNONYM
CREATE或DROP公有同义词
ROLE
CREATE、ALTER、DROP或SET角色
ROLLBACK SEGMENT
CREATE、ALTER或DROP回滚段
SEQUENCE
CREATE或DROP序列
SESSION
登录和退出
SYNONYM
CREATE或DROP同义词
SYSTEM AUDIT
系统权限的AUDIT或NOAUDIT
SYSTEM GRANT
GRANT或REVOKE系统权限和角色
TABLE
CREATE、DROP或TRUNCATE表
TABLESPACE
CREATE、ALTER或DROP表空间
TRIGGER
CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
TYPE
CREATE、ALTER和DROP类型以及类型主体
USER
CREATE、ALTER或DROP用户
VIEW
CREATE或DROP视图
表2 显式指定的语句类型
伊水缘
语 句 选 项
SQL 操 作
ALTER SEQUENCE
任何ALTER SEQUENCE命令
ALTER TABLE
任何ALTER TABLE命令
COMMENT TABLE
添加注释到表、视图、物化视图或它们中的任何列
DELETE TABLE
删除表或视图中的行
EXECUTE PROCEDURE
执行程序包中的过程、函数或任何变量或游标
GRANT DIRECTORY
GRANT或REVOKE DIRECTORY对象上的权限
GRANT PROCEDURE
GRANT或REVOKE过程、函数或程序包上的权限
GRANT SEQUENCE
GRANT或REVOKE序列上的权限
GRANT TABLE
GRANT或REVOKE表、视图或物化视图上的权限
GRANT TYPE
GRANT或REVOKE TYPE上的权限
INSERT TABLE
INSERT INTO表或视图
LOCK TABLE
表或视图上的LOCK TABLE命令
SELECT SEQUENCE
引用序列的CURRVAL或NEXTVAL的任何命令
SELECT TABLE
SELECT FROM表、视图或物化视图
UPDATE TABLE
在表或视图上执行UPDATE
叹气造句
Privilege
按权限来审计,当用户使用了该权限则被审计,如执行grant lect any table to a,当执行了audit lect any table语句后,当用户a 访问了用户b的表时(如lect * from b.t)会用到lect any table权限,故会被审计。注重用户是自己表的所有者,所以用户访问自己的表不会被审计。
用法:审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clau中,而不是在语句中,指定系统权限
Object
腌洋姜按对象审计,只审计on要害字指定对象的相关操作,如aduit alter,delete,drop,inrt on cmy.t by scott; 这里会对cmy用户的t表进行审计,但同时使用了by子句,所以只会对scott用户发起的操作进行审计。注重Oracle没有提供对schema中所有对象的审计功能,只能一个一个对象审计,对于后面创建的对象,Oracle则提供on default子句来实现自动审计,比如执行audit drop on default by access;后, 对于随后创建的对象的drop操作都会审计。但
这个default会对之后创建的所有数据库对象有效,似乎没办法指定只对某个用户创建的对象有效,想比trigger可以对schemaDDL进行审计,这个功能稍显不足。
用法:AUDIT schema_object_clau BY {SESSION | ACCESS} WHENEVER [NOT] SUCCESSFUL;
schema_object_clau指定对象访问的类型以及访问的对象。可以审计特定对象上14种不同的操作类型,下表中列出了这些操作。
对 象 选 项
说    明
ALTER
贺知章简介资料改变表、序列或物化视图
AUDIT
审计任何对象上的命令
COMMENT
添加注释到表、视图或物化视图
DELETE
从表、视图或物化视图中删除行
EXECUTE
执行过程、函数或程序包
FLASHBACK
执行表或视图上的闪回操作
GRANT
授予任何类型对象上的权限
INDEX
创建表或物化视图上的索引
INSERT
将行插入表、视图或物化视图中
LOCK
锁定表、视图或物化视图
READ
对DIRECTORY对象的内容执行读操作
RENAME
重命名表、视图或过程
SELECT
从表、视图、序列或物化视图中选择行
UPDATE
更新表、视图或物化视图
2.4 审计的一些其他选项
by access / by ssion
by access 写字开头的成语每一个被审计的操作都会生成一条audit trail
by ssion 一个会话里面同类型的操作只会生成一条audit trail,默认为by ssion
whenever [not] successful
whenever successful 操作成功(dba_audit_trailreturncode字段为0) 才审计,
whenever not successful 反之。省略该子句的话,不管操作成功与否都会审计。
2.5 和审计相关的视图
dba_audit_trail:保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_ssion,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一个子集。
dba_stmt_audit_opts:可以用来查看statement审计级别的audit options,即数据库设置过哪些statement吴雨婵级别的审计。dba_obj_audit_opts,dba_priv_audit_opts视图功能与之类似
父亲祭文all_def_audit_opts:用来查看数据库用on default子句设置了哪些默认对象审计。
1. SYS.AUD$
审计功能的底层视图,如果需要对数据进行删除,只需要对aud$视图进行删除既可,其他视图里的数据都是由aud$所得.
2. DBA_AUDIT_EXISTS
列出audit not exists和audit exists产生的审计跟踪,我们默认的都是audit exists.
3. DBA_AUDIT_TRAIL
可以在里面查处所有审计所跟踪的信息,保存所有的audit trail,实际上它只是一个基于aud$的视图。其它的视图dba_audit_ssion,dba_audit_object,dba_audit_statement都只是dba_audit_trail的一个子集。

本文发布于:2023-06-30 19:51:44,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/1070795.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:审计   视图   用户   对象
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图