首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 8i/9i 稽核 SYSDBA 登入:利用作業系統審計檔追蹤特權存取

     編輯:Oracle 資料庫相關知識

背景

Oracle 8i 起廢除 INTERNAL 用戶,改以 SYSDBA/SYSOPER 角色控管資料庫啟動、關閉、建庫等特權操作。為防止濫用,必須監控所有持有此角色的登入活動。

原理

  • Unix/Linux 平台:每次以 SYSDBA 登入,Oracle 自動在 $ORACLE_HOME/rdbms/audit 產生 ora_.aud 檔案
  • 無需啟用資料庫稽核參數 即會產生
  • 檔案記錄:登入用戶、客戶端機器名、終端機、登入時間、執行操作

實際範例

Client 端連線

SQL> CONN sys@gs1 AS SYSDBA
Enter password: ********
Connected.

Server 端審計檔內容 (ora_589980.aud)

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

Windows 平台替代方案

  • 啟用 AUDIT_SYS_OPERATIONS=TRUE 並設定 AUDIT_FILE_DEST
  • 事件寫入 Windows Event Viewer (Application Log),來源為 Oracle.
  • 或使用 DBMS_AUDIT_MGMT (11g+) 統一管理審計軌跡

最佳實務

  1. 定期歸檔/清理 .aud 檔避免塞滿磁碟
  2. 建立基線:記錄合法維護時段與人員,異常時即時告警
  3. 配合 LOGON Trigger 記錄一般用戶登入,形成完整存取審計
  4. 12c+ 建議啟用 Unified Auditing,效能更好、查詢更方便
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved