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

Oracle 外部身份認證研究:OS 驗證與密碼檔案實戰

     編輯:Oracle 資料庫基礎

一、伺服器端作業系統認證配置

1. sqlnet.ora 關鍵參數

NAMES.DIRECTORY_PATH = (TNSNAMES, ONAMES, HOSTNAME)
# TNSNAMES: 本地 tnsnames.ora 解析
# ONAMES: Oracle Names Server (建議改用 LDAP)
# HOSTNAME: hosts/DNS/NIS 解析

SQLNET.AUTHENTICATION_SERVICES = (NTS)
# NTS = Windows 作業系統認證 (Kerberos/NTLM)
# NONE = 資料庫密碼認證
# 可並存:(NTS, NONE)

2. 建立 OS 群組並授權

  • ORA_DBA 群組成員:免密碼以 SYSDBA 登入 (多實例可用 ORA__DBA)。
  • ORA_OPER 群組成員:擁有 SYSOPER 權限。

3. 登入方式

sqlplus "/ AS SYSDBA"
# 或
sqlplus /nolog
SQL> CONNECT / AS SYSDBA

4. remote_login_passwordfile 影響

值說明
NONE (預設)不使用密碼檔,OS 認證特權用戶擁有 SYSDBA/SYSOPER
EXCLUSIVE單實例專用密碼檔,可授權非 SYS 用戶 SYSDBA/SYSOPER
SHARED多實例共享密碼檔,僅 SYS 享有特權

若需純 OS 認證,必須設為 NONE。

5. 非特權 OS 用戶對應資料庫用戶

建立 IDENTIFIED EXTERNALLY 用戶:

CREATE USER "DOMAIN\USER" IDENTIFIED EXTERNALLY;
GRANT CONNECT TO "DOMAIN\USER";

Windows 註冊表 HKEY_LOCAL_MACHINE\SOFTWARE\Oracle\HOME0 新增 AUTH_PREFIX_DOMAIN 字串值可控制域前置名稱處理。

二、用戶端 OS 認證

用戶端 sqlnet.ora 同樣設定 SQLNET.AUTHENTICATION_SERVICES = (NTS),即可在無密碼情況下以當前 Windows 登入身份連線資料庫 (需資料庫端已建立對應 EXTERNALLY 用戶)。

三、最佳實踐建議

  1. 生產環境建議 SQLNET.AUTHENTICATION_SERVICES = (NTS, NONE) 兼容雙模式。
  2. 嚴格控管 ORA_DBA/ORA_OPER 群組成員,定期稽核。
  3. 啟用資料庫審計 (AUDIT SYS OPERATIONS) 記錄特權操作。
  4. Windows 域環境下統一使用域帳號,避免本地帳號混淆。
  5. 密碼檔採 EXCLUSIVE 模式並定期備份 orapw。

結語

外部認證將身份管理下沉至作業系統/目錄服務,減少密碼洩露風險、簡化單一登入 (SSO) 整合。但必須配合嚴格的 OS 層級存取控制與審計,才能真正落實最小權限原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved