Oracle11g安全审计--重要帐号的DDL语句操作记录

8188阅读 0评论2012-10-26 vcdog
分类:Oracle

 
Oracle11g安全审计--重要帐号的DDL语句操作记录
 
 
如果要审计数据库中的DDL操作,那么可以通过DDL触发器来实现,把数据库中的所有DDL操作都记录下来。本例子可以在oracle 9i或更高的版本中使用。
 
第一步,创建表空间和相关的日志表:
 

点击(此处)折叠或打开

  1. create tablespace stat_log
  2. LOGGING
  3. datafile
  4. '/apps/oracle/oradata/statlog.dbf' size 2048m AUTOEXTEND ON NEXT 128M MAXSIZE 8G
  5. EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO;
  6. create table stat$log_ddl
  7. (
  8. ddl_date date,
  9. user_name varchar2(30),
  10. ip_addr VARCHAR2(30),
  11. obj_name VARCHAR2(50),
  12. ddl_type VARCHAR2(30),
  13. object_type VARCHAR2(18),
  14. owner VARCHAR2(30),
  15. SQL_TEXT VARCHAR2(1000)
  16. ) TABLESPACE STA_TLOG;

 
第二步,创建数据库级的DDL触发器,把所有的DDL操作都记录下来

点击(此处)折叠或打开

  1. CREATE OR REPLACE TRIGGER DDL_audit AFTER CREATE OR ALTER OR DROP OR TRUNCATE OR
  2. GRANT OR REVOKE OR RENAME
  3. on DATABASE
  4. declare
  5. ipaddr varchar2(20);
  6. STEXT VARCHAR2(1000);
  7. BEGIN
  8. begin
  9. select sys_context('USERENV', 'IP_ADDRESS') into ipaddr FROM dual;
  10. exception when others then
  11. ipaddr:='-';
  12. end;
  13. begin
  14. select SQL_TEXT INTO STEXT FROM v$open_cursor WHERE UPPER(sql_text) LIKE 'ALTER%';
  15. exception when others then
  16. STEXT:='-';
  17. end;
  18. insert into sys.stat$log_DDL values
  19. (sysdate,
  20. user,
  21. nvl (ipaddr,'-'),
  22. NVL(ora_dict_obj_name,'-'),
  23. NVL(ORA_SYSEVENT,'-'),
  24. NVL(ora_dict_obj_type,'-'),
  25. NVL(ora_dict_obj_owner,'-'),
  26. STEXT
  27. );
  28. exception when others then
  29. null;
  30. END;
  31. /


审计记录效果如下:

点击(此处)折叠或打开

  1. SQL> select ddl_date,user_name,ip_addr,obj_name,ddl_type,sql_text from stat$log_ddl;
  2. DDL_DATE USER_NAME IP_ADDR OBJ_NAME DDL_TYPE SQL_TEXT
  3. ------------------- ---------- -------------------- ---------- ---------- --------------------------------------------------
  4. 2012-10-25 23:31:40 DBA_USER - T1 CREATE -
  5. 2012-10-25 23:32:32 DBA_USER - N_TEST DROP -
  6. 2012-10-25 23:36:04 DBA_USER 172.18.130.114 T1 DROP -
  7. 2012-10-25 23:42:49 DBA_USER 172.18.130.114 TEST ALTER alter table test drop(name)
  8. 2012-10-25 23:43:08 DBA_USER 172.18.130.114 TEST ALTER alter table test add(name varchar2(20))
  9. 2012-10-25 23:44:10 DBA_USER 172.18.130.114 TEST ALTER alter table test rename to test01
  10. 2012-10-25 23:44:44 DBA_USER 172.18.130.114 TEST01 RENAME -
  11. 2012-10-25 23:51:31 DBA_USER 172.18.130.114 TEST ALTER alter table test add(addr varchar2(10))
  12. 2012-10-25 23:52:12 DBA_USER 172.18.130.114 TEST ALTER alter table test rename column addr to ipaddr
  13. 2012-10-26 00:22:10 DBA_USER 172.18.130.114 BYTE_TEST TRUNCATE -

上一篇:利用SQL*PLUS导出成EXCEL和html的功能实现报表统计
下一篇:oracle11g数据库安全加固须谨慎