DM7審計之語句序列審計

eric0435發表於2020-06-06

審計機制是DM資料庫管理系統安全管理的重要組成部分之一。DM資料庫除了提供資料安全保護措施外,還提供對日常事件的事後審計監督。DM具有一個靈活的審計子系統,可以透過它來記錄系統級事件、個別使用者的行為以及對資料庫物件的訪問。透過考察、跟蹤審計資訊,資料庫審計員可以檢視使用者訪問的形式以及曾試圖對該系統進行的操作,從而採取積極、有效的應對措施。


審計開關

在DM系統中,專門為審計設定了開關,要使用審計功能首先要開啟審計開關。審計開關由DM的INI引數ENABLE_AUDIT控制,有三種取值:

0:關閉審計

1:開啟普通審計

2:開啟普通審計和實時審計

在普通版本中,ENABLE_AUDIT的預設值為0;在安全版本中,ENABLE_AUDIT的預設值為2。


審計開關必須由具有DBA許可權的管理員進行設定。


系統管理員可透過查詢V$PARAMETER動態檢視查詢ENABLE_AUDIT的當前值。


SQL> select * from v$parameter where name='ENABLE_AUDIT';


LINEID     ID          NAME         TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION

---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------

1          385         ENABLE_AUDIT SYS  0     0         0          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit


used time: 8.170(ms). Execute id is 24948.


SQL> sp_set_para_value(1,'ENABLE_AUDIT',2);

DMSQL executed successfully

used time: 80.901(ms). Execute id is 24968.

SQL> select * from v$parameter where name='ENABLE_AUDIT';


LINEID     ID          NAME         TYPE VALUE SYS_VALUE FILE_VALUE DESCRIPTION

---------- ----------- ------------ ---- ----- --------- ---------- ---------------------------------------------------------------------------------------

1          385         ENABLE_AUDIT SYS  2     2         2          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit


used time: 6.829(ms). Execute id is 24969.

SQL> select * from v$dm_ini where para_name='ENABLE_AUDIT';


LINEID     PARA_NAME    PARA_VALUE MIN_VALUE MAX_VALUE MPP_CHK SESS_VALUE FILE_VALUE DESCRIPTION                                                                             PARA_TYPE

---------- ------------ ---------- --------- --------- ------- ---------- ---------- --------------------------------------------------------------------------------------- ---------

1          ENABLE_AUDIT 2          0         2         N       2          2          Flag For Allowing Audit, 0: no audit 1: normal audit  2:normal audit and realtime audit SYS


used time: 7.090(ms). Execute id is 24970.

SQL>

也可以透過使用客戶端工具Console或呼叫系統過程SP_SET_PARA_VALUE重新設定ENABLE_AUDIT的值,ENABLE_AUDIT為動態INI引數。


審計的設定與取消

資料庫審計員指定被審計物件的活動稱為審計設定,只有具有AUDIT DATABASE許可權的審計員才能進行審計設定。DM提供審計設定系統過程來實現這種設定,被審計的物件可以是某類操作,也可以是某些使用者在資料庫中的全部行蹤。只有預先設定的操作和使用者才能被DM系統自動進行審計。


DM允許在三個級別上進行審計設定

系統級:系統的啟動與關閉,此級別的審計無法也無需由使用者進行設定,只要審計開關開啟就會自動生成對應審計記錄

語句級:導致影響特定型別資料庫物件的特殊SQL或語句組的審計。如AUDIT TABLE 將審計CREATE TABLE、ALTER TABLE和DROP TABLE等語句

物件級:審計作用在特殊物件上的語句。如test表上的INSERT語句


審計設定存放於DM字典表SYSAUDIT中,進行一次審計設定就在SYSAUDIT中增加一條對應的記錄,取消審計則刪除SYSAUDIT中相應的記錄。


語句序列審計

DM還提供了語句序列審計功能,作為語句級審計和物件級審計的補充。語句序列審計需要審計員預先建立一個審計規則,包含N條SQL語句(SQL1,SQL2……),如果某個會話依次執行了這些SQL語句,就會觸發審計。


建立語句序列審計規則的過程包括下面三個系統過程。


VOID

