Oracle用戶驗證的機制關系到Oracle數據庫的安全,下面就為您詳細介紹Oracle用戶驗證機制,如果您對此感興趣的話,不妨一看。
系統安全一直是各個系統關注的首要問題,而Oracle用戶驗證是其中很重要的一環。一般應用程序習慣性地將用戶驗證放在數據庫中,通過比對用戶的輸入與數據庫記錄來驗證用戶,但數據庫自身如何來驗證呢?Oracle用戶可以分為SYS用戶和普通用戶,他們的驗證方式有所區別
一、SYS用戶驗證
SYS用戶擁有數據庫的完全控制權,對其驗證顯得至關重要。由於進行驗證時數據庫還不可用,Oracle采用兩種方式來驗證SYSDBA用戶:操作系統驗證和口令文件驗證。
1. 操作系統驗證
對於在安裝Oracle的本機上使用Oracle的情況,Oracle可以將用戶驗證交給操作系統,只要登錄操作系統的用戶在DBA組裡,就有SYS用戶的權限,可以修改 $Oracle_HOME/dbs/sqlnet.ora,加入如下行:
SQLNET.AUTHENTICATION_SERVICES= (NTS)
操作系統驗證具有最高優先級,當設置為他時,口令文件驗證不起作用
2. 口令文件驗證
要使用口令文件驗證,首先得禁用操作系統驗證,修改 $ORACLE_HOME/network/admin/sqlnet.ora,加入如下行(這裡將$Oracle_HOME轉化為絕對路徑):
SQLNET.AUTHENTICATION_SERVICES= (NONE)
其次是設置口令驗證配置參數:remote_login_passWordfile,他可以有幾個值,其含義如下
-- none 不使用口令驗證
-- exclusive 僅允許一個實例使用該口令文件
--shared 多個實例可以共用一個口令文件
這裡將參數設置為獨占:
alter system set remote_login_passWordfile=exclusive scope=spfile;
shutdown immediate
使用口令實用程序生成口令文件
orapwd file= $ORACLE_HOME/database/pwdora10g.ora passWord=Oracle
此時嘗試以不同方式登錄數據庫
sqlplus / as sysdba-----------------權限不足
sqlplus sys/Oracle as sysdba---------------使用口令驗證方式,登錄成功
二、普通Oracle用戶驗證
之前講了SYS用戶的驗證,那麼普通用戶如何驗證?
SYS用戶是在數據庫還沒啟動時登錄數據庫進行啟動操作,而普通用戶是在數據庫啟動後操作不同方案下的對象。
所以普通用戶采用的是數據字典的驗證方式:
select username,passWord from dba_users;
可以看到所有用戶和密碼