Oracle採用分層認證:數據庫未啟動時依賴外部機制驗證SYS;數據庫開啟後走內部數據字典驗證普通用戶。
# $ORACLE_HOME/network/admin/sqlnet.ora
SQLNET.AUTHENTICATION_SERVICES = (NTS) -- Windows
# Unix/Linux通常無需此行,靠OS群組dba直接授權
dba(Unix)或ORA_DBA(Windows)群組即擁有SYSDBA權限。# 1. 禁用OS認證
sqlnet.ora: SQLNET.AUTHENTICATION_SERVICES = (NONE)
# 2. 設置密碼文件模式
ALTER SYSTEM SET remote_login_passwordfile = EXCLUSIVE SCOPE=SPFILE;
SHUTDOWN IMMEDIATE; STARTUP MOUNT; -- 需重啟生效
# 3. 生成密碼文件
orapwd file=$ORACLE_HOME/database/pwd<SID>.ora password=oracle
# 4. 驗證差異
sqlplus / as sysdba -- 權限不足(OS認證已禁用)
sqlplus sys/oracle as sysdba -- 成功(密碼文件認證)
| remote_login_passwordfile值 | 含義 |
|---|---|
| NONE | 不使用密碼文件 |
| EXCLUSIVE | 單實例獨享,允許GRANT SYSDBA新用戶 |
| SHARED | 多實例共享,僅SYS/INTERNAL持有SYSDBA |
OPEN,系統表空間可訪問。DBA_USERS視圖中存儲的加密密碼雜湊值。SELECT username, password FROM dba_users;
-- 10g+密碼列為加密雜湊,不可逆;11g+引入鹽值更安全
客戶端連接請求
│
▼
┌──────────────────┐
│ 數據庫實例狀態? │
└────────┬─────────┘
│
┌────┴────┐
▼ ▼
NOMOUNT/MOUNT OPEN
│ │
▼ ▼
OS認證或 數據字典驗證
密碼文件認證 (DBA_USERS)
│ │
▼ ▼
SYSDBA/ 普通用戶會話
SYSOPER
最佳實踐:
• 生產庫強制禁用OS認證,統一使用密碼文件(EXCLUSIVE)實現審計追蹤。
• 定期輪換SYS密碼並同步更新orapwd文件。
• 普通用戶強制啟用PROFILE密碼複雜度、過期、鎖定策略。
• 審計關鍵動作:AUDIT CREATE SESSION BY ACCESS記錄所有登錄嘗試。