Oracle 8i 起廢除 INTERNAL 用戶,改以 SYSDBA/SYSOPER 角色控管資料庫啟動、關閉、建庫等特權操作。為防止濫用,必須監控所有持有此角色的登入活動。
SYSDBA 登入,Oracle 自動在 $ORACLE_HOME/rdbms/audit 產生 ora_.aud 檔案SQL> CONN sys@gs1 AS SYSDBA
Enter password: ********
Connected.
Session Id: 589980
Login Time: 2005-07-15 14:30:22
Client User: oracle
Client Terminal: pts/3
Client Host: app-server-01
Action: CONNECT
Privilege: SYSDBA
Status: 0 (Success)
#!/bin/bash
# check_sysdba_login.sh - 每小時由 cron 執行
AUDIT_DIR=$ORACLE_HOME/rdbms/audit
REPORT=/tmp/sysdba_login_$(date +%Y%m%d).log
grep -h "Privilege: SYSDBA" $AUDIT_DIR/ora_*.aud | \
awk -F': ' '
/Login Time/ {lt=$2}
/Client User/ {cu=$2}
/Client Host/ {ch=$2}
/Client Terminal/ {ct=$2}
/Action/ {print lt "|" cu "|" ch "|" ct}
' >> $REPORT
# 可選:發送郵件通知 DBA
# mail -s "SYSDBA 登入日報" dba@company.com < $REPORT
AUDIT_SYS_OPERATIONS=TRUE 並設定 AUDIT_FILE_DESTOracle.DBMS_AUDIT_MGMT (11g+) 統一管理審計軌跡.aud 檔避免塞滿磁碟LOGON Trigger 記錄一般用戶登入,形成完整存取審計