關於os認證和口令檔案認證

jss001發表於2009-02-27

前言

發現有很多人提問資料庫身份認證方面的問題,基此就oracle的身份認證做個簡要解析,希望這篇文件對遇到類似問題的朋友有所裨益。

文中錯誤之處請大家指正,不足之處請大家補充!

環境

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使用者下所能執行的操作

NONE

Oracle ignores any password file. Therefore, privileged users must be authenticated by the operating system.

SHARED

More than one database can use a password file. However, the only user recognized by the password file is SYS.

EXCLUSIVE

The password file can be used by only one database and the password file can contain names other than SYS

[@more@]

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

相關文章