数据库审计
查看数据库审计是否打开
SQL> show parameter audit;
NAME                                TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /oracle/app/oracle/admin/PTBCS/adump
audit_sys_operations                boolean    FALSE
audit_syslog_level                  string     
audit_trail                          string      DB_EXTENDED
audit_sys_operations:默认为false,当设置为true时,所有sys(包括以sysdba,sysopr身份登录的用户)操作都会被记录,但记录不会被写在aud$表中。如果为windows平台,会记录在wi
ndows事件管理当中。
audit_trail
none为默认值,11G之后默认值为‘db’,如果默认值为none,那么不做审计
DB:将audit trail 记录在数据库审计相关的表中,审计只有连接信息
DB_EXTENDED:这样审计还包含当时的执行的具体语句
OS:将audit trail记录在系统文件中,文件名有audit_file_dest参数指定
修改语句为SQL> alter system set audit_trail='db_extended' scope=spfile;
注:参数audit_trail不是动态,为了使此参数中的改动生效,必须关闭数据库并重新启动。在对sys.aud$进行审计时,还需要监控该表的大小,以免影响system表空间中其他对象的空间需求
推荐周期性归档sys.aud$中的行,并截取该表。
目前采用计划任务,每日删除上月数据,只保留当月数据。
Audit_file_dest:audit_trail=os时,文件位置。
语句审计
SQL> audit on table by access;
每次动作发生时都对其进行审计
SQL> audit on table by session;
只审计一次,默认为by session
有时希望审计成功的动作:没有生成错误消息的语句。对于这些语句,添加whenever successful。而有时只关心使用审计语句的命令是否失败,失败原因是权限违犯、用完表空间中的空间还是语法错误。对于这些情况,使用 whenever not successful。
对于大多数类别的审计方法,如果确实希望审计所有类型的表访问或某个用户的任何权限,则可以指定all而不是单个的语句类型或对象。
SQL> audit alter system ;
所有ALTER SYSTEM选项,例如,动态改变实例参数,切换到下一个日志文件组,以及终止用户会话
SQL> audit cluster;
CREATE、ALTER、DROP或TRUNCATE集
SQL> audit context;
CREATE CONTEXT或DROP CONTEXT;
SQL> audit database link;
CREATE或DROP数据库链接;
SQL> audit dimension;
CREATE、ALTER或DROP维数
SQL> audit directory;
CREATE或DROP目录;
SQL> audit index;
CREATE、ALTER或DROP索引
SQL> audit materialized view;drop table if exists admin
CREATE、ALTER或DROP物化视图
SQL> audit not exists;
由于不存在的引用对象而造成的SQL语句的失败;
SQL> audit procedure;
CREATE或DROP FUNCTION、LIBRARY、PACKAGE、PACKAGE BODY或PROCEDURE
SQL> audit profile;
CREATE、ALTER或DROP配置文件
SQL> audit public database link;
CREATE或DROP公有数据库链接
SQL> audit public synonym;
CREATE或DROP公有同义词
SQL> audit role;
CREATE、ALTER、DROP或SET角
SQL> audit rollback segment;
CREATE、ALTER或DROP回滚段
SQL> audit sequence;
CREATE或DROP序列
SQL> audit session;
登录和退出
SQL> audit system audit;
系统权限的AUDIT或NOAUDIT
SQL> audit system grant;
GRANT或REVOKE系统权限和角
SQL> audit table;
CREATE、DROP或TRUNCATE表
SQL> audit tablespace;
CREATE、ALTER或DROP表空间
SQL> audit trigger;
CREATE、ALTER(启用/禁用)、DROP触发器;具有ENABLE ALL TRIGGERS或DISABLE ALL TRIGGERS的ALTER TABLE
SQL> audit type;
CREATE、ALTER和DROP类型以及类型主体
SQL> audit user;
CREATE、ALTER或DROP用户
SQL> audit view;
CREATE或DROP视图
显式指定的语句类型
SQL> audit alter sequence;
任何ALTER SEQUENCE命令
SQL> audit alter table;
任何ALTER TABLE命令
SQL> audit comment table;
添加注释到表、视图、物化视图或它们中的任何列
SQL> audit delete table;
删除表或视图中的行
SQL> audit execute procedure;
执行程序包中的过程、函数或任何变量或游标
SQL> audit grant directory;
GRANT或REVOKE DIRECTORY对象上的权限
SQL> audit grant procedure;
GRANT或REVOKE过程、函数或程序包上的权限
SQL> audit grant sequence;
GRANT或REVOKE序列上的权限
SQL> audit grant table;
GRANT或REVOKE表、视图或物化视图上的权限
SQL> audit grant type;
GRANT或REVOKE TYPE上的权限
SQL> audit insert table;
INSERT INTO表或视图
SQL> audit lock table;
表或视图上的LOCK TABLE命令
SQL> audit select sequence;
引用序列的CURRVAL或NEXTVAL的任何命令
SQL> audit select table;
SELECT FROM表、视图或物化视图
SQL> audit update table;
在表或视图上执行UPDATE
SQL> select username,to_char(timestamp,'MM/DD/YY HH24:MI') timestamp
  2  OBJ_NAME,ACTION_NAME,SQL_TEXT FROM DBA_AUDIT_TRAIL
  3  WHERE USERNAME = 'SCOTT';
我用的基本查询审计信息,显示结果如下
scott    08/12/07 17:15  JOB_TITLE_IDX  CREATE INDEX    create index hr.
job_title_idx on
hr.jobs(job_title)

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