Oracle服務端驗證機制

realkid4發表於2010-12-06

今天我們簡單分析一下Oracle的資料驗證機制。在Oracle中,登入資料庫伺服器是需要進行驗證的,通常驗證的層次有兩個,作業系統OS層次和資料庫伺服器驗證方式。

 

我們登入到資料庫伺服器所在主機後,常常使用下一種方式登入,即使當時資料庫例項沒有啟動。

 

SQL> conn / as sysdba;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as SYS

 

沒有輸入使用者名稱和密碼,我們也可以登入DBMS。進一步實驗,我們可以發現,即使我們輸入錯誤的密碼,也會順利登入系統。

 

SQL> conn sys/ddd@orcl as sysdba;

Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.1.0

Connected as SYS

 

但是,這種特性在另一種方式下,就會失效。

 

SQL> conn sys/wrongcod@orcl;

Not logged on

 

說明:在某種方式下,sys使用者以sysdba身份登入時,是可以繞過DBMS驗證機制,直接登入系統。

 

控制這個功能的引數,在sqlnet.ora(NETWORK\ADMIN)的檔案中。有一個引數SQLNET.AUTHENTICATION_SERVICES,用來表示這種驗證機制。在Oracle 11g的文件(Oracle Net Services Reference)中,對該引數的說明如下:

 

Use the parameter SQLNET.AUTHENTICATION_SERVICES to enable one or more authentication services. If authentication has been installed, it is recommended that this parameter be set to either none or to one of the authentication methods.

 

上述說明中,該引數用於指定驗證服務的方式。可以設定為多種驗證方式,乃至安全驗證方法,預設值為none。

 

取值方面,分為兩個層次,OS驗證和Oracle Advanced Security。OS驗證層次有三個取值:

 

驗證取值

含義

備註

none

不使用任何驗證方式。只能透過合法使用者名稱密碼登入系統;

預設值,如果不在sqlnet.ora中設定,該值就是取值;

all

針對所有的驗證方法;

windows和Linux等多平臺均可使用;

nts

針對windows NT平臺特有驗證方式;

只在windows中使用;

 

此外,在Oracle中,還定義了kerberos5、radius和dcegssapi等高階驗證機制。設定的方式我們在windows平臺上常常看到的:

 

SQLNET.AUTHENTICATION_SERVICES=(nts)

 

如果我們將這部分值設定為none,就可以關閉只透過OS進行驗證的功能。當我們把這個設定關閉後,嘗試登入:

 

SQL> conn / as sysdba;

ERROR:

ORA-01031: 許可權不足

 

SQL> conn sys/ddd@orcl as sysdba;

ERROR:

ORA-01017: 使用者名稱/口令無效; 登入被拒絕

 

透過OS進行驗證的登入被拒絕,有一點要注意。雖然sqlnet.ora是一個文字檔案,但是修改過之後,無需重新啟動DBMS就可以直接生效。

 

有一個問題需要注意一下,我們預設的OS驗證登入,本質上並不是不驗證,而是透過作業系統層面進行驗證。在windows中,安裝oracle的使用者會自動的加入到一個ora_dba的組中。作業系統層面驗證就是驗證當前使用者是否屬於ora_dba組,進行操作。在Unix/Linux中,也存在一個oinstall的組,執行操作也要隸屬在該組使用者中。

 

 

最後,我們要注意,Oracle的這個驗證引數是一個容易出現問題的安全漏洞。如果非法使用者設法攻破了主機使用者名稱和密碼,而Oracle恰恰設定了單一的OS驗證,資料庫的安全性毫無可言。所以,從安全性的角度看,起碼要將這個設定為none,並且將sqlnet.ora檔案的修改許可權上升為root使用者專有,拒絕一般使用者修改,拒絕這種單一的驗證方式。

 

 

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

相關文章