程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫的外部身份認證實際研究

Oracle數據庫的外部身份認證實際研究

編輯:Oracle數據庫基礎

以下的文章主要是淺談Oracle數據庫的外部身份認證實際研究,我在一個信譽度很好的網站,找到了一個關於淺談Oracle數據庫外部身份認證的一些實用性很強的相關資料,拿出來供大家分享。

 一、服務器上使用操作系統驗證

1.配置SQLNET.ORA文件

參數NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)表明解析客戶端連接時所用的主機字符串的方式。TNSNAMES表示采用TNSNAMES.ORA文件來解析;ONAMES表示Oracle使用自己的名稱服務器(Oracle Name Server)來解析,目前Oracle建議使用輕量目錄訪問協議LDAP來取代ONAMES; HOSTNAME表示使用host文件,DNS,NIS等來解析;

參數SQLNET.AUTHENTICATION_SERVICES= (NONE,NTS)表明用戶連接Oracle服務器時使用哪種驗證方式NONE表示Oracle數據庫身份驗證,NTS表示操作系統身份驗證,兩種方式可以並用。

2.建立相應的操作系統組及用戶加入該組

ORA_DBA組中的域用戶和本地用戶不需要Oracle用戶名和密碼就可以登錄Oracle而且該組的用戶登錄Oracle數據庫後都具有SYSDBA權限(多個實例時,可以建立類似這樣的組ORA_SID_DBA,其中SID指實例名)同理:ORA_OPER組中的成員具有SYSOPER角色的權限。

3.登錄方式

C:>sqlplus “/ as sysdba” 或者C:>sqlplus nolog,然後SQL>connect / as sysdba

4.init.ora中的Remote_Login_PassWordfile對身份驗證的影響。

三個可選值:

NONE:

默認值,指示Oracle系統不使用密碼文件,通過操作系統進行身份驗證的特權用戶擁有SYSORA和SYSOPER權限.

EXCLUSIVE:

1).表示只有一個數據庫實例可以使用密碼文件;

2).允許將SYSORA和SYSOPER權限賦值給SYS以外的其它用戶。

SHARED:

1).表示可以有多個數據庫實例可以使用密碼文件;

2).不允許將SYSORA和SYSOPER權限賦值給SYS以外的其它用戶。

所以,如果要以操作系統身份登錄,Remote_Login_PassWordfile應該設置為NONE

5.當登錄用戶不是ORA_DBA組和ORA_OPER組成員時,登錄Oracle數據庫需要在Oracle中創建當前操作系統用戶相同的用戶名,如果當前用戶是域用戶,則名稱為:domainnameyourname,如果是本地計算機用戶,則名稱為:computernameyourname

創建方法:

  1. create "domainnameyourname" identifIEd externally;   
    grant connect to "domainnameyourname";   

Windows操作系統,修改注冊表HKEY_LOCAL_MacHINESOFTWAREORACLEHOME0下面添加AUTH_PREFIX_DOMAIN,值設為FALSE,在創建Oracle用戶時可以忽略掉域名。這種方式下,init.ora中有一個參數將影響數據庫如何匹配一個Windows用戶和Oracle用戶os_authent_prefix = ""缺省為空,Oracle8i以前,無該參數,而使用OPS$作為用戶名前綴.(Oracle用戶名最大長度限制為30個字符)。

二、遠程客戶端使用操作系統驗證

首先需要在init.ora文件中設置如下參數:REMOTE_OS_AUTHENT=TRUE。Oracle不推薦在遠程客戶端上使用操作系統驗證,因為客戶端驗證時不是通過服務器上的操作系統用戶來驗證,而是使用客戶端自己怕操作系統來進行windows驗證,這樣,客戶端可以采用建立對應的Windows機器名和用戶名的方式來欺騙Oracle的操作系統驗證。

例如:創建了如下Oracle用戶

  1. create "zlzyk" identifIEd externally;   grant connect to "zlzyk";   

如果有一台名為ZL的機器,創建了一個名為zyk的用戶,並以此登錄連接Oracle服務器(連接時使用@OracleSTR),無需用戶名和密碼造成此問題的原因是,Oracle使用客戶端操作系統進行驗證,它無法區別zl是域名還是機器名。

Oracle數據庫服務器上的Windows身份認證很容易實施,並且使已登錄的用戶訪問Oracle數據庫很方便但是,這種驗證模型並不適合遠程客戶端,因為安全隱患太大。

三、Oracle 9i對操作系統身份認證支持的增強

Oracle 9i可以與活動目錄集成,通過Oracle Enterprise Security Manager 管理用戶權限Enterprise user authentication做為一種新的外部集中認證模式(也叫 global user authentication,Oracle 9i以前的External user authentication僅僅采用了客戶端操作系統本地認證)。

Oracle9i運行在一個win2000及以上的域中,注冊表HKEY_LOCAL_MacHINESOFTWAREOracleHOMEID,參數OSAUTH_X509_NAME設置為true(默認為false,如果該參數不存在,則新增為REG_EXPAND_SZ類型)。注意:Windows NT 4.0 domain 不支持這種方式。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved