首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 外部身份驗證實作指南:OS 驗證配置、ORA_DBA 群組、Remote_Login_Passwordfile 三模式與域用戶映射

     編輯:Oracle 資料庫基礎

Oracle 支援作業系統層級身份驗證,讓已登入 OS 的用戶免密碼以 SYSDBA/SYSOPER 權限連線資料庫。本文完整記錄:SQLNET.ORA 配置、ORA_DBA/ORA_OPER 群組建立、登入方式、Remote_Login_Passwordfile 三模式影響、非特權用戶映射與域前綴處理。

1. SQLNET.ORA 關鍵參數

# 解析順序:TNSNAMES → ONAMES(棄用) → HOSTNAME
NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)

# 驗證方式:NONE=資料庫密碼, NTS=OS 驗證,可並存
SQLNET.AUTHENTICATION_SERVICES = (NONE, NTS)

2. 建立 OS 群組並加入用戶

  • ORA_DBA:成員免帳密以 SYSDBA 登入(多實例可建 ORA__DBA)
  • ORA_OPER:成員免帳密以 SYSOPER 登入
  • Windows:電腦管理 → 本地用戶和群組 → 新增群組 → 加入域/本地用戶

3. 登入方式

C:\> sqlplus "/ as sysdba"
-- 或
C:\> sqlplus /nolog
SQL> CONNECT / AS SYSDBA

4. Remote_Login_Passwordfile 三模式對照

結論:純 OS 驗證環境建議設 NONE。

5. 非特權 OS 用戶映射 Oracle 帳號

若用戶不在 ORA_DBA/ORA_OPER,需在 Oracle 建立同名帳號:

  • 域用戶:DOMAINNAME\USERNAME
  • 本地用戶:COMPUTERNAME\USERNAME
CREATE USER "DOMAINNAME\USERNAME" IDENTIFIED EXTERNALLY;
GRANT CONNECT TO "DOMAINNAME\USERNAME";

6. 域前綴處理:註冊表關閉域名

Windows 註冊表:

HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOME0
新增字串值 AUTH_PREFIX_DOMAIN = FALSE

效果:建立 Oracle 用戶時可忽略域前綴,直接用 USERNAME。

相關參數:OS_AUTHENT_PREFIX(預設空字串,8i 前為 OPS$),Oracle 用戶名上限 30 字元。

結語

OS 驗證 = SQLNET.ORA 啟用 NTS + OS 群組授權 + Remote_Login_Passwordfile=NONE。域環境下務必設定 AUTH_PREFIX_DOMAIN=FALSE 簡化映射。僅限資料庫伺服器本機連線,遠端 Client 使用 OS 驗證有重大安全風險(見下文)。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
模式描述OS 驗證影響
NONE (預設)不使用密碼檔,OS 特權用戶擁有 SYSDBA/SYSOPER支援 OS 驗證 ✓
EXCLUSIVE單實例專用密碼檔,可授 SYSDBA/SYSOPER 給非 SYS 用戶OS 驗證仍生效,但密碼檔優先
SHARED多實例共用密碼檔,僅 SYS 可獲 SYSDBA/SYSOPEROS 驗證仍生效