2010-09-27 48 views
1

我升級一個小的Ms Acces桌面應用程序到VB.net SqlServer Express 2008 R2,這個應用程序運行在不同的客戶LAN網絡(約50)與一個專用的Windows Server 2008 R2和兩個或trhee PC客戶端。如何保護SQL Server數據文件.MDF並鎖定.LDF不被複制?

所有安裝都有SqlServer sa密碼,沒有人知道密碼,這個sa登錄只用於管理任務。

每個用戶都有自己的用戶名和密碼,這些SqlServer登錄都是VB.NET代碼嵌入和Crypted。

我需要保護數據,模式,存儲過程等被複制mdf文件並安裝在另一個SqlServer實例中以破解mdf文件。

我怎樣才能保護.mdf以避免這種黑客攻擊?

Thx。

+0

這樣做需要先進的加密策略和技術。這不會很簡單。 (作爲評論,因爲我不熟悉所需的實際步驟。) – 2010-09-27 02:07:07

+1

「'所有安裝都有sa口令'」**否,否,否**。做**不**使用sa密碼,即使沒有人知道它。 – 2010-09-27 02:18:23

+1

什麼比sa密碼更安全? – RicardoBalda 2010-09-27 02:23:02

回答

1

您可以逐列加密數據,但這很麻煩,如果您的用戶有權訪問您的應用程序(即使以編譯形式),那麼他們將能夠找到密碼(或證書)無論如何你已經習慣了對列進行加密。 See here for more details。它也有一些嚴重的性能影響...

SQL Server 2008企業版(所以它不會在你使用的Express版中工作)有一個名爲Transparent Data Encryption的功能,它可以加密整個數據庫文件。它並沒有像我上面提到的逐列加密那樣多的性能問題,但它仍然遭受任何人物訪問您的客戶端應用程序的問題,都可以提取解密密鑰,而不會有太多麻煩。另外,當然企業版是真的是很貴!

+0

可能這是解決方案,升級到SQL Server 2008企業版並實施TDE。 – RicardoBalda 2010-10-17 06:36:33

2

如果我正確地理解了你,[1]你給人的本地訪問權限(在他們的個人計算機的硬盤上)到一個數據文件[2],但不希望他們破解數據甚至看到裏面。

沒有什麼可以做的,它會抵制幾個人日努力擊敗它。這就是說:

  1. 如果你的數據價值超過那個,找到另一種分配你的數據的方式。我們可以在那裏提供建議。
  2. 如果您的數據價值低於此值,您可以執行各種操作,所有這些操作都需要幾個人日的努力。我們也可以在那裏提供建議。

好吧,這是什麼?

2

如果您放棄DB文件,您的任務很難。一旦你發佈了數據,它就不再是你的了。如果您想防止客戶端計算機的合法用戶複製文件,那麼您可以做一些小事。如果您擔心有些第三方可以複製它們,那麼存在一種解決方案 - 在硬件加密設備(USB令牌或智能卡)上存儲密鑰。這樣,密鑰永遠不會離開設備(使用密鑰的加密操作在設備上執行)。缺點是您需要將令牌與數據庫的副本一起提供。如果這不是問題,則需要執行以下操作:

  1. 創建一個TrueCrypt卷(它可以與USB cryptotokens一起使用)並將文件放在該捲上。
  2. 創建一個將安裝卷並啓動MS SQL Server(將使用捲上的DB文件)的腳本
  3. 合法用戶必須提供用於訪問設備的PIN。所以如果第三方用戶竊取設備,他沒有一個針。如果他獲取PIN碼和文件,他仍然需要該設備。即他的任務比單純複製數據庫要困難幾倍。
+0

也許我必須編寫存儲過程或DB-Function來驗證服務器的硬盤序列號,每次啓動數據庫進程時Thx – RicardoBalda 2010-09-30 22:44:23

1

你是說你實際上是在每臺客戶機上部署一個數據庫實例? SQL Server不能作爲MS Access的直接替代品!它是一個高度可擴展的RDBMS,不是桌面數據庫。

我想你可能錯過了一個巨大的機會,擁有一個單一的集中式數據庫作爲應用程序數據的安全存儲庫。這就是通常對數據和代碼保持一定程度的控制的方式 - 將數據的一個工作副本保留在安全服務器上,用戶只能通過應用程序及其身份驗證方案間接訪問該服務器。

這就是所謂的Client Server模型。

如果您的用戶是分佈式的(例如不在同一個辦公室),請考慮編寫一個Web應用程序,再次使用中央數據庫。

您無法期望對已遺留的數據有任何控制權。保存在你的服務器上。

1

您的困境的答案是簡單地存儲數據庫集中 - 理想情況下只有一個數據庫,每個人都共享。您不應該在每臺客戶機上安裝SQL Server數據庫。您不僅有安全風險,還會面臨數據丟失的風險,因爲用戶不會備份他們的機器。

沒有人應該與mdf文件在同一臺服務器上。

按照這些步驟,你會更好。

  • 把你的SQL數據庫的專用服務器
  • 允許客戶端連接到數據庫作爲一個有限的用戶權限(而不是「山」)
  • 不要給任何客戶端訪問更多訪問權限上服務器
+0

每個用戶都有自己的用戶名和密碼。 – RicardoBalda 2010-10-10 23:22:27

相關問題