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

Oracle 密碼管理實用技巧:未知密碼下以特定用戶身分操作的安全流程

     編輯:Oracle 資料庫基礎

維運場景常遇到:需以應用帳號(如 SYSTEM、APPS)登入處理問題,但密碼未知且不可變更(避免影響應用連線)。Oracle 提供密碼值暫存與還原機制,可安全完成「臨時變更 → 操作 → 還原」閉環,無需知道原密碼明文。

核心原理:ALTER USER ... IDENTIFIED BY VALUES

DBA_USERS.PASSWORD 儲存的是密碼雜湊值。語法 ALTER USER u IDENTIFIED BY VALUES 'hash' 可直接將雜湊值寫回,跳過密碼複雜度驗證,實現「無感知還原」。

標準作業流程(SOP)

  1. 以 SYSDBA 登入:
    CONN / AS SYSDBA
  2. 查詢並記錄目標用戶密碼雜湊:
    SELECT username, password FROM dba_users WHERE username = 'SYSTEM';
    -- 例:SYSTEM  2D594E86F93B17A1
  3. 暫時變更密碼:
    ALTER USER system IDENTIFIED BY TempPass123;
  4. 以新密碼登入執行所需操作:
    CONN system/TempPass123
    -- 執行維運作業...
  5. 還原原始密碼雜湊:
    CONN / AS SYSDBA
    ALTER USER system IDENTIFIED BY VALUES '2D594E86F93B17A1';
  6. 驗證原密碼恢復有效:
    CONN system/原密碼  -- 應成功
    CONN system/TempPass123 -- 應失敗 ORA-01017

關鍵注意事項

  • 僅限合法維運:嚴禁用於繞過審計、竊取權限。操作應記錄在變更管理系統,並通知資安/審計單位。
  • 11g+ 區分大小寫:PASSWORD 欄位為 SHA-1 雜湊,SPARE4 為 PBKDF2 雜湊。11g 相容模式下兩者並存,還原時需同時設定:
    ALTER USER system IDENTIFIED BY VALUES 'S:hash1;H:hash2';
  • 鎖定帳號替代方案:若僅需執行排程作業,建議建立專用服務帳號、授予最小權限、設定 PASSWORD_VERIFY_FUNCTION 禁止密碼過期,而非借用現有帳號。
  • 審計追蹤:啟用 AUDIT ALTER USER,所有密碼變更留痕。

延伸:Proxy Authentication(更優雅的替代方案)

Oracle 10g+ 支援 ALTER USER app_user GRANT CONNECT THROUGH dba_user;,允許 DBA 以 CONN dba_user[app_user]/dba_pass 代理登入,完全避免密碼變更,審計記錄顯示真實使用者 app_user,強烈建議作為標準做法取代本文技巧。

掌握密碼雜湊暫存還原技巧,配合 Proxy Authentication,能在不違反安全合規的前提下,優雅解決「不知密碼需以特定身分操作」的維運難題。

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