根據用戶對數據庫的訪問類型,你可能會尋找一個顯著一場艱苦的戰鬥。你開始對中介分層額外的安全性之前,通過採取長期在深入瞭解您允許用戶使用自己的憑據做什麼開始:
- 用戶是否需要數據庫機器上的用戶帳戶?如果可能,刪除它們
- 用戶是否授予最小權限訪問權限?使用您認爲合適的任何機制儘可能多地刪除用戶[exec]權利。我在最後看到的一件事是存儲了實際具有適當的執行權限的procs,並且用戶只對proc具有exec權限。
- 您是否刪除了用戶權限來運行任何表更改命令?包括運行系統存儲過程的能力。這可以大幅減少事故(意外和惡意)
- 用戶是否可以直接訪問原始業務數據?如果這樣考慮將訪問權限移入視圖,並在表格上自行刪除和刪除用戶權限。它也解決了一些維護難題
- 你有審計嗎?表級別或自定義。
如果你覺得你有一個堅實的設計,那麼你可以開始尋找包裝你的數據庫在一個經紀人/外觀訪問。請注意,這在性能,部署和安全性方面可能很昂貴,並且不是一件容易的事情。關於模式的一些建議是:
- 尋找到一個服務代理:WSO2例如,他們有其他可以用來隱藏關鍵業務應用程序(雖然其本意是要發佈對它們的訪問)提供緩存和代理服務。它可能會減少你的攻擊面,但配置和管理很容易超過那裏的任何收益。
- 您可以推出自己的經紀商服務(基於WCF或類似的),以確保您充分考慮到負載和預計的增長,但如果您真的想要這樣做並非不可能或甚至無法實現並有時間正確地設計出來。
謝謝。我會考慮在DBMS和自己的安全性之間進行選擇。如果我想要保護的數據庫是第三方並且不時升級,我應該考慮哪些其他考慮因素。我的應用程序提供額外功能 – 2010-05-22 04:27:42
@Andrew Florko,安全真的是兔子洞。你可以花費你的餘生(自然或其他方式)試圖關閉洞並讓你的應用程序變得難以理解。我想說,你應該好好看看你認爲最有可能在你的應用中滲透的候選人(你已經提到了用戶名/密碼泄漏),並按照最高優先級和/或最有可能發生的順序來處理它們。 – GrayWizardx 2010-05-22 17:42:10