SP_AUDIT_SQLSEQ_START(

NAME VARCHAR (128)


VOID

SP_AUDIT_SQLSEQ_ADD(

NAME VARCHAR (128),

SQL VARCHAR (8188)

)


VOID

SP_AUDIT_SQLSEQ_END(

NAME VARCHAR (128)

)


引數說明:

NAME 語句序列審計規則名

SQL 需要審計的語句序列中的SQL語句

使用說明:

建立語句序列審計規則需要先呼叫SP_AUDIT_SQLSEQ_START,之後呼叫若干次SP_AUDIT_SQLSEQ_ADD,每次加入一條SQL語句,審計規則中的SQL語句順序根據加入SQL語句的順序確定,最後呼叫SP_AUDIT_SQLSEQ_END完成規則的建立。


例如,建立一個語句序列審計規則audit_sql1。


SQL> sp_audit_sqlseq_start('audit_sql1');

DMSQL executed successfully

used time: 0.901(ms). Execute id is 25115.

SQL> sp_audit_sqlseq_add('audit_sql1','select c2 from t1;');

DMSQL executed successfully

used time: 0.698(ms). Execute id is 25117.

SQL> sp_audit_sqlseq_add('audit_sql1','select c1 from t2;');

DMSQL executed successfully

used time: 0.709(ms). Execute id is 25118.

SQL> sp_audit_sqlseq_add('audit_sql1','select * from t3;');

DMSQL executed successfully

used time: 0.814(ms). Execute id is 25119.

SQL> sp_audit_sqlseq_end('audit_sql1');

DMSQL executed successfully

used time: 32.279(ms). Execute id is 25120.

在別一個會話執行語句


SQL> select * from t1;

DMSQL executed successfully

used time: 0.814(ms). Execute id is 5119.


SQL> select * from t2;

DMSQL executed successfully

used time: 0.814(ms). Execute id is 5120.


SQL> select * from t3;

DMSQL executed successfully

used time: 0.814(ms). Execute id is 5121.

查詢審計記錄


SQL> select * from v$auditrecords;


LINEID     USERID      USERNAME ROLEID      ROLENAME IP               SCHID       SCHNAME OBJID       OBJNAME OPERATION    SUCC_FLAG SQL_TEXT                                                                                             DESCRIBTION                 OPTIME                      MAC                 

---------- ----------- -------- ----------- -------- ---------------- ----------- ------- ----------- ------- ------------ --------- ---------------------------------------------------------------------------------------------------- --------------------------- --------------------------  -------------------

1          50331649    SYSDBA   67108864    DBA      ::ffff:127.0.0.1 -1                  -1                  DROP TABLE   Y         drop table cs purge;                                                                                                             2020-05-27 19:28:06.000000  00:00:00:00:00:00


2          50331649    SYSDBA   67108864    DBA      ::ffff:127.0.0.1 -1                  -1                  CREATE TABLE Y         create table cs(id int,name varchar(20));                                                                                        2020-05-27 19:28:19.000000  00:00:00:00:00:00


3          50331649    SYSDBA   67108864    DBA      ::ffff:127.0.0.1 -1                  -1                  CREATE USER  Y         create user cs2 identified by ******;                                                                                            2020-05-27 19:32:18.000000  00:00:00:00:00:00


4          50331750    JY       67108864    DBA      ::ffff:127.0.0.1 150995951   JY      1454        T1      UPDATE       Y         update t1 set c2='WY' where c1=2;                                                                                                2020-05-27 19:36:39.000000  00:00:00:00:00:00


5          50331750    JY       67108864    DBA      ::ffff:127.0.0.1 150995951   JY      1454        T1      DELETE       Y         delete from t1;                                                                                                                  2020-05-27 19:37:08.000000  00:00:00:00:00:00


6          50331649    SYSDBA   67108864    DBA      ::ffff:127.0.0.1 150995945   PERSON  1254        ADDRESS INSERT       Y         insert into person.address values('常德武陵區武陵大道938號',null,'德武陵區','415700',10);                                        2020-05-27 19:58:29.000000  00:00:00:00:00:00


7          50331649    SYSDBA   -1                   ::ffff:127.0.0.1 -1                  -1                  SQL SEQ      Y         select name from t1; select id from t2; select * from t3;                                             audit_sql1                 2020-05-27 20:14:44.000000  00:00:00:00:00:00



7 rows got


used time: 1.013(ms). Execute id is 25133.

可使用下面的系統過程刪除指定的語句序列審計規則。


VOID

SP_AUDIT_SQLSEQ_DEL(

NAME VARCHAR (128)

引數說明:

NAME 語句序列審計規則名

例如,刪除語句序列審計規則AUDIT_SQL1。


SQL> sp_audit_sqlseq_del('audit_sql1');

DMSQL executed successfully

used time: 26.854(ms). Execute id is 25137.


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26015009/viewspace-2696651/,如需轉載,請註明出處,否則將追究法律責任。

相關文章