在 SQL Azure 中實現加密表
我正在將一個應用程序移動到 Azure,並且需要為單個表中的幾列實現 PCI 合規性。我意識到我可以在儲存數據之前對其進行加密,但我想知道 SQL Azure 中是否有一個功能可以為我管理其中的一部分。我讀過一些書,但我不確定是什麼;或者不是;SQL Azure 中支持。
我已經閱讀了有關使用 SQL Server(而不是 SQL Azure)的模式,其中數據加密和解密應用在視圖後面。在這種情況下,所有客戶端都通過視圖訪問數據,因此從加密/解密過程中抽像出來。話雖如此,似乎有點危險。
我願意接受有關如何處理這種情況的任何和所有建議。
簡短回答:截至 2012 年 4 月 20 日,SQL Azure 不支持列加密,請參閱:http: //msdn.microsoft.com/en-us/library/windowsazure/ee336253.aspx並蒐索 ENCRYPT。您將看到所有加密功能都被列為不受支持。
如果您需要加密靜態數據並且必須支持 SQL Azure,那麼您將不得不在應用程序級別進行加密。由於許多良好的加密實踐(使用隨機數作為每個單元的初始化向量,用於跟踪哪些密鑰加密哪些列的密鑰管理,完整性驗證,具有基於角色的權限的加密密鑰的分層保護),這更難得到自己實施。我強烈建議讓安全專業人員與您一起進行加密,因為要正確處理具有挑戰性,如果您遺漏了某些內容,那麼您就會有一種錯誤的安全感,以後可能會真正燒毀您。
您可以查看http://securentity.codeplex.com,它聲稱是管理加密數據並支持 SQL Azure 的解決方案。我沒有親自使用過它,也不能保證它的正確性,但它是一個潛在的選擇。
其他資訊:
在 SQL Server 中,列級加密既簡單又非常安全(即使使用視圖),因為您可以使用角色來管理誰可以訪問加密密鑰。即使使用者可以從視圖中進行選擇,如果他們沒有被授予對加密基礎數據的密鑰的訪問權限,那麼他們將獲得這些加密列的 NULL。我有一組用於 SQL Server 2005 及更高版本的範常式式碼,可在此處展示 SQL Server 的加密功能:http: //sqlcrypto.codeplex.com