2016-05-05 50 views
2

我想加密很多表中的很多列。我對如何使用密鑰和證書進行加密和解密有基本的瞭解,但不知道如何在大範圍內實現這一點。使用SQL加密更新生產數據庫 - 批量更新快捷方式?

例如,我在我們的產品應用程序中選擇要插入或更新的表中有幾列使用sql代碼。我是否需要回去修改每個SQL查詢以在這些查詢中包含ENCRYPTBYKEY()和DECRYPTBYKEY()方法?是否有解決方案或快捷方式來更新生產服務器來執行此操作?

回答

2

是的,你將需要更新的所有寫入使用encryptbykey和所有讀取使用decryptbykey

如果使用存儲過程或有CRUD操作集中和鎖定,這樣可以讓事情變得更容易 - 但它是仍然是一個耗時的過程。另一種選擇是Transparent Data Encryption (TDE),它可以應用於整個數據庫而不改變代碼;儘管還有幾個命令需要在服務器上運行。

+0

展望TDE似乎是爲我們節省實施時間的一個很好的解決方案,但它不是隻做幾列加密,而是加密整個數據庫。這樣不會增加查詢執行時間,因爲您試圖與之交互的查詢中的每個列都有雙倍PER? – Jayizzle

+1

來自http://sqlmag.com/sql-server/transparent-data-encryption-faqs>是的,使用TDE會涉及一些性能開銷。加密和解密過程確實需要額外的CPU週期。使用TDE的開銷從3%到30%不等,具體取決於工作負載的類型。 具有低I/O和低CPU使用率的SQL Server實例對性能的影響最小。 CPU使用率高的服務器將對性能造成最大影響。 – Kritner

+1

還注意到,如果你還沒有發生這些信息 - 據我所知TDE需要sql-server的企業版(對於2008年至2012年的情況來說肯定不會,同樣適用) – Kritner