2011-03-09 95 views
4

我正在構建一個違反SQL 2008數據庫的Windows應用程序。一些表格數據非常敏感,但我們的一些用戶仍然需要至少讀取,如果不是這些表格的讀/寫訪問權限。我們將使用Windows安全來控制他們對數據庫的訪問。保護對SQL Server數據的訪問

我想知道這些用戶是否可以通過類似Excel或MS Access訪問這些表中的數據?這是關於阻止一個壞蘋果試圖竊取數據並走開它。但是,如果他們有讀取數據的權限,是否有阻止它們的真正方法?

對不起,如果這是一個SQL Server 101的問題,但我沒有找到問題的好答案。

感謝您的幫助!

+1

在這個線程中的錯誤信息是有點可怕。你可以**絕對**限制你的數據訪問只能通過你的應用程序。 – 2011-03-09 20:29:27

+0

我認爲Nathan想說的是,你可以通過編寫一個Web應用程序來完成這個目標,該應用程序提供了你的數據庫的唯一接口。如果您僅通過應用程序向用戶提供與數據庫的交互,則不會有問題。我也覺得納森指出的錯誤溝通來自問題的措辭。如果安全問題,用戶不應該能夠達到你的數據庫時間。所有與數據的接口應該通過您的安全Web應用程序。 (通過擔保,我的意思是注意諸如sql注入之類的東西。) – James 2011-03-09 20:51:38

+0

@James最初的問題是關於Windows應用程序。我習慣於一個網絡環境,通過服務應用程序,您可以更輕鬆地保護數據庫免受窺探。 – 2011-03-09 21:08:09

回答

4

執行此操作的好方法可能是編寫滿足您所有需求的存儲過程,並授予所有用戶僅執行權限。

如果您授予對您的用戶的完全讀取權限,那麼很難防止他們對您所說的內容產生影響。

+0

+1或定義「SELECT」操作的視圖.... – 2011-03-09 20:26:41

+1

我同意詹姆斯。在足夠精細的級別上授予正確訪問權限是可能的,但是直接登錄帳戶訪問表時很困難。詹姆斯要去的地方是應用程序(=用戶)和數據之間有一個額外的層。我甚至建議你考慮將Web服務構建爲額外的層,並保護數據庫免受Web服務控制之外的訪問。 – Steven 2011-03-09 20:32:39

+2

無論如何,你不應該授予用戶對數據庫的直接權限。控制在應用程序級別。 – 2011-03-09 20:35:53

-1

用戶可以使用Access中的鏈接表或Excel中的外部數據查詢訪問SQL表,但是權限是由SQL服務器控制的,這意味着用戶具有讀訪問權限,他們將能夠以只讀方式訪問數據,只有模式。

+0

這就是我期待的。因此,如果他們在SQL Server中具有讀取權限,那麼確實無法阻止他們訪問Access或Excel中的數據,對嗎?並感謝您的快速反饋! – monkeymindllc 2011-03-09 20:25:45

+0

恐怕不是,但是如果你給他們只讀權限,你應該相信他們看到這些數據是正確的? – AZhu 2011-03-09 20:27:05

+1

這是不對的。你絕對可以通過你的應用程序控制對sql server的訪問,禁止任何第三方應用程序(excel,acces等)訪問你的數據。看到我的答案。 – 2011-03-09 20:27:20

6

如果他們必須具有讀取權限,那麼您應該幾乎認爲他們可以對數據執行他們想要的操作。如果您在屏幕上顯示數據,則必須假定有人可以用紙和鉛筆寫下他們看到的內容。

這樣說,我會創建一個服務帳戶,有權從您的應用程序訪問SQL Server。通過角色控制應用中的訪問權限。不要直接授予任何用戶訪問您的數據庫的權限 - 他們必須通過您的應用程序。

如果您嘗試打開Access或Excel並將其指向您的SQL Server數據庫,則它們將無權執行任何操作。

2

正如其他人所提到的,您可以爲您的應用程序創建一個SQL帳戶。這將禁止從您的應用程序本身以外的任何外部訪問。當然,這意味着訪問您的應用程序本身將不得不受到限制。通過將對可執行文件的讀取訪問權限限制在包含訪問權限的用戶的活動目錄組中,也很容易實現。除此之外,您的應用程序還可能使用活動目錄掛鉤來確定是否允許需要它的用戶進行寫入訪問。

雖然所有人都說......你最大的問題將是物理安全。如果只有一個認證組中的用戶不可信,那麼必須制定一個可接受的使用策略,人力資源員工篩選和用戶環境檢查和制衡。一個適當的工作站部署策略在這裏也會很好,可以限制可移動驅動器的使用,記錄所有訪問,連接細節等等。

如果你不能信任用戶,那麼這裏更多的是關於操作環境。