2008-09-17 27 views
2

我在尋找內部Web應用程序到數據庫層的端到端身份驗證的最佳實踐。Intranet應用程序的數據庫身份驗證

我看到的最常見的情況是使用一個SQL帳戶,其權限設置爲應用程序所需的權限。此帳戶由所有應用程序調用使用。然後,當人們需要通過查詢工具訪問數據庫時,或者通過查詢訪問創建一個單獨的組,並且人們可以訪問該組。

我看到的另一個場景是使用完整的Windows身份驗證端到端。因此,用戶自己被添加到具有所有權限設置的組中,以便用戶能夠在應用程序的參數外進行更新和更改。這通常涉及到將人員保護到適當的存儲過程,以便他們不直接更新表。

第一種情況似乎比較容易維護,但如果應用程序中存在安全漏洞,則整個數據庫都會受到危害,這引發了擔憂。

第二種情況似乎更安全,但是在數據庫上的存儲過程中存在大量業務邏輯的反面關注。這似乎限制了Nhibernate和LINQ等一些非常酷的技術的使用。然而,在這個時代,人們可以通過多種不同的方式使用數據,我們不會預見混搭等等,這是最好的方法。

回答

2

戴爾 - 就是這樣。如果您想爲這些用戶提供對底層數據存儲的訪問權限,請通過服務完成。根據我的經驗,那些從Uni/College走出來的經驗豐富的電腦用戶最容易受到傷害。俗話說,他們知道就夠危險了。

如果他們想自動執行部分工作,並且他們可以顯示他們有必要的知識,那麼請繼續,將他們的域帳戶訪問權限授予後端。這樣,他們通過自己的小型VBA自動化所做的任何事情都與他們的帳戶相關聯,並且您知道在數據流失時應該看看誰。

我的基本觀點是數據庫是應用程序的諺語聖盃。你想盡可能少的手指在那個特定的餅。

作爲一名顧問,無論何時我聽到有人允許普通用戶加入數據庫,我的眼睛都會亮起來,因爲我知道當我打電話給我解決問題時,它最終會成爲我的大薪水。

1

就我個人而言,我不希望數據庫中的普通最終用戶。對於Intranet應用程序(特別是駐留在域中的應用程序),我將提供一個用於應用程序訪問數據庫的單個帳戶,該帳戶只具有應用程序運行所需的權限。

然後通過用戶的域帳戶來控制對應用程序的訪問(關閉IIS中的匿名訪問等)。

IF用戶需要,並能證明,直接訪問數據庫,那麼他們域帳戶將被賦予訪問數據庫,他們可以登錄到使用適當的工具DBMS。

0

我一直負責在過去一年內開發多個內部Web應用程序。

我們的解決方案使用Windows身份驗證(Active Directory或LDAP)。

我們的目的僅僅是允許使用現有公司ID /密碼的簡單登錄。我們還希望確保現有部門仍負責驗證和管理訪問權限。

雖然我無法回答關於Nhibernate或LINQ的爭論,但除非您具有特定的殺手功能,否則Active Directory或LDAP非常簡單,足以實施和維護它,值得嘗試。

0

Stephen - 將正常的最終用戶保留在數據庫之外很好,但我想知道如果在這個時代有這麼多經驗豐富的計算機用戶從大學/學院走出來,如果這是正確的道路。如果有人想自動執行部分工作,其中包括VBA更新數據庫,我允許他們通過正常的應用程序進行更新,那麼我們會通過限制他們的訪問權限來以這種方式損失收益。

我想這裏暗示的另一種途徑是你可以通過服務打開應用程序,然後通過組來保護這些服務,並保持用戶與數據庫分離。

然後通過授權,您可以允許部門根據Jonathan的帖子通過組來控制對自己帳戶的訪問。

0

我同意Stephen Wrighton。域名安全是要走的路。如果您想使用mashup和what-not,您可以通過機器可讀的RESTful界面公開部分數據庫。 SubSonic有一個built in

相關問題