oracle os認證和口令檔案認證的簡要解析

tonywi888發表於2008-03-11
oracle登入口令認證方式根據設定的不同而不一樣。

sqlnet.ora 檔案中的內容:

# SQLNET.ORA Network Configuration File: D:oracleora92networkadminsqlnet.ora
# Generated by Oracle configuration tools.

SQLNET.AUTHENTICATION_SERVICES= (NTS)

NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME) 。

------------------------------------------------------------------------------------------------

環境
windows2000+sp4,oracle9.201
oracle軟體以oracle帳戶安裝

一、sysdba的許可權
sysdba(sysoper和normal)是登入資料庫的身份,與角色(dba、resource)、物件許可權及系統許可權有所區別,登入身份表明了可對資料庫的整體進行哪些操作,sysdba有些類似unix下的root帳戶。
sysdba的許可權或可對資料庫進行的操作:
startup,shutdown
alter database open|mount
alter database backup controlfile
alter tablespace begin/end backup
recover database
alter database archivelog,restricted session
create database
recover database until

二、os認證和口令檔案認證

1、os認證和口令檔案認證其實質是對oracle資料庫採取何種管理方式,是本地管理還是透過一臺管理伺服器統一管理。
本地管理採用的就是os認證方式,統一管理採用的就是口令檔案認證方式
2、兩種認證的實現
oracle資料庫透過sqlnet.ora檔案中的引數SQLNET.AUTHENTICATION_SERVICES,PFILE(或SPFILE)檔案中的引數REMOTE_LOGIN_PASSWORDFILE和口令檔案PWDsid.ora三者協同作用實現身份認證。

SQLNET.AUTHENTICATION_SERVICES=(NTS)|(NONE)
SQLNET.AUTHENTICATION_SERVICES=(NTS): 作業系統認證方式,不使用口令檔案
SQLNET.AUTHENTICATION_SERVICES=(NONE):口令檔案認證方式

REMOTE_LOGIN_PASSWORDFILE=(NONE)|(EXCLUSIVE)|(SHARED)
REMOTE_LOGIN_PASSWORDFILE=(NONE):不使用口令檔案,作業系統認證
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE):口令檔案認證方式,但只有一個資料庫例項可以使用此檔案,
系統允許將SYSOPER/SYSDBA授予除INTERNAL/SYS以外的其他使用者,且以具有這類身份的其他使用者登入是有效的
REMOTE_LOGIN_PASSWORDFILE=(SHARED):口令檔案認證方式,可有多個資料庫例項使用此檔案,但是此設定下
只有INTERNAL/SYS帳號能被識別,即使檔案中存有其他使用者的資訊,也不允許他們以SYSOPER/SYSDBA登入

1)SQLNET.AUTHENTICATION_SERVICES=(NTS)同時REMOTE_LOGIN_PASSWORDFILE=(NONE),此時為作業系統認證方式。
當以oracle_dba組下的使用者登入進入本地windows2000後進行下邊的操作:
sqlplus /nolog
sql>conn /as sysdba

sqlplus /nolog
sql>conn 任意使用者名稱/密碼 as sysdba
均可以sysdba身份登入成功,進行資料庫方面的操作
當以遠端進行登入時,執行
sqlplus /nolog
sql>conn /as sysdba

sqlplus /nolog
sql>conn sys/密碼 as sysdba
均顯示
“ERROR:
ORA-01031: insufficient privileges

也就是不允許以sysdba身份遠端登入系統,這也是os認證之所以也稱為本地認證方式的原因

2)SQLNET.AUTHENTICATION_SERVICES=(NONE)同時REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),配合口令檔案
PWDsid.ora,此時為口令檔案認證方式
當在本地以oracle_dba組下的使用者登入進入windows2000後進行下邊的操作:
sqlplus /nolog
sql>conn /as sysdba
顯示
“ERROR:
ORA-01031: insufficient privileges

實質上是要求提供擁有sysdba身份的使用者名稱和密碼
在本地或遠端進行下邊的操作
sqlplus "sys/密碼@服務名 as sysdba"
可進入系統
也就是說口令檔案認證方式允許使用者從本地或遠端以sysdba身份登入,但必須提供口令字

3)SQLNET.AUTHENTICATION_SERVICES=(NTS)同時REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)或(SHARED),配合口令檔案PWDsid.ora,此時作業系統認證和口令檔案認證同時起作用
當在本地以oracle_dba組下的使用者登入進入windows2000後進行下邊的操作:
sqlplus /nolog
sql>conn /as sysdba
可進入系統
當在遠端執行
sqlplus "sys/密碼@服務名 as sysdba"
同樣可正常登入到資料庫系統上
上邊的引數配置容易令人迷惑、混淆,造成假象。我推測網上有些朋友所以對身份認證產生費解可能就是因為這麼
配置引數的!

三、其他

從前邊的討論可以知道,我們能夠對sys以外的使用者賦予sysdba身份,具體方法就是
SQLNET.AUTHENTICATION_SERVICES=(NONE)
REMOTE_LOGIN_PASSWORDFILE=(EXCLUSIVE)
口令檔案PWDsid.ora
SQL>grant sysdba to 使用者名稱
這樣,其他具有sysdba身份的使用者就加入到PWDsid.ora中,並可以被PWDsid.ora識別,我們可以用這個被賦予sysdba身份的使用者登入並進行類似sys使用者下所能執行的操作。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8570952/viewspace-203934/,如需轉載,請註明出處,否則將追究法律責任。

相關文章