將 TDE 受保護資料庫移動至另一個 SQL Server
本主題描述使用透明資料加密 (TDE) 保護 SQL Server 資料庫,然後將資料庫移到 SQL Server 其他執行個體的步驟。
本主題內容
開始之前:
背景
安全性
範例:
建立透明資料加密所保護的資料庫
將 TDE 保護的資料庫移到新的 SQL Server 執行個體
**待處理:**將 TDE 保護的資料庫移到新的 SQL Server 執行個體後所採取的步驟
背景
TDE 會執行資料和記錄檔的即時 I/O 加密和解密。此加密會使用資料庫加密金鑰 (DEK),該金鑰儲存於資料庫開機記錄中,以便在復原期間可供使用。DEK 是對稱金鑰,而其維護安全的方式是使用儲存於伺服器之 master 資料庫內的憑證或是受到 EKM 模組所保護的非對稱金鑰。移動 TDE 保護的資料庫時,您也必須移動用來開啟 DEK 的憑證或非對稱金鑰。憑證或非對稱金鑰必須安裝在目的地伺服器的 master 資料庫中,SQL Server 才能存取資料庫檔案。如需詳細資訊,請參閱<了解透明資料加密 (TDE)>。
安全性
權限
需要 master 資料庫的 CONTROL DATABASE 權限,才能建立資料庫主要金鑰。
需要 master 資料庫的 CREATE CERTIFICATE 權限,才能建立保護 DEK 的憑證。
需要加密資料庫的 CONTROL DATABASE 權限,以及用於加密資料庫加密金鑰之憑證或非對稱金鑰的 VIEW DEFINITION 權限。
[回到頁首]
建立 TDE 保護的資料庫
若要建立透明資料加密保護的資料庫,請使用 master 資料庫中憑證所保護的資料庫加密金鑰。
建立透明資料加密所保護的資料庫
在查詢編輯器中,輸入下列 Transact-SQL 命令來建立資料庫主要金鑰以及 master 資料庫中的憑證。
安全性注意事項 請以密碼取代星號。請勿使用空白密碼。請使用增強式密碼。
USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO CREATE CERTIFICATE TestSQLServerCert WITH SUBJECT = 'Certificate to protect TDE key' GO
在 master 資料庫中,建立伺服器憑證的備份。如果遺失用來保護資料庫加密金鑰的憑證,您將無法存取 TDE 保護之資料庫中的資料。下列範例會將憑證和私密金鑰檔案的備份儲存在此 SQL Server 執行個體的預設資料位置 (C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA)。
安全性注意事項 您必須同時保留憑證檔案和私密金鑰檔案的副本,才能復原憑證。私密金鑰的密碼不必與資料庫主要金鑰密碼相同。
BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', ENCRYPTION BY PASSWORD = '**************' ); GO
建立 TDE 保護的資料庫。
CREATE DATABASE CustRecords ; GO
切換至新的資料庫。在 master 資料庫中建立伺服器憑證所保護的資料庫加密金鑰。然後,將新資料庫變更為使用 TDE 加密資料庫。
USE CustRecords; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert; GO ALTER DATABASE CustRecords SET ENCRYPTION ON; GO
[!附註]
若要使用 SQL Server Management Studio 執行此步驟,請在 [物件總管] 中,以滑鼠右鍵按一下資料庫,指向工作,然後按一下 [管理資料庫加密]。使用 [管理資料庫加密] 對話方塊選取資料庫加密金鑰,並將資料庫加密設為開啟。
建立簡單資料表。將資料輸入資料表中,然後從資料表中選取以測試資料庫。
CREATE TABLE CustomerRecord (CustomerID int PRIMARY KEY, SecretData nvarchar(100) NOT NULL) ; GO INSERT CustomerRecord (CustomerID,SecretData) VALUES (23997, 'Plain text data') ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[回到頁首]
移動 TDE 保護的資料庫
將 TDE 保護的資料庫移到新的 SQL Server 執行個體
從來源伺服器卸離 TDE 保護的資料庫。
USE master ; GO EXEC master.dbo.sp_detach_db @dbname = N'CustRecords'; GO
[!附註]
若要使用 Management Studio 執行此步驟,請在 [物件總管] 中,以滑鼠右鍵按一下資料庫,指向工作,然後按一下 [卸離]。按一下 [確定]。
使用 [Windows 檔案總管],將資料庫檔案從來源伺服器移動或複製到目的地伺服器上相同的位置。
[!附註]
一般而言,兩個資料庫檔案 (CustomerRecords.mdf 和 CustomerRecords_log.LDF) 將會位於相同位置 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA。您的檔案名稱和位置可能會不同。
使用 [Windows 檔案總管],將伺服器憑證和私密金鑰檔案的備份從來源伺服器移動或複製到目的地伺服器上相同的位置。在範例中,這些檔案儲存在 C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA 的預設資料夾中。
在 SQL Server 的目的地執行個體上,建立資料庫主要金鑰。密碼不必與來源伺服器相同。
USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************'; GO
使用原始伺服器憑證備份檔案重新建立伺服器憑證。密碼必須與建立備份時所使用的密碼相同。
CREATE CERTIFICATE TestSQLServerCert FROM FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', DECRYPTION BY PASSWORD = '**************' ); GO
附加正在移動的資料庫。資料庫檔案的路徑必須是您儲存資料庫檔案的位置。
CREATE DATABASE [CustRecords] ON ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ), ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' ) FOR ATTACH ; GO
[!附註]
若要使用 Management Studio 執行此步驟,請在 [物件總管] 中,以滑鼠右鍵按一下 [資料庫],然後按一下 [附加]。按一下 [加入],找出 CustRecords.mdf 檔案,然後按一下 [確定]。
從資料表中選取資料以測試資料庫的存取。
USE CustRecords ; GO SELECT CustomerID, SecretData FROM CustomerRecord ; GO
[回到頁首]
待處理:將 TDE 保護的資料庫移到新的 SQL Server 執行個體後所採取的步驟
備份 master 資料庫
- 安裝憑證與附加資料庫已經變更了 master 資料庫中的資訊。您應該建立 master 資料庫的新備份。
[回到頁首]