ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 实验-审计

实验-审计

原创 Linux操作系统 作者:to_be_dba 时间:2013-06-23 09:33:20 0 删除 编辑
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
D:\Documents and Settings\tian>sqlplus /nolog
SQL*Plus: Release 10.2.0.1.0 - Production on 星期四 6月 20 09:00:55 2013
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
SQL> conn /as sysdba
已连接。
SQL> show parameter audit;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      D:\ADMIN\TEST\ADUMP
audit_sys_operations                 boolean     FALSE
audit_trail                          string      NONE
SQL> alter system set audit_trail=db scope=spfile;
系统已更改。
SQL> shutdown immediate;
数据库已经关闭。
已经卸载数据库。
ORACLE 例程已经关闭。
SQL> startup
ORACLE 例程已经启动。
Total System Global Area  612368384 bytes
Fixed Size                  1250452 bytes
Variable Size             230689644 bytes
Database Buffers          377487360 bytes
Redo Buffers                2940928 bytes
数据库装载完毕。
数据库已经打开。
SQL> show parameter audit
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      D:\ADMIN\TEST\ADUMP
audit_sys_operations                 boolean     FALSE
audit_trail                          string      DB
SQL> select * from dba_priv_audit_opts;
USER_NAME                      PROXY_NAME                     PRIVILEGE                                SUCCESS    FAILURE
------------------------------ ------------------------------ ---------------------------------------- ---------- ----------
                                                              DELETE ANY TABLE                         BY ACCESS  BY ACCESS
SQL> select * from dba_audit_trail;
OS_USERNAME                                                                      USERNAME                       USERHOST                                                                         TERMINAL                                                                         TIMESTAMP   OWNER                          OBJ_NAME                                                                             ACTION ACTION_NAME                  NEW_OWNER                      NEW_NAME                                                                         OBJ_PRIVILEGE    SYS_PRIVILEGE                            ADMIN_OPTION GRANTEE                        AUDIT_OPTION                             SES_ACTIONS         LOGOFF_TIME LOGOFF_LREAD LOGOFF_PREAD LOGOFF_LWRITE LOGOFF_DLOCK                             COMMENT_TEXT                                                                      SESSIONID    ENTRYID STATEMENTID RETURNCODE PRIV_USED                                CLIENT_ID                                                        ECONTEXT_ID                                                      SESSION_CPU EXTENDED_TIMESTAMP                                                               PROXY_SESSIONID GLOBAL_UID                       INSTANCE_NUMBER OS_PROCESS       TRANSACTIONID           SCN SQL_BIND                                                                         SQL_TEXT
-------------------------------------------------------------------------------- ------------------------------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ----------- ------------------------------ -------------------------------------------------------------------------------- ---------- ---------------------------- ------------------------------ -------------------------------------------------------------------------------- ---------------- ---------------------------------------- ------------ ------------------------------ ---------------------------------------- ------------------- ----------- ------------ ------------ ------------- ---------------------------------------- -------------------------------------------------------------------------------- ---------- ---------- ----------- ---------- ---------------------------------------- ---------------------------------------------------------------- ---------------------------------------------------------------- ----------- -------------------------------------------------------------------------------- --------------- -------------------------------- --------------- ---------------- ---------------- ---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
SQL> audit delete any table by access;
Audit succeeded
SQL> delete from nbs.t;
0 rows deleted
SQL> commit;
Commit complete
SQL> select * from sys.aud$;
 SESSIONID    ENTRYID  STATEMENT TIMESTAMP#  USERID                         USERHOST                                                                         TERMINAL                                                                            ACTION# RETURNCODE OBJ$CREATOR                    OBJ$NAME                                                                         AUTH$PRIVILEGES  AUTH$GRANTEE                   NEW$OWNER                      NEW$NAME                                                                         SES$ACTIONS            SES$TID LOGOFF$LREAD LOGOFF$PREAD LOGOFF$LWRITE LOGOFF$DEAD LOGOFF$TIME COMMENT$TEXT                                                                     CLIENTID                                                         SPARE1                                                                               SPARE2 OBJ$LABEL                                                                        SES$LABEL                                                                         PRIV$USED SESSIONCPU NTIMESTAMP#                                                                       PROXY$SID USER$GUID                         INSTANCE# PROCESS#         XID              AUDITID                                                                 SCN       DBID SQLBIND                                                                          SQLTEXT
