我們在操作數據庫的時候,知道SYS用戶的權限是最大的幹什麼事很方便,同時帶來的問題就是非常危險,沒有人可以束縛住。因此我們有時需要對SYS用戶進行審計
SYS@LEO1>show parameter audit
NAME TYPE VALUE
----------------------------------------------- ------------------------------
audit_file_dest string /u02/app/oracle/admin/LEO1/adump
audit_sys_operations boolean FALSE 默認SYS用戶審計是關閉的,這個參數是開啓審計SYS用戶所有SQL語句
audit_syslog_level string 默認是關閉的,這個參數指出SYS用戶審計日誌的存放位置
audit_trail string DB
SYS@LEO1>alter system setaudit_sys_operations=true scope=spfile; 打開SYS用戶審計
System altered.
SYS@LEO1>alter system setaudit_syslog_level='user.notice' scope=spfile; 用戶日誌
System altered.
SYS@LEO1>startup force 重啓數據庫使靜態參數生效
ORACLE instance started.
Total System Global Area 471830528 bytes
Fixed Size 2214456 bytes
Variable Size 285214152 bytes
Database Buffers 176160768 bytes
Redo Buffers 8241152 bytes
Database mounted.
Database opened.
SYS@LEO1>show parameter audit
NAME TYPE VALUE
----------------------------------------------- ------------------------------
audit_file_dest string /u02/app/oracle/admin/LEO1/adump
audit_sys_operations boolean TRUE 審計啓動
audit_syslog_level string USER.NOTICE
audit_trail string DB
設置sys用戶審計日誌輸出位置,Linux 中syslog.conf文件配置了各種類型日誌的輸出位置和消息源
我們只需要將Oracle日誌輸出配置信息添加到該文件中就可以了
[root@leonarding1 log]# vi /etc/syslog.conf
添加如下信息
# About Oracle SysLog
user.notice /var/log/oracle_dbms
添加完之後,我們還要重新加載一下配置信息,syslog.conf文件生效
[root@leonarding1 log]# ps -ef | grepsyslogd
root 2385 1 0 Jun14 ? 00:00:01 syslogd -m 0
root 29740 29502 0 17:25 pts/1 00:00:00 grep syslogd
[root@leonarding1 log]# kill -HUP 2385 重新加載
Ok,操作系統的配置內容完成了。
下面我們來演示一下SYS用戶的審計
SYS@LEO1>create table test as select *from dba_objects; 我們創建一個表
Table created.
SYS@LEO1>drop table test purge; 再刪除一個表
Table dropped.
好了,SYS用戶操作做完了,我們來看看oracle_dbms審計日誌中有沒有抓取到SQL語句
[root@leonarding1 log]# cat oracle_dbms
Jun 15 18:08:40 leonarding1 OracleAudit[29903]: LENGTH : '199' ACTION :[46] 'create tabletest as select * from dba_objects' DATABASE USER:[1] '/' PRIVILEGE :[6]'SYSDBA' CLIENT USER:[6] 'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0'DBID:[10] '1692458681'
Jun 15 18:08:49 leonarding1 OracleAudit[29903]: LENGTH : '174' ACTION :[21] 'drop tabletest purge' DATABASE USER:[1] '/' PRIVILEGE :[6] 'SYSDBA' CLIENT USER:[6]'oracle' CLIENT TERMINAL:[5] 'pts/3' STATUS:[1] '0' DBID:[10] '1692458681'
Good 創建表test和刪除表test的命令都抓取到了,例如startup shutdown connect等操作都是可以抓取到的。
小結:通過上面的測試實例,我們瞭解到了對數據庫管理員的審計也逐漸成爲信息安全中的重要一項,這樣可以對管理員人員進行監督,權限限制,提高數據庫安全級別,完善安全管理制度。