解析Oracle數(shù)據(jù)庫(kù)遠(yuǎn)程登入身份認(rèn)證
經(jīng)過(guò)長(zhǎng)時(shí)間學(xué)習(xí)Oracle數(shù)據(jù)庫(kù)遠(yuǎn)程登入,小編有些心得,現(xiàn)在就和大家分享一下Oracle數(shù)據(jù)庫(kù)遠(yuǎn)程登入及認(rèn)證,看完本文你肯定有不少收獲,希望本文能教會(huì)你更多東西。
一、服務(wù)器上使用操作系統(tǒng)驗(yàn)證
1.配置SQLNET.ORA文件
參數(shù)NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)表明解析客戶(hù)端連接時(shí)所用的主機(jī)字符串的方式。TNSNAMES表示采用TNSNAMES.ORA文件來(lái)解析;ONAMES表示Oracle使用自己的名稱(chēng)服務(wù)器(Oracle Name Server)來(lái)解析,目前Oracle建議使用輕量目錄訪問(wèn)協(xié)議LDAP來(lái)取代ONAMES; HOSTNAME表示使用host文件,DNS,NIS等來(lái)解析;參數(shù)SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用戶(hù)連接Oracle服務(wù)器時(shí)使用哪種驗(yàn)證方式NONE表示Oracle數(shù)據(jù)庫(kù)身份驗(yàn)證,NTS表示操作系統(tǒng)身份驗(yàn)證,兩種方式可以并用。
2.建立相應(yīng)的操作系統(tǒng)組及用戶(hù)加入該組
ORA_DBA組中的域用戶(hù)和本地用戶(hù)不需要Oracle用戶(hù)名和密碼就可以登錄Oracle而且該組的用戶(hù)登錄數(shù)據(jù)庫(kù)后都具有SYSDBA權(quán)限(多個(gè)實(shí)例時(shí),可以建立類(lèi)似這樣的組ORA_SID_DBA,其中SID指實(shí)例名)同理:ORA_OPER組中的成員具有SYSOPER角色的權(quán)限。
3.登錄方式
- C:>sqlplus “/ as sysdba” 或者C:>sqlplus nolog,然后SQL>connect / as sysdba
4.init.ora中的Remote_Login_Passwordfile對(duì)身份驗(yàn)證的影響。
三個(gè)可選值:
NONE:
默認(rèn)值,指示Oracle系統(tǒng)不使用密碼文件,通過(guò)操作系統(tǒng)進(jìn)行身份驗(yàn)證的特權(quán)用戶(hù)擁有SYSORA和SYSOPER權(quán)限.
三個(gè)可選值:
NONE:
默認(rèn)值,指示Oracle系統(tǒng)不使用密碼文件,通過(guò)操作系統(tǒng)進(jìn)行身份驗(yàn)證的特權(quán)用戶(hù)擁有SYSORA和SYSOPER權(quán)限.
EXCLUSIVE:
1).表示只有一個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用密碼文件;
2).允許將SYSORA和SYSOPER權(quán)限賦值給SYS以外的其它用戶(hù)。
SHARED:
1).表示可以有多個(gè)數(shù)據(jù)庫(kù)實(shí)例可以使用密碼文件;
2).不允許將SYSORA和SYSOPER權(quán)限賦值給SYS以外的其它用戶(hù)。
所以,如果要以操作系統(tǒng)身份登錄,Remote_Login_Passwordfile應(yīng)該設(shè)置為NONE
5.當(dāng)?shù)卿浻脩?hù)不是ORA_DBA組和ORA_OPER組成員時(shí),登錄數(shù)據(jù)庫(kù)需要在Oracle中創(chuàng)建當(dāng)前操作系統(tǒng)用戶(hù)相同的用戶(hù)名,如果當(dāng)前用戶(hù)是域用戶(hù),則名稱(chēng)為:domainnameyourname,如果是本地計(jì)算機(jī)用戶(hù),則名稱(chēng)為:computernameyourname
創(chuàng)建方法:
- create "domainnameyourname" identified externally;
- grant connect to "domainnameyourname";
Windows操作系統(tǒng),修改注冊(cè)表HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0下面添加AUTH_PREFIX_DOMAIN,值設(shè)為FALSE,在創(chuàng)建Oracle用戶(hù)時(shí)可以忽略掉域名。這種方式下,init.ora中有一個(gè)參數(shù)將影響數(shù)據(jù)庫(kù)如何匹配一個(gè)windows用戶(hù)和Oracle用戶(hù)os_authent_prefix = ""缺省為空,Oracle8i以前,無(wú)該參數(shù),而使用OPS$作為用戶(hù)名前綴.(Oracle用戶(hù)名***長(zhǎng)度限制為30個(gè)字符)。
二、遠(yuǎn)程客戶(hù)端使用操作系統(tǒng)驗(yàn)證
首先需要在init.ora文件中設(shè)置如下參數(shù):REMOTE_OS_AUTHENT=TRUE。Oracle不推薦在遠(yuǎn)程客戶(hù)端上使用操作系統(tǒng)驗(yàn)證,因?yàn)榭蛻?hù)端驗(yàn)證時(shí)不是通過(guò)服務(wù)器上的操作系統(tǒng)用戶(hù)來(lái)驗(yàn)證,而是使用客戶(hù)端自己怕操作系統(tǒng)來(lái)進(jìn)行windows驗(yàn)證,這樣,客戶(hù)端可以采用建立對(duì)應(yīng)的windows機(jī)器名和用戶(hù)名的方式來(lái)欺騙Oracle的操作系統(tǒng)驗(yàn)證。
例如:創(chuàng)建了如下Oracle用戶(hù)
- create "zlzyk" identified externally;
- grant connect to "zlzyk";
如果有一臺(tái)名為ZL的機(jī)器,創(chuàng)建了一個(gè)名為zyk的用戶(hù),并以此登錄連接Oracle服務(wù)器(連接時(shí)使用@OracleSTR),無(wú)需用戶(hù)名和密碼造成此問(wèn)題的原因是,Oracle使用客戶(hù)端操作系統(tǒng)進(jìn)行驗(yàn)證,它無(wú)法區(qū)別zl是域名還是機(jī)器名。
Oracle數(shù)據(jù)庫(kù)服務(wù)器上的windows身份認(rèn)證很容易實(shí)施,并且使已登錄的用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)很方便但是,這種驗(yàn)證模型并不適合遠(yuǎn)程客戶(hù)端,因?yàn)榘踩[患太大。
三、Oracle 9i對(duì)操作系統(tǒng)身份認(rèn)證支持的增強(qiáng)
Oracle 9i可以與活動(dòng)目錄集成,通過(guò)Oracle Enterprise Security Manager 管理用戶(hù)權(quán)限Enterprise user authentication做為一種新的外部集中認(rèn)證模式(也叫 global user authentication,Oracle 9i以前的External user authentication僅僅采用了客戶(hù)端操作系統(tǒng)本地認(rèn)證)。
Oracle9i運(yùn)行在一個(gè)win2000及以上的域中,注冊(cè)表HKEY_LOCAL_MACHINESOFTWAREORACLEHOMEID,參數(shù)OSAUTH_X509_NAME設(shè)置為true(默認(rèn)為false,如果該參數(shù)不存在,則新增為REG_EXPAND_SZ類(lèi)型)。注意:Windows NT 4.0 domain 不支持這種方式。
【編輯推薦】