数据库审计查看数据库审计是否打开SQLshowparameteraudit;NAMETYPEVALUE-----------------------------------------------------------------------------audit_file_deststring/oracle/app/oracle/admin/PTBCS/adumpaudit_sys_operationsbooleanFALSEaudit_syslog_levelstringaudit_trailstringDB_EXTENDEDaudit_sys_operations:默认为false,当设置为true时,所有sys(包括以sysdba,sysopr身份登录的用户)操作都会被记录,但记录不会被写在aud$表中。如果为windows平台,会记录在windows事件管理当中。audit_trail:none为默认值,11G之后默认值为‘db’,如果默认值为none,那么不做审计DB:将audittrail记录在数据库审计相关的表中,审计只有连接信息DB_EXTENDED:这样审计还包含当时的执行的具体语句OS:将audittrail记录在系统文件中,文件名有audit_file_dest参数指定修改语句为SQLaltersystemsetaudit_trail='db_extended'scope=spfile;注:参数audit_trail不是动态,为了使此参数中的改动生效,必须关闭数据库并重新启动。在对sys.aud$进行审计时,还需要监控该表的大小,以免影响system表空间中其他对象的空间需求。推荐周期性归档sys.aud$中的行,并截取该表。目前采用计划任务,每日删除上月数据,只保留当月数据。Audit_file_dest:audit_trail=os时,文件位置。语句审计SQLauditontablebyaccess;每次动作发生时都对其进行审计SQLauditontablebysession;只审计一次,默认为bysession有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加wheneversuccessful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用whenevernotsuccessful。对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。SQLauditaltersystem;所有ALTERSYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话SQLauditcluster;CREATE、ALTER、DROP或TRUNCATE集群SQLauditcontext;CREATECONTEXT或DROPCONTEXT;SQLauditdatabaselink;CREATE或DROP数据库链接;SQLauditdimension;CREATE、ALTER或DROP维数SQLauditdirectory;CREATE或DROP目录;SQLauditindex;CREATE、ALTER或DROP索引SQLauditmaterializedview;CREATE、ALTER或DROP物化视图SQLauditnotexists;由于不存在的引用对象而造成的SQL语句的失败;SQLauditprocedure;CREATE或DROPFUNCTION、LIBRARY、PACKAGE、PACKAGEBODY或PROCEDURESQLauditprofile;CREATE、ALTER或DROP配置文件SQLauditpublicdatabaselink;CREATE或DROP公有数据库链接SQLauditpublicsynonym;CREATE或DROP公有同义词SQLauditrole;CREATE、ALTER、DROP或SET角色SQLauditrollbacksegment;CREATE、ALTER或DROP回滚段SQLauditsequence;CREATE或DROP序列SQLauditsession;登录和退出SQLauditsystemaudit;系统权限的AUDIT或NOAUDITSQLauditsystemgrant;GRANT或REVOKE系统权限和角色SQLaudittable;CREATE、DROP或TRUNCATE表SQLaudittablespace;CREATE、ALTER或DROP表空间SQLaudittrigger;CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLEALLTRIGGERS或DISABLEALLTRIGGERS的ALTERTABLESQLaudittype;CREATE、ALTER和DROP类型以及类型主体SQLaudituser;CREATE、ALTER或DROP用户SQLauditview;CREATE或DROP视图显式指定的语句类型SQLauditaltersequence;任何ALTERSEQUENCE命令SQLauditaltertable;任何ALTERTABLE命令SQLauditcommenttable;添加注释到表、视图、物化视图或它们中的任何列SQLauditdeletetable;删除表或视图中的行SQLauditexecuteprocedure;执行程序包中的过程、函数或任何变量或游标SQLauditgrantdirectory;GRANT或REVOKEDIRECTORY对象上的权限SQLauditgrantprocedure;GRANT或REVOKE过程、函数或程序包上的权限SQLauditgrantsequence;GRANT或REVOKE序列上的权限SQLauditgranttable;GRANT或REVOKE表、视图或物化视图上的权限SQLauditgranttype;GRANT或REVOKETYPE上的权限SQLauditinserttable;INSERTINTO表或视图SQLauditlocktable;表或视图上的LOCKTABLE命令SQLauditselectsequence;引用序列的CURRVAL或NEXTVAL的任何命令SQLauditselecttable;SELECTFROM表、视图或物化视图SQLauditupdatetable;在表或视图上执行UPDATESQLselectusername,to_char(timestamp,'MM/DD/YYHH24:MI')timestamp2OBJ_NAME,ACTION_NAME,SQL_TEXTFROMDBA_AUDIT_TRAIL3WHEREUSERNAME='SCOTT';我用的基本查询审计信息,显示结果如下scott08/12/0717:15JOB_TITLE_IDXCREATEINDEXcreateindexhr.job_title_idxonhr.jobs(job_title)1rowselected.权限审计审计系统权限具有与语句审计相同的基本语法,但审计系统权限是在sql_statement_clause中,而不是在语句中,指定系统权限。SQLauditaltertablespacebyaccesswheneversuccessful;使用SYSDBA和SYSOPER权限或者以SYS用户连接到数据库的系统管理员可以利用特殊的审计。为了启用这种额外的审计级别,可以设置初始参数AUDIT_SYS_OPERATIONS为TRUE。这种审计记录发送到与操作系统审计记录相同的位置。因此,这个位置是和操作系统相关的。当使用其中一种权限时执行的所有SQL语句,以及作为用户SYS执行的任何SQL语句,都会发送到操作系统审计位置。模式对象审计SQLauditalteronTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;改变表、序列或物化视图SQLauditAUDITonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;审计任何对象上的命令SQLauditCOMMENTonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;添加注释到表、视图或物化视图SQLauditDELETEonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;从表、视图或物化视图中删除行SQLauditEXECUTEonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;执行过程、函数或程序包SQLauditFLASHBACKonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;执行表或视图上的闪回操作SQLauditGRANTonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;授予任何类型对象上的权限SQLauditINDEXonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;创建表或物化视图上的索引SQLauditINSERTonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;将行插入表、视图或物化视图中SQLauditLOCKonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;锁定表、视图或物化视图SQLauditREADonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;对DIRECTORY对象的内容执行读操作SQLauditRENAMEonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;重命名表、视图或过程SQLauditSELECTonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;从表、视图、序列或物化视图中选择行SQLauditUPDATEonTEST_DR.TESTBYACCESSWHENEVERSUCCESSFUL;更新表、视图或物化视图细粒度审计称为FGA,审计变得更为关注某个方面,并且更为精确。由称为DBMS_FGA的PL/SQL程序包实现FGA。使用标准的审计,可以轻松发现访问了哪些对象以及由谁访问,但无法知道访问了哪些行或列。细粒度的审计可解决这个问题,它不仅为需要访问的行指定谓词(或where子句),还指定了表中访问的列。通过只在访问某些行和列时审计对表的访问,可以极大地减少审计表条目的数量。例如:用户TAMARA通常每天访问HR.EMPLOYEES表,查找雇员的电子邮件地址。系统管理员怀疑TAMARA正在查看经理们的薪水信息,因此他们建立一个FGA策略,用于审计任何经理对SALARY列的任何访问:begindbms_fga.add_policy(object_schema='HR',object_name='EMPLOYEES',policy_name='SAL_SELECT_AUDIT',audit_condition='instr(job_id,''_MAN'')0',audit_column='SALARY');end;ADD_POLICY添加使用谓词和审计列的审计策略DROP_POLICY删除审计策略DISABLE_POLICY禁用审计策略,但保留与表或视图关联的策略ENABLE_POLICY启用策略与审计相关的数据字典视图数据字典视图说明AUDIT_ACTIONS包含审计跟踪动作类型代码的描述,例如INSERT、DROPVIEW、DELETE、LOGON和LOCKDBA_AUDIT_OBJECT与数据库中对象相关的审计跟踪记录DBA_AUDIT_POLI