2012-06-20 88 views
2

我將爲我的SQL Server使用共享主機。我想加密主鍵列(自動生成的ID)和一個varchar列。我四處搜尋,發現TDE。但是,作爲共享主機,我無法使用它。所以,正在尋找任何替代品。數據已經存在於表中,因此現在不可能從應用程序進行加密。有許多SQL語句使用上述的varchar列進行搜索。所以,表現也是一個問題。如何加密SQL Server 2008 R2中的列

感謝, 開發

+0

你會通過加密一個自動生成的ID密鑰來完成什麼? – Groo

回答

1

加密的主鍵列(自動生成的ID)

你將如何能夠找到一個記錄自己的ID是否加密?回答'我通過加密ID serach'不符合您的要求,因爲您不能摳關鍵...

而現在是真正的問題。你說你會在共享主機上部署,但是你沒有提到你會發現ecnryption會提供什麼樣的保護。問題是密鑰管理。數據將用密鑰加密,服務器需要以某種方式解密該dtaa。無論您如何在周圍解決問題,用於解密所有其他密鑰的根密鑰將在共享主機上爲,因此除了數據通路上的輕微碰撞之外,您將無法實現任何其他功能。爲了建立一個圍欄,必須從共享主機的範圍之外的某個地方取回密鑰,例如。當與用戶交互時,您的應用程序將要求輸入密碼以解密根密鑰,這在所有實際情況下都是不可能的。請注意,TDE將不會解決任何問題,因爲信任根在TDE或列式加密中具有相同的問題。如果您需要隱私,請使用私人託管服務。

而要回答這個問題:您使用ENCRYPTBYKEY

如果您使用列式加密,則永遠不會加密主鍵。這樣做完全沒有意義。並聲稱在共享主機環境中的任何類型的隱私是一個夢想。唯一可以保護的是最多的是意外的媒體損失(託管HDD在跳蚤市場上出現)。

0

Dev, 我認爲你的情況唯一的選擇是從應用程序進行加密。

或者,您可以重命名您的表,替換VIEW而不是重命名的表。加密所有現有數據: update real_table set field1 = call_encrypt_function(field1),field2 = call_encrypt_function(field2) 在該視圖中,您可以從real_table中選擇call_decrypt_function(field1),call_decrypt_function(field2)。對於插入和更新,您需要掌握INSTEAD OF INSERT和INSTEAD OF UPDATE觸發器。當然,你需要使用WITH ENCRYPTION來處理那些對象。我在XP_CRYPT中看到了這種方法,但我更喜歡免費的解決方案。 SQL Server免費提供基本的加密功能。

相關問題