Oracle服務端驗證機制
今天我們簡單分析一下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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SMSSDK驗證碼服務端校驗介面服務端
- Oracle 服務端程式Oracle服務端
- go語言遊戲服務端開發(三)——服務機制Go遊戲服務端
- 用fluent-validator,進行Java服務端驗證Java服務端
- PHP (Laravel) 實現 iOS 內購服務端驗證PHPLaraveliOS服務端
- 驗證碼機制之驗證碼重複使用
- 蘋果遠端裝置管理服務DEP含有驗證缺陷蘋果
- Android之window機制token驗證Android
- 驗證碼服務釋出上線
- go語言遊戲服務端開發(四)——RPC機制Go遊戲服務端RPC
- 如何使用ssh_scan遠端驗證SSH服務的配置和策略
- 《springcloud 四》服務保護機制SpringGCCloud
- 直播系統原始碼,利用重試機制保證服務穩定性原始碼
- iOS內購 - 服務端票據驗證及漏單引發的思考iOS服務端
- 基於CFSSL工具建立CA證書,服務端證書,客戶端證書服務端客戶端
- 第一時間更新!網易易盾驗證碼服務支援微信PC端小程式無跳轉驗證
- 谷歌reCaptcha驗證碼服務再次被攻破谷歌APT
- 服務端c100k連線測試和客戶端65535測試驗證2服務端客戶端
- 6.9找回機制介面安全&驗證碼token介面
- 從驗證到不變性保護機制
- java 雙向證書請求 雙向驗證機制 轉載Java
- 阿里雲簡訊服務實現網站手機簡訊驗證碼阿里網站
- springboot 專案使用阿里雲簡訊服務傳送手機驗證碼Spring Boot阿里
- go-自籤ca證書,客戶端數字證書,服務端數字證書Go客戶端服務端
- 簡訊驗證碼服務平臺哪個好?
- 自定義類載入器驗證類載入機制
- 服務發現與負載均衡機制-Service負載
- 使用免費的Oracle雲服務-遠端連線ATPOracle
- ca 證書機制
- 服務端渲染到前端渲染,再到“服務端渲染”服務端前端
- Jave Web阿里雲簡訊服務傳送驗證碼Web阿里
- 符合 ISO 26262 標準的模型驗證諮詢服務模型
- 服務端,客戶端服務端客戶端
- 客戶端,服務端客戶端服務端
- 客戶端身份驗證客戶端
- Laravel 5 API 服務端支援簽名授權認證LaravelAPI服務端
- RSA2009:雲端計算服務如何保證安全?
- 慶軍之FastTunnel中轉服務端載入證書AST服務端
- TCP服務端TCP服務端