我們的應用程式是在 .net WinForms 和 SQL 服務器中開發的,它有自己的用戶身份驗證和組態檔授權機制,映射到 SQL 登錄/用戶/角色,部署在 DMZ 網路中,只有經過授權的人才能訪問。
一位潛在客戶的 IT 部門抱怨在 SQL 服務器中維護數百個登錄名/用戶/角色,他們希望只將一個 SQL 登錄名/用戶附加到單個 SQL 服務器角色,其余的安全事項必須在客戶端應用程式中進行管理。
a) 不是每個資料庫用戶都有一個登錄名,我可以通過映射到 NT 組并將其鏈接到應用程式用戶組態檔來減少 sql 登錄的數量嗎?有沒有更好的辦法?
b) 如何在不失去審計可能性的情況下減少資料庫用戶數量?有 150 個活躍用戶,每一個都應該被追蹤。
uj5u.com熱心網友回復:
這完全取決于您需要多安全。
在談論客戶端應用程式時,您已經遇到了客戶端工具——就其本質而言——容易被濫用的問題;例如,如果我有一個客戶端應用程式的副本,對我來說,反編譯/逆向工程無論它在做什么,并更改邏輯——完全繞過客戶端應用程式中的任何和所有安全性,都是相對微不足道的。您仍然可以在資料庫服務器上進行審計,但老實說:在大多數情況下,除非您在行動中捕獲惡意資料庫訪問,否則很難知道發生了什么 - 客戶端軟體可能只是不執行,或執行混亂,任何審計步驟。現在:如果你接受這種情況并且使用單個登錄,客戶端直接連接:問題變得更糟:這些登錄詳細資訊需要嵌入到應用程式中,以便應用程式可以代表共享憑據登錄(這意味著:任何攻擊者都可以獲取他們),如果你確實在行動中發現了一些東西:你會看到它是從那些共享憑證中發生的——除非你可以查看 IP 資料等。
如果這不是您的攻擊媒介:那么當然,只做您需要的 - 但您提到審計的事實意味著這可能是不可取的。
相反,我建議考慮讓客戶端與資料庫間接對話。如果客戶端應用程式僅通過 Web 服務(您選擇的任何型別)進行通信,那么客戶端可以做的事情就會受到更多限制。您可以在 Web 服務層使用現有的安全模型,然后在對用戶進行身份驗證后,切換到受信任的子系統模型,以使用單個憑據與資料庫進行通信 - 可能是運行 Web 的 AD 帳戶-服務。Web 服務器是一個更難攻擊和濫用的目標。您現在可以將所有邏輯、安全檢查、審計等保存在 Web 服務層,而不是客戶端(您當然可以復制那些在客戶端進行的檢查,以提供禁止操作的即時 UI 反饋,而不會打擾 Web 服務)。這為您提供了兩全其美的優勢,并可能允許更好的遠程使用。但是,這幾乎肯定意味著重寫應用程式的整個資料層。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/318276.html
標籤:。网 sql-server winforms 验证 窗口认证
