by access对每个session中发生的每次操作都记录,而不管是否重复都记录
数据库初始化参数文件中AUDIT_TRAIL=OS时,审计记录存在操作系统的文件中,AUDIT_TRAIL=DB时,审计记录存在数据库中。[@more@]
作为DBA应该知道有那些用户或那些操作是影响数据库安全性,要知道这些起码要查看某一段时间数据库的所有操作,然后分析这些操作有那些是有隐患的、危险的,要达到这个目的必须应用数据库审计功能
....................
数据库审计可以记录对数据库对象的所有操作,什么时候、什么用户对什么对象进行了什么类型的操作。但8i之前AUDIT是无法知道用户是用什么SQL去操作对象,不过10g开始可以看到具体的SQL语句
1、启动数据库审计功能
要启动数据库的审计功能,必须设置初始化参数audit_trial=TRUE/DB/OS,设置好参数后,要重启数据库才能使审计生效
--TRUE/DB表示审计的信息保存在数据库SYS.AUD$表中
--OS表示审计信息保存在操作系统由audit_file_dest参数指定的路径中
2、开始某些权限审计
审计可以按by session或by access来记录,也可以按whenever successful或whenever not successful来记录
--by session对每个session中发生的重复操作只记录一次
--by access对每个session中发生的每次操作都记录,而不管是否重复都记录
--whenever successful表示操作成功以后才记录下来
--whenever not successful表示操作失败后才记录下来
例:
--审计AP用户的AP_INVOICES_ALL表上的所有的UPDATE、INSERT语句
audit update,insert on ap.ap_invoices_all
--审计AP用户的AP_INVOICES_ALL表上的UPDATE、INSERT语句,只记录成功的
audit update,insert on ap.ap_invoices_all whenever successful
--审计AP用户的AP_INVOICES_ALL表上的UPDATE、INSERT语句,只记录不成功的
audit update,insert on ap.ap_invoices_all whenever not successful
--审计用delete any table进行的操作
audit delete any table by access
--审计用delete any table进行的操作,每个SESSION对同一个表的操作只记录一次
audit delete any table by session
--审计数据库的每个成功/不成功的连接/断开
audit session
--审计scott和dbsnmp用户的数据库连接/断开
audit session by scott,dbsnmp
--审计执行select table,insert table,delete table,execute procedure不成功的操作
audit select table,insert table,delete table,execute procedure
by access
whenever not successful
3、查看/清除审计信息
如果audit_trial=DB,审计信息是保存sys.aud$表中的,用下面SQL查看审计信息
select *from sys.aud$
select *from dba_audit_trail
这时候如果想清除审计信息,可以直接删除sys.aud$表的记录就行了
truncate table sys.aud$
4、取消某些权限审计
如果不想再审计某个操作,可以用NOAUDIT来取消它,对应第2步的AUDIT,取消某个审计后,以后这个操作就不会审计记录下来,但其他的未被取消的操作,还是会被记录的。NOAUDIT取消审计是针对某个操作;关闭数据库审计是针对整个数据库,两者不一样
例:
--取消在AP用户的AP_INVOICES_ALL表上的UPDATE、INSERT语句的审计
noaudit update,insert on ap.ap_invoices_all
--取消对AP用户的AP_INVOICES_ALL表的审计
noaudit all on ap.ap_invocies_all
--取消用户scott和dbsnmp的数据库连接/断开审计
noaudit session by scott,dbsnmp
--取消DELETE ANY TABLE操作的审计
noaudit delete any table
--取消SELECT/INSERT/DELETE TABLE,EXECUTE PROCEDURE操作的审计
noaudit select table,insert table,delete table,execute procedure
--取消所有声明的审计
noaudit all
--取消所有系统权限的审计
noaudit all privileges
5、关闭数据库审计功能
设置初始化参数audit_trial=false或从初始化文件中去掉audit_trial参数就行了
参考链接http://oraclesvca2.oracle.com/docs/cd/A87860_01/
doc/server.817/a76956/audit.htm
里面有这样一段话描述ORACLE审计可以分三层
-----------
Oracle allows you to set audit options at three levels:
Statement
Audits on the type of SQL statement used, such as any SQL statement on a table (which records each CREATE,
TRUNCATE, and DROP TABLE statement)
Privilege
Audits use of a particular system privilege, such as CREATE TABLE
Object
Audits specific statements on specific objects, such as ALTER TABLE on the EMP table
-----------
这三层审计分别对应的视图是
dba_stmt_audit_opts
dba_priv_audit_opts
dba_obj_audit_opts
其他相关数据字典有
sys.aud$
dba_audit_exists
dba_audit_object
dba_audit_session
dba_audit_statement
dba_audit_trail
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/248644/viewspace-929362/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/248644/viewspace-929362/