Oracle密碼文件的使用和維護

概要:Oracle關系數據庫系統以其卓越的性能獲得了廣泛的應用,而保證數據庫的安全性是數據庫管理工作的重要內容。本文是筆者在總結Oracle數據庫安全管理工作的基礎上,對Oracle數據庫系統密碼文件的創建、使用和維護作了詳細的介紹,供大家參考。
    在Oracle數據庫系統中,用戶如果要以特權用戶身份(INTERNAL/SYSDBA/SYSOPER)登錄Oracle數據庫可以有兩種身份驗證的方法:即使用與操作系統集成的身份驗證或使用Oracle數據庫的密碼文件進行身份驗證。因此,管理好密碼文件,對於控制授權用戶從遠端或本機登錄Oracle數據庫系統,執行數據庫管理工作,具有重要的意義。
    Oracle數據庫的密碼文件存放有超級用戶INTERNAL/SYS的口令及其他特權用戶的用戶名/口令,它壹般存放在ORACLE_HOME\DATABASE目錄下。
    壹、密碼文件的創建:
    在使用Oracle Instance Manager創建壹數據庫實例的時侯,在ORACLE_HOME\DATABASE目錄下還自動創建了壹個與之對應的密碼文件,文件名為PWDSID.ORA,其中SID代表相應的Oracle數據庫系統標識符。此密碼文件是進行初始數據庫管理工作的基礎。在此之後,管理員也可以根據需要,使用工具ORAPWD.EXE手工創建密碼文件,命令格式如下:
    C:\ >ORAPWD FILE=< FILENAME > PASSWORD
    =< PASSWORD > ENTRIES=< MAX_USERS >
    各命令參數的含義為:
    FILENAME:密碼文件名;
    PASSWORD:設置INTERNAL/SYS帳號的口令;
    MAX_USERS:密碼文件中可以存放的最大用戶數,對應於允許以SYSDBA/SYSOPER權限登錄數據庫的最大用戶數。由於在以後的維護中,若用戶數超出了此限制,則需要重建密碼文件,所以此參數可以根據需要設置得大壹些。
    有了密碼文件之後,需要設置初始化參數REMOTE_LOGIN_PASSWORDFILE來控制密碼文件的使用狀態。[page]  二、設置初始化參數REMOTE_LOGIN_PASSWORDFILE:
    在Oracle數據庫實例的初始化參數文件中,此參數控制著密碼文件的使用及其狀態。它可以有以下幾個選項:
    NONE:指示Oracle系統不使用密碼文件,特權用戶的登錄通過操作系統進行身份驗證;
    EXCLUSIVE:指示只有壹個數據庫實例可以使用此密碼文件。只有在此設置下的密碼文件可以包含有除INTERNAL/SYS以外的用戶信息,即允許將系統權限SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他用戶。
    SHARED:指示可有多個數據庫實例可以使用此密碼文件。在此設置下只有INTERNAL/SYS帳號能被密碼文件識別,即使文件中存有其他用戶的信息,也不允許他們以SYSOPER/SYSDBA的權限登錄。此設置為缺省值。
    在REMOTE_LOGIN_PASSWORDFILE參數設置為EXCLUSIVE、SHARED情況下,Oracle系統搜索密碼文件的次序為:在系統註冊庫中查找ORA_SID_PWFILE參數值(它為密碼文件的全路徑名);若未找到,則查找ORA_PWFILE參數值;若仍未找到,則使用缺省值ORACLE_HOME\DATABASE\PWDSID.ORA;其中的SID代表相應的Oracle數據庫系統標識符。
    三、向密碼文件中增加、刪除用戶:
    當初始化參數REMOTE_LOGIN_PASSWORDFILE設置為EXCLUSIVE時,系統允許除INTERNAL/SYS以外的其他用戶以管理員身份從遠端或本機登錄到Oracle數據庫系統,執行數據庫管理工作;這些用戶名必須存在於密碼文件中,系統才能識別他們。由於不管是在創建數據庫實例時自動創建的密碼文件,還是使用工具ORAPWD.EXE手工創建的密碼文件,都只包含INTERNAL/SYS用戶的信息;為此,在實際操作中,可能需要向密碼文件添加或刪除其他用戶帳號。
    由於僅被授予SYSOPER/SYSDBA系統權限的用戶才存在於密碼文件中,所以當向某壹用戶授予或收回SYSOPER/SYSDBA系統權限時,他們的帳號也將相應地被加入到密碼文件或從密碼文件中刪除。由此,向密碼文件中增加或刪除某壹用戶,實際上也就是對某壹用戶授予或收回SYSOPER/SYSDBA系統權限。
    要進行此項授權操作,需使用SYSDBA權限(或INTERNAL帳號)連入數據庫,且初始化參數REMOTE_LOGIN_PASSWORDFILE的設置必須為EXCLUSIVE。具體操作步驟如下:
    創建相應的密碼文件;
    設置初始化參數REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE;
    使用SYSDBA權限登錄:
    CONNECT SYS/internal_user_passsword AS SYSDBA;
    啟動數據庫實例並打開數據庫;
    創建相應用戶帳號,對其授權(包括SYSOPER和SYSDBA):
    授予權限:GRANT SYSDBA TO user_name;
    收回權限:REVOKE SYSDBA FROM user_name;
    現在這些用戶可以以管理員身份登錄數據庫系統了; [page]