共用方式為


決定強制執行安全性的位置

取捨在強制執行安全性方面固有。 資料庫可以是放置安全性邏輯的自然位置,因為最終數據是保護最重要的事情。 不過,這樣做具有顯著的效能影響。 在資料庫強制執行安全性可能非常昂貴、規模不佳,而且不具彈性。

在仲介層強制執行安全性

使用 COM+ 的可調整多層式應用程式所遵循的一般規則是,盡可能在仲介層強制執行 COM+ 應用程式中的詳細安全性。 這麼做可讓您充分利用 COM+所提供的可調整服務。 只有在您絕對需要時,才能在資料庫中強制執行驗證,並充分權衡其效能影響。

最佳情況是能夠保護資料庫數據表的安全,讓 COM+ 應用程式能夠在自己的身分識別下存取它們。 資料庫應該只驗證 COM+ 應用程式,並信任它以正確驗證和授權將存取資料的用戶端。 此方法的優點如下:

  • 它可讓所有客戶端之間的連線共用,因為連線是完全一般。
  • 它通常會優化數據存取,通常是調整應用程式時有問題的窒息點。
  • 它可以將強制執行安全性的邏輯額外負荷降到最低,特別是可以使用宣告式角色型安全性時。
  • 它可以在安全策略中提供極大的彈性。 您可以輕鬆地設定及重新設定,如角色型安全性 管理員 設定中所述

但是,如有效設計角色中所述,雖然角色可以輕易且有效地套用至某些用戶數據關聯性,但它們不是安全性存取決策的通用解決方案。

在資料庫強制執行安全性

儘管偏好在仲介層強制執行安全性,但有許多理由在資料庫強制執行安全性,例如:

  • 你沒有選擇,也許是基於遺產的原因,或者可能是因為決定根本不在你的手中。
  • 資料庫是由各種不同的應用程式存取,且其安全性無法根據單一應用程式進行設定。
  • 資料庫可以預期地受到保護。 如果您將企業關鍵性數據保留在資料庫中,則可以在資料庫中繪製緊緊的馬車,並協助控制誰能看到它。
  • 在資料庫中驗證原始用戶端,可讓您詳細記錄誰已完成資料庫中的工作。
  • 某些數據先天系結至特定使用者,而且在接近數據的資料庫本身,進行極精細存取決策的邏輯可能會最有效率地執行。

當您同時設計資料庫和 COM+ 應用程式的安全性時,大部分問題都與數據本身的特性及其與存取數據的使用者關聯性有關。 透過可預測使用者類別存取的數據,使用角色控制中介層中的存取是有效率的。 若數據複雜地系結至非常小型的用戶類別,這些關聯性通常必須以數據本身表示,因此您必須在資料庫中強制執行某些安全性。

在資料庫強制執行安全性的效能影響

如果您在資料庫中驗證或授權使用者,則必須將使用者身分識別傳播至資料庫,才能支援這項功能。 如果資料庫信任仲介層應用程式這樣做,則有可能在參數中傳入使用者安全性資訊。 否則,必須根據使用者的身分識別來呼叫資料庫,這表示伺服器應用程式必須模擬用戶端。 這可能會對效能造成影響,例如:

  • 模擬用戶端比直接在應用程式身分識別下進行呼叫要慢得多。 如需詳細資訊,請參閱 用戶端模擬和委派
  • 無法在特定使用者身分識別下建立的資料庫連線集區。
  • 在資料庫中新增邏輯會執行建立調整瓶頸的風險。

保護多層式應用程式中數據的基本案例

多層式應用程式安全性