2011-10-02 35 views
0

我跟隨文章http://msdn.microsoft.com/en-us/library/ms179331.aspx成功,但不能將其轉換爲安全增值。我沒有足夠的上下文來完全理解文章 - 如果有人能夠訪問mdf文件,爲什麼不認爲他們有權訪問密鑰和證書?侵入sql數據庫加密

從VS C#的角度來看,啓動和運行SQL非常容易,但是開始理解安全風險和安全措施並不相同。

我允許windows認證魔術(我希望有一天能夠揭開神祕面紗)服務器可以防止隨機的人查詢數據庫。如果共享內存是唯一的協議,那甚至是一個問題嗎?我的其他防禦措施同樣是高級別的(例如,SQL注入對LINQ來說不是問題)。

我在尋找理解風險類別的入門點 - 任何書名或鏈接。

+0

建議你在http://security.stackexchange.com上提問,我想你會在那裏得到一個適當的細微觀點。 –

+0

我未來可能會這樣做,謝謝。 –

回答

3

在你鏈接的數據的示例與後者又與反過來由數據庫主密鑰,這又與服務進行加密的加密的證書(HumanResources037)加密的對稱密鑰(SSN_Key_01)被加密主密鑰存儲在DPAPI中,因此使用可以使用從服務帳戶密碼派生的密鑰加密的密鑰進行加密。這是一個相當典型的encryption key hierarchy。它主要防止意外的媒體丟失:如果有人獲得了MDF/LDF文件或備份文件(例如,來自舊的硬盤驅動器或丟失/被盜的筆記本電腦),這些文件不能用於檢索加密的信息因爲'創建者'不能解密數據庫主密鑰。作爲一個側面說明,意外的媒體丟失是敏感數據泄漏的主要原因,所以它非常值得保護。這種方案雖然不能防止對SQL Server本身的危及訪問:如果攻擊者可以在服務器上運行查詢(例如SQL注入),它可以檢索加密數據,即使它不知道而不是知道加密密鑰當然,數據仍然受到訪問保護,即對密鑰上的數據的讀/寫權限)。雖然任何用戶都可以解密數據(給予足夠的權限,即使它不知道密碼),但這可能聽起來很糟糕,但它是給定的服務器必須提供數據而不提問用戶爲解密密碼。一般來說,如果你能負擔得起(企業版許可證要求)Transparent Data Encryption是一個更好的選擇,這種方案。

另一種常見的方案是數據用對稱密鑰加密,對稱密鑰又用證書進行加密,而證書又用密碼加密。在此方案中,服務器無法解密數據,除非證書在會話中使用密碼打開。此方案在多租戶應用程序中很常見,其中每個租戶都希望確保其他租戶和/或系統管理員/所有者無法訪問數據(因爲他們不知道密碼)。應用程序在每個會話上請求數據訪問密碼,因爲服務器無法解密數據(它不知道密鑰)。

+0

準確地說我正在尋找的細節水平!我認爲你必須直覺我準備嘗試證書會話解決方案。假設這個例子是某種程度上的「媒體損失」保護措施,我已經開始討論爲什麼我需要一個數據庫來解密任何可以查詢它的賬戶的所有信息。 –