---------- ---------- ---------- ----------- ------------------------------ -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------- ---------- ------------------------------ -------------------------------------------------------------------------------- ---------------- ------------------------------ ------------------------------ -------------------------------------------------------------------------------- ------------------- ---------- ------------ ------------ ------------- ----------- ----------- -------------------------------------------------------------------------------- ---------------------------------------------------------------- -------------------------------------------------------------------------------- ---------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ---------- ---------- -------------------------------------------------------------------------------- ---------- -------------------------------- ---------- ---------------- ---------------- ---------------------------------------------------------------- ---------- ---------- -------------------------------------------------------------------------------- --------------------------------------------------------------------------------
     13718          1         27             SCOTT                          WORKGROUP\TIANLEI                                                                TIANLEI                                                                                   7          0 NBS                            T                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 TIANLEI\tian                                                                                                                                                                                                                                                          50            20-6月 -13 01.04.40.812000 上午                                                                                                       0 1268:3032        02002600C5060000                                                                     4009520                                                                                            
SQL> NOAUDIT DELETE ANY TABLE;
Noaudit succeeded
SQL> select * from dba_priv_audit_opts;
USER_NAME                      PROXY_NAME                     PRIVILEGE                                SUCCESS    FAILURE
------------------------------ ------------------------------ ---------------------------------------- ---------- ----------

以上是最简单的权限审计。
开启审计的前提是初始化参数audit_trail 不是NONE。
audit delete any table by access;是对所有使用delete any table权限的语句进行审计。
成功设置后可以从sys.aud$中查看审计到的符合条件的记录信息。
在dba_priv_audit_opts视图中看到我们都设置了哪些审计要求。
当不再需要审计时,执行NOAUDIT ……;将对应的审计选项关闭。
audit、noaudit语句的使用不需要重启数据库,但设置audit_trail需要修复参数文件并重启数据库。
权限审计的几种形式:
AUDIT DELETE ANY TABLE BY ACCESS;--审计所有使用了delete any table权限的语句
AUDIT DELETE ANY TABLE BY ACCESS WHENEVER NOT SUCCESSFUL;--审计所有使用了delete any table权限,未成功执行的语句
AUDIT SELECT TABLE, INSERT TABLE, DELETE TABLE, EXECUTE PROCEDURE BY ACCESS WHENEVER NOT SUCCESSFUL;--审计所有用户增删查表及执行存储过程未成功的语句
禁用权限审计需要audit system系统权限。通常只有安全管理员才有此权限。
 
注意:
1.dba_priv_audit_opts视图中的记录与我们所开启的审计并非一对一的关系。比如执行audit create table by access;将产生两条记录:
CREATE ANY TABLE和CREATE TABLE
2.在我们将audit_trail设置为NONE时,我们仍可以正常执行audit/noaudit语句,只是不生成相关的记录。可以认为就是开启了审计,但不保存跟踪痕迹
3.audit和noaudit是严格对应的。比如我们用audit create table by scott by access开启对scott创建表的审计,如果执行noaudit create table;并不能使审计关闭。比如执行noaudit create table by scott;
4.在删除了所有可以删除的审计策略之后,可能发现有些策略无法用语句取消审计。比如:我的实验中发现不知道如何删除以下选项
CREATE EXTERNAL JOB                      BY ACCESS  BY ACCESS
GRANT ANY OBJECT PRIVILEGE               BY ACCESS  BY ACCESS
EXEMPT ACCESS POLICY                     BY ACCESS  BY ACCESS
GRANT ANY PRIVILEGE                      BY ACCESS  BY ACCESS
DROP ANY PROCEDURE                       BY ACCESS  BY ACCESS
ALTER ANY PROCEDURE                      BY ACCESS  BY ACCESS
GRANT ANY ROLE                           BY ACCESS  BY ACCESS
CREATE PUBLIC DATABASE LINK              BY ACCESS  BY ACCESS
DROP ANY TABLE                           BY ACCESS  BY ACCESS
ALTER ANY TABLE                          BY ACCESS  BY ACCESS
这些在dba_priv_audit_opts视图中存在,最后通过删除sys.audit$中的对应关系将其删除了。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
以下将audit_trail改为xml,extended看看效果:

SQL> show parameter audit;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/admin/testdb/adump
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      DB, EXTENDED

