一、作業系統層面:群組與檔案權限
- 建立 DBA 群組 (如
dba),僅包含 root 與 Oracle 軟體擁有者,權限 710 (rwx--x---)。
- 建立 Oracle 使用者群組 (如
oinstall),授權一般用戶執行 sqlplus, exp, imp 等公用程式,權限 711。
- DBA 專用工具 (
svrmgrl, oradebug) 權限 700,僅 DBA 群組可執行。
$ORACLE_HOME/bin 所有檔案擁有者為 Oracle 軟體擁有者。
二、資料庫帳號與密碼管理
三、網路與監聽器安全
listener.ora 設定 ADMIN_RESTRICTIONS_=ON 禁止遠端管理。
- 啟用監聽器密碼
PASSWORDS_=encrypted_pwd。
sqlnet.ora 設定 TCP.VALIDNODE_CHECKING=YES、TCP.INVITED_NODES=(ip1,ip2...) 限制連線來源。
- 啟用
SSL/TLS 加密傳輸 (SQLNET.ENCRYPTION_SERVER=REQUIRED)。
四、審計與稽核
- 開啟標準審計
AUDIT_TRAIL=DB,EXTENDED,審計 DDL、失敗登入、權限變更、敏感表存取。
- 細粒度審計 (FGA) 監控特定條件 (如薪資 > 10000 的查詢)。
- 定期匯出審計軌跡至不可變儲存,配合 SIEM 分析異常行為。
五、OS 角色映射 (Unix/Linux)
# /etc/group 範例
ora__osdba:!:1001:oracle,admin1
ora__osoper:!:1002:operator1,operator2
ora__role1:!:1003:app_user1,app_user2
- 格式:
ora__[_d][_a],d=預設角色,a=WITH ADMIN OPTION。
- 透過 OS 群組管理資料庫角色,實現單一登入點控制。