2009-09-17 130 views
0

我有一個客戶端 - 服務器應用程序,其中.NET客戶端訪問SQL Server 2008數據庫中的所有數據和存儲過程。SQL Server 2008數據保護

有什麼辦法保護所有這些數據,以便只有我創建和授權的用戶才能訪問這個特定的數據庫?特別是用戶'sa'想起來了。我不喜歡他訪問我所有的數據。

回答

7

您不能阻止系統管理員訪問數據,您也不應該。

但是,除指定的dba外,沒有人應該擁有sa帳戶的密碼。如果sa沒有密碼或許多人擁有密碼,請立即更改密碼。如果應用程序通過sa訪問,請立即更改。

除此之外,您可以最好地限制訪問權限是從表和視圖(包括選擇訪問)中刪除對所有其他帳戶的訪問權限,並且只允許通過存儲的特效進行exec訪問。這樣,除了指定的管理員以外,任何人都只能對已存儲的特效做其他事情。但是,如果您在應用程序或存儲的特效庫中使用了任何動態SQL,則無法執行此操作,這是動態SQL爲什麼不可行的一個原因。

+0

因此,如果用戶在某個表上沒有SELECT訪問權限,但在對該表執行SELECT操作的存儲過程具有EXEC訪問權限,那麼用戶可以看到數據? – 2009-09-17 14:00:32

+0

是的,但只能通過存儲過程。 – MartW 2009-09-17 14:02:08

+0

是的,你是對的。 – 2009-09-17 14:03:09

3

您無法阻止sa或其他系統管理員,因爲對整個系統的訪問對他們的角色是不可或缺的。 您可以嘗試對數據進行加密,使其在應用程序之外沒有任何意義,但它可能會使將來的報告需求變得複雜。

+0

加密不是一個真正的選擇,因爲那樣我就不得不調整整個應用程序(我猜)。另外,我相信會有性能損失。還是謝謝你的答案。 – Marc 2009-09-17 15:02:48

相關問題