SQL> alter system set audit_trail=XML,EXTENDED scope=spfile;
System altered.
SQL> shutdown abort
ORACLE instance shut down.
SQL> startup open;
ORACLE instance started.
Total System Global Area  405929984 bytes
Fixed Size                  1336848 bytes
Variable Size             318769648 bytes
Database Buffers           79691776 bytes
Redo Buffers                6131712 bytes
Database mounted.
Database opened.
SQL> show parameter audit;
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/admin/testdb/adump
audit_sys_operations                 boolean     TRUE
audit_syslog_level                   string
audit_trail                          string      XML, EXTENDED
SQL> audit create table by scott by access;
Audit succeeded.

SQL> conn scott/scott
Connected.
SQL> create table terry.emp as select * from emp;
Table created
SQL> select sql_text from v$xml_audit_trail;
SQL_TEXT
--------------------------------------------------------------------------------
CONNECT
SELECT DECODE(null,'','Total System Global Area','') NAME_COL_PLUS_SHOW_SGA,   S
ALTER DATABASE   MOUNT
CONNECT
ALTER DATABASE OPEN
SELECT NAME NAME_COL_PLUS_SHOW_PARAM,DECODE(TYPE,1,'boolean',2,'string',3,'integ
audit create table by scott by access
select current_scn from v$database
CONNECT
COMMIT
COMMIT
BEGIN DBMS_OUTPUT.ENABLE(1000000); END;
select lower(user) || '@' || substr( global_name, 1,
decode( dot, 0, length(global_name), dot-1) ) global_name
from (select global_name, instr(global_name,'.') dot from global_name )
BEGIN DBMS_OUTPUT.GET_LINES(:LINES, :NUMLINES); END;
create table terry.dept as select * from dept
create table terry.dept as select * from dept
16 rows selected
scott@TESTDB> exit
Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
[oracle@localhost adump]$ pwd
/u01/admin/testdb/adump
[oracle@localhost adump]$ ll
total 44
-rw-r--r-- 1 oracle oinstall  188 May 13 15:20 adx_testdb.txt
-rw-r----- 1 oracle oinstall 2337 May 13 14:58 testdb_ora_21809_1.aud
-rw-r----- 1 oracle oinstall 1149 May 13 15:10 testdb_ora_21983_1.aud
-rw-r----- 1 oracle oinstall 2997 May 13 15:13 testdb_ora_21984_1.aud
-rw-r----- 1 oracle oinstall 1357 May 13 15:17 testdb_ora_22009_1.aud
-rw-r----- 1 oracle oinstall  720 May 13 15:17 testdb_ora_22018_1.aud
-rw-r----- 1 oracle oinstall  727 May 13 15:17 testdb_ora_22018_2.aud
-rw-r--r-- 1 oracle oinstall 2072 May 13 15:17 testdb_ora_22102_1.xml
-rw-r--r-- 1 oracle oinstall 3154 May 13 15:18 testdb_ora_22123_1.xml
-rw-r--r-- 1 oracle oinstall 3500 May 13 15:19 testdb_ora_22198_1.xml
-rw-r--r-- 1 oracle oinstall 1643 May 13 15:21 testdb_ora_22200_1.xml
可以看到,虽然我们只开启了一个语句审计的策略,但默认每次启动数据库操作都会被记录到审计日志中,而且由于在登录时使用了login.sql脚本,该脚本中的部分操作也被记录下来了。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
细粒度审计一例:
创建对terry.dept的update操作审计。
SQL> BEGIN
  2  DBMS_FGA.ADD_POLICY(
  3  object_schema => 'TERRY',
  4  object_name => 'DEPT',
  5  policy_name => 'chk_terry_dept',
  6  enable => TRUE,
  7  statement_types => 'UPDATE',
  8  audit_trail => DBMS_FGA.DB);
  9  END;
 10  /
PL/SQL procedure successfully completed.
SQL> select * from sys.fga_log$;
no rows selected
SQL> update terry.dept set deptno=50 where deptno=40;
1 row updated.
select obj$schema,obj$name,policyname from sys.fga_log$
  2  ;
OBJ$SCHEMA                     OBJ$NAME         POLICYNAME
------------------------------ ---------------- ----------------------------
TERRY                          DEPT             CHK_TERRY_DEPT
可以看到,即使操作还未提交,也会记录一条审计记录。
找到问题后一定要记得删除审计策略:
SQL> exec DBMS_FGA.DISABLE_POLICY('TERRY','DEPT','chk_terry_dept');
PL/SQL procedure successfully completed.

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26451536/viewspace-764620/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: oracle审计
下一篇: mysql初识(一)
请登录后发表评论 登录
全部评论

注册时间:2011-11-23

  • 博文量
    170
  • 访问量
    484895