学习Oracle的审计(Auditing)
审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$ 表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(audit_file_dest参数决定)。默认情况下审计是没有开启的。 1、审计的类型有四种:
2、相关参数: AUDIT_TRAIL参数 这参数决定数据库审计的开启和关闭。可以被赋与如下值
AUDIT_FILE_DEST参数 如果AUDIT_TRAIL=OS,则审计记录的文件,存放在AUDIT_FILE_DEST指定的目录中。 AUDIT_SYS_OPERATIONS参数 指定是否启用对SYS用户的审计。默认为FALSE,启用设置为TRUE。记录不存放在AUD$中,而是记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。 3、启用和停用数据库审计 使用ALTER SYSTEM语句设置AUDIT_TRAIL参数,这个参数不可在线修改,修改后需重库数据库实例生效。例句如下: ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE; 停用数据库审计使用如下语句,重启数据库生效 ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE; 4、启用和停止审计功能的语法: 1)启用审计使用AUDIT语句 2)停止审计功能 要停用审计功能把上面的AUDIT改为NOAUDIT。 在启用审计功能前,必须先设置AUDIT_TRAIL参数为非NONE,否则数据库不会进行审计。 5、使用审计功能的示例 启用数据库审计 sys@TEST>altersystemsetaudit_trail=DBscope=spfile; Systemaltered. 1)Statement Auditing(语句审计) 审计由SCOTT用户发出的所有SELECT TABLE sys@TEST>auditselecttablebyscott; Auditsucceeded. sys@TEST>select*fromdba_stmt_audit_opts; USER_NAME PROXY_NAME AUDIT_OPTION SUCCESS FAILURE ------------------------------------------------------------------------------------------------------------------------------------------------------ SCOTT SELECTTABLE BYSESSION BYSESSION scott@TEST>selectcount(*)fromemp; COUNT(*) ---------- 14 sys@TEST>selecttimestamp,sql_textfromdba_audit_trail; TIMESTAMP SQL_TEXT --------------------------------------------------------------------------------------------------- 2017-04-2423:07:47selectcount(*)fromemp 2)Privilege Auditing(权限审计) 审计所有系统权限 sys@TEST>auditallprivileges; Auditsucceeded. sys@TEST>select*fromdba_priv_audit_opts; USER_NAME PROXY_NAME PRIVILEGE SUCCESS FAILURE ------------------------------------------------------------------------------------------------------------------------------------------------------ FLASHBACKARCHIVEADMINISTERBYACCESS BYACCESS CREATESESSIONBYACCESS BYACCESS ...... [oracle@rhel6~]$sqlplusscott/tiger ...... sys@TEST>selectusername,timestamp,priv_usedfromdba_audit_trailwherepriv_usedisnotnull; USERNAME TIMESTAMP PRIV_USED ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SCOTT 2017-04-2423:18:02CREATESESSION 3)Schema Object Auditing(对象审计) 审计对SCOTT.EMP表的select操作 sys@TEST>auditselectonscott.emp; Auditsucceeded. sys@TEST>select*fromdba_obj_audit_opts; OWNER OBJECT_NAMOBJECT_TYPE ALTAUD COMDELGRAIND INSLOCRENSEL UPDREFEXECRE REAWRIFBK --------------------------------------------------------------------------------------------------------------------------------------- SCOTT EMP TABLE -/--/- -/--/--/--/- -/--/--/-S/S -/--/--/--/- -/--/--/- scott@TEST>selectenamefromemp; ENAME ------------------------------ SMITH ALLEN ...... sys@TEST>selecttimestamp,sql_textfromdba_audit_trail; TIMESTAMP SQL_TEXT --------------------------------------------------------------------------------------------------- 2017-04-2423:24:28selectenamefromemp AUD$位于SYSTEM表空间,基于Oracle的稳定性及性能考虑,可以将审计相关的表移动到其他表空间。 alter table audit$ move tablespace <tablespace_name>; 官方文档:http://docs.oracle.com/cd/B19306_01/network.102/b14266/auditing.htm#CHDJBDHJ http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073 参考:http://blog.itpub.net/9399028/viewspace-712457/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |