如何授權(quán)web服務(wù)器提供安全數(shù)據(jù)庫訪問
允許Web用戶訪問數(shù)據(jù)庫是一項(xiàng)很精細(xì)的工作,需要認(rèn)真的考慮,不能馬虎從事。
TechRepublic會員E Spigle 最近在TechRepublic Technical 的Q&A forum上提出了下面這個問題:
我們正在進(jìn)行一項(xiàng)工作,把一個很老的FoxPro系統(tǒng)轉(zhuǎn)換成我所工作的公司里的MS SQL / VB系統(tǒng)。我們已經(jīng)在內(nèi)部廣泛地使用了SQL數(shù)據(jù)庫。它目前位于我們局域網(wǎng)的防火墻之后,只能支持內(nèi)部使用。可是我們的一部分轉(zhuǎn)換程序帶來了一些Web聯(lián)機(jī)應(yīng)用?,F(xiàn)在我們就面臨一個兩難的局面,我們必須為了讓W(xué)eb用戶和局域網(wǎng)的用戶能夠同時訪問同一個數(shù)據(jù)庫找到一個好的解決方法。目前我們的IIS 6.0 Web server在DMZ.如何能夠讓web服務(wù)器為網(wǎng)絡(luò)應(yīng)用提供數(shù)據(jù)庫訪問呢?
問題分析
這是個很有意思的問題,第一眼看起來很簡單,但是當(dāng)你再對它進(jìn)行深入考慮后,你就會發(fā)現(xiàn)它的復(fù)雜之處。任何時候,當(dāng)你想要使數(shù)據(jù)庫具有互聯(lián)網(wǎng)訪問能力時,都有很多問題需要考慮。我首先會考慮的問題就是“我們處理的是什么類型的數(shù)據(jù)?”和“信息的敏感程度如何?”
我會考慮這兩個問題的原因是我需要確定這些數(shù)據(jù)能夠承受多大的風(fēng)險。如果不能夠承擔(dān)任何風(fēng)險,我可能會投入很多的資源和精力來保證我的數(shù)據(jù)盡可能不受侵害。但是,如果可以承擔(dān)一定的風(fēng)險,我會謹(jǐn)慎從事,但不會采用極端手段。比如,如果數(shù)據(jù)是一個病人的醫(yī)療歷史信息,我就會不遺余力地保護(hù)數(shù)據(jù)安全,這就意味著不通過IIS連接,不使用SQL Server.
在我詳細(xì)說明以前,我要聲明,我對微軟并沒有偏見。我僅僅是要避免風(fēng)險。微軟的產(chǎn)品能夠被很好地保護(hù),并且在上述的情況下工作良好。但是,由于它的流行性,微軟的產(chǎn)品更容易成為病毒,蠕蟲、黑客和諸如此類攻擊的靶子。在對于風(fēng)險承受能力比較低的環(huán)境里避免使用微軟的產(chǎn)品,這樣就能夠減少我的麻煩。
而且,根據(jù)數(shù)據(jù)所能夠承擔(dān)的風(fēng)險程度,我將決定是否需要在web服務(wù)器和數(shù)據(jù)庫之間進(jìn)行加密,以及數(shù)據(jù)在數(shù)據(jù)庫里是否需要加密。如果我們希望能夠獲得最高的安全性,我就會選擇使用內(nèi)置的或者第三方的加密軟件。如果數(shù)據(jù)對于安全性要求不是那么高,我就會選擇根本不加密,或者選擇低級別一些的加密方法。
最后,我還需要決定使用什么樣的連接來訪問數(shù)據(jù)庫。如果加密是必須的,或者/而且訪問是通過客戶服務(wù)器軟件來進(jìn)行(如同問題里描述的那樣),那么我就需要使用VPN和一個應(yīng)用層的代理。而且,我可能會考慮在我的Web服務(wù)器和數(shù)據(jù)庫之間,設(shè)置一個應(yīng)用服務(wù)器。
對于上面這些問題的答案幫助我設(shè)計(jì)數(shù)據(jù)庫訪問的環(huán)境。
搭建系統(tǒng)
我假設(shè)在E Spigle問題中所描述的數(shù)據(jù)的敏感程度不是非常高,所以使用IIS和SQL Server是可以被接受的。具體如圖A所示:
圖A:網(wǎng)絡(luò)規(guī)劃
如圖A所示的網(wǎng)絡(luò)通信中,80端口的HTTP或者1443只被允許到達(dá)Web服務(wù)器。然后Web服務(wù)器通過1433端口,通過TCP協(xié)議同SQL服務(wù)器進(jìn)行通信。另一種方法,是使用微軟的ISA服務(wù)器作為轉(zhuǎn)換代理,并允許它控制與SQL服務(wù)器的通信。
無論你選擇哪一種,都有一系列問題需要考慮,以確保你的SQL Server數(shù)據(jù)庫的安全。這些問題在網(wǎng)上可以查到,它們包括了比如保護(hù)你的Windows服務(wù)器,保護(hù)IIS,保護(hù)SQL Server,處理Web服務(wù)器同SQL server的通信問題,這包含了認(rèn)證、協(xié)議等等方面的問題。幸運(yùn)的是微軟在MBSA(Microsoft Baseline Security Analyzer)提供了一些幫助。
最后,你的開發(fā)人員和數(shù)據(jù)庫管理員還需要把一系列標(biāo)準(zhǔn)和程序融合到應(yīng)用代碼和數(shù)據(jù)庫中,以把安全風(fēng)險降到最低。
最佳方案和可接受的風(fēng)險
本篇文章講述了在一個看起來很簡單的問題背后的一些復(fù)雜之處,“怎樣才能最好地讓網(wǎng)絡(luò)應(yīng)用通過web服務(wù)器訪問數(shù)據(jù)庫?”也許還有資金的壓力,但最終,會歸結(jié)為在可承受的風(fēng)險程度和投入之間的平衡問題。這是每一個面對這個問題的人都需要考慮的。
關(guān)鍵詞:web服務(wù)器,數(shù)據(jù)庫
閱讀本文后您有什么感想? 已有 人給出評價!
- 0
- 0
- 0
- 0
- 0
- 0