資料庫安全不僅是設定密碼,涵蓋作業系統層級存取控制、網路加密、權限最小化、審計追蹤與備份恢復等多層面。本文整理 Unix/Linux 環境下 Oracle 安全配置實務,包含群組權限、預設帳號修改、實用程式權限、角色映射與密碼管理等關鍵措施。
Oracle 程式分兩類:全體用戶可執行 (如 sqlplus) 與 僅 DBA 可執行 (如 sqlplus / as sysdba)。透過 Unix 群組實現:
# /etc/group 範例
oinstall:x:501:oracle
dba:x:502:oracle,root
oper:x:503:oracle
SYSDBA/SYSOPER 權限,安裝時自動獲授。chmod 710 (僅擁有者與群組可執行)chmod 711 (全體可執行)$ORACLE_HOME/bin 所有檔案擁有者為 oracle 用戶安裝完成後 立即修改 SYS/SYSTEM 密碼 (預設皆為 manager):
-- 在 SQL*Plus / SQL*DBA 中
ALTER USER SYS IDENTIFIED BY "StrongPassw0rd!";
ALTER USER SYSTEM IDENTIFIED BY "AnotherStr0ngP@ss";
UTLPWDMG.SQL)PASSWORD_LIFE_TIME, FAILED_LOGIN_ATTEMPTS 等 Profile 參數ALTER USER OUTLN ACCOUNT LOCK;本地登入可將 Oracle 角色映射至 Unix 群組,格式:ORA_
D = DEFAULT ROLE (預設啟用)A = ADMIN OPTION (可授予他人)
# /etc/group 範例
ora_prod_osoper_d:x:1001:john,mary
ora_prod_osdba_a:x:1002:admin_user
ora_prod_role_readonly:x:1003:app_user1,app_user2
用戶以 CONNECT / AS SYSDBA 登入時,OS 會檢查其是否屬於對應群組。
listener.ora 設定 ADMIN_RESTRICTIONS_=ON 禁止遠端管理VALID_NODE_CHECKING_REGISTRATION=ON 限制註冊來源SSL/TLS 加密監聽器通訊 (TCPS 協定)sqlnet.ora:SQLNET.ENCRYPTION_SERVER=REQUIRED, SQLNET.CRYPTO_CHECKSUM_SERVER=REQUIRED
-- 啟用標準審計
AUDIT SESSION; -- 登入/登出
AUDIT CREATE TABLE, DROP TABLE; -- DDL
AUDIT INSERT, UPDATE, DELETE ON SCOTT.EMP BY ACCESS; -- 特定表 DML
AUDIT EXECUTE PROCEDURE BY ACCESS; -- 程序執行
-- 統一審計 (12c+)
AUDIT POLICY ORA_SECURECONFIG; -- 內建安全配置審計
SYS.AUD$ (標準) 或 UNIFIED_AUDIT_TRAIL (12c+)SYSTEM 表空間爆滿CREATE SESSION + 特定物件 SELECT/INSERT/UPDATE/DELETEPUBLIC 不必要的系統權限 (如 EXECUTE ON UTL_FILE)ROLE 管理權限群組,避免直接授予系統權限給用戶PASSWORD_VERIFY_FUNCTION 強制密碼複雜度DBA_SYS_PRIVS, DBA_TAB_PRIVS 審核權限異常