請考慮下圖顯示SQL Server中使用的加密層次結構。請注意第一個藍色塊,它表示SMK使用DPAPI加密。 DPAPI使用當前登錄的用戶憑證(+更多)來加密數據,因此它是特定於計算機的。這意味着SMK(以及DMK和任何派生密碼)將是特定於計算機的(實際上它是由SQL Server的設置生成的)。 OTOH,我可以在SQL Server中創建/備份X.509證書(使用CREATE CERTIFICATE,BACKUP CERTIFICATE等)。在SQL Server 2008中加密和存儲敏感數據
場景/問題:
我正在開發一個Web應用程序需要加密和數據庫中的列存儲CC信息。我需要在另一臺機器上訪問這些數據,以便在另一臺機器上恢復數據庫時,實際上可以讀取數據庫備份(儘管對於有權訪問上述證書的人員)。
我想知道當SMK特定於當前的SQL Server實例時,我應該如何在另一臺機器上恢復備份?一旦他們在另一臺機器上恢復後,我應該如何訪問這些加密數據?
更新:糾正我,如果我錯了! 我們可以使用BACKUP SERVICE MASTER KEY TO FILE
命令來備份當前使用的SMK。但是,使用RESTORE SERVICE MASTER KEY FROM FILE
命令,可以在任何其他SQLServer上(在同一臺計算機上/在同一臺計算機上)恢復此密鑰。當SMK恢復時,它將再次使用DPAPI加密,以便密鑰本身可以存儲在機器上的某個位置。
任何幫助,將高度讚賞,
您是否閱讀過您引用的MSDN鏈接中標題爲「DPAPI *中的密鑰備份和恢復」一節?這有幫助嗎? – dajames 2011-01-10 13:48:45