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

Oracle 用戶密碼臨時變更與還原技巧:利用加密密碼值實現無感切換

     編輯:Oracle 資料庫基礎

應用場景

  • DBA 需以某業務用戶身份排查權限/對象問題,但不知其密碼,且不可永久修改密碼(影響應用連接)。
  • 審計要求:不泄露用戶原密碼,完成臨時操作後無痕還原。

核心原理

Oracle 將密碼存儲為 加密雜湊值(DBA_USERS.PASSWORD,11g 為 SHA-1,12c+ 為 PBKDF2/SHA-512)。ALTER USER ... IDENTIFIED BY VALUES 'hash' 可直接按雜湊值還原密碼,無需知明文。

操作步驟(以 SYSTEM 用戶為例)

1. 以 SYSDBA 連接並查詢當前密碼雜湊

SQL> CONNECT / AS SYSDBA
Connected.

SQL> SELECT username, password FROM dba_users WHERE username = 'SYSTEM';

USERNAME  PASSWORD
--------  ------------------------------
SYSTEM    2D594E86F93B17A1

記錄該雜湊值(2D594E86F93B17A1),稍後還原用。

2. 臨時修改密碼為已知值

SQL> ALTER USER system IDENTIFIED BY manager;
User altered.

3. 以新密碼登錄執行業務操作

SQL> CONNECT system/manager
Connected.
-- 執行所需操作:查詢、授權、導出等

4. 還原原密碼雜湊值

SQL> CONNECT / AS SYSDBA
Connected.

SQL> ALTER USER system IDENTIFIED BY VALUES '2D594E86F93B17A1';
User altered.

5. 驗證還原成功

SQL> CONNECT system/Oracle
Connected.  -- 原密碼生效

SQL> CONNECT system/manager
ERROR: ORA-01017: invalid username/password; logon denied
-- 臨時密碼已失效

完整腳本模板

-- 1. 記錄目標用戶雜湊
DEFINE target_user = SYSTEM
COL password NEW_VALUE old_hash
SELECT password FROM dba_users WHERE username = UPPER('&target_user');

-- 2. 設置臨時密碼
ALTER USER &target_user IDENTIFIED BY TempPass123;

-- 3. 此處可手動操作或調用腳本
-- @do_something.sql

-- 4. 還原原密碼
ALTER USER &target_user IDENTIFIED BY VALUES '&old_hash';

-- 5. 驗證
-- CONNECT &target_user/original_password

版本差異與注意事項

版本密碼雜湊算法PASSWORD 列長度備註
10g/11gSHA-1 (基於 DES 的雙重雜湊)16 字符IDENTIFIED BY VALUES 完全支援
12c+PBKDF2 + SHA-512 (SALT + 迭代)80+ 字符同樣支援,雜湊值更長,區分大小寫
18c+支援專用密碼驗證函數-若使用自定義驗證函數,VALUES 子句可能不適用

安全與合規建議

  1. 審計日誌:操作前後記錄時間、操作人、目的、工單號。
  2. 最小權限:僅授予臨時所需權限,操作後回收。
  3. 密碼複雜度:臨時密碼同樣需滿足 PASSWORD_VERIFY_FUNCTION 策略。
  4. 禁止濫用:嚴禁用於繞過應用認證、竊取數據、提權等違規行為。
  5. 12c+ 專用語法:ALTER USER ... IDENTIFIED BY VALUES 'S:...;T:...;' 包含 SHA-512 與 11g 兼容雜湊,確保雜湊值完整複製(含分號)。

結語

利用 DBA_USERS.PASSWORD 雜湊值配合 IDENTIFIED BY VALUES 實現「借用身份、無感歸還」,是 DBA 運維工具箱中的經典技巧。關鍵在於:備份雜湊 → 臨時修改 → 業務操作 → 精確還原 → 驗證失效,全程不接觸明文密碼,符合最小知情原則與審計合規要求。12c+ 環境下注意雜湊值格式變化,確保完整複製。

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