Transparent Data Encryption (TDE)とは、日本語で透過的データ暗号化といい、データベースのデータを暗号化する方法の一つです。
TDEを有効にしたデータベースを別の仮想マシンに復元する場合、TDEが無効のデータベースを復元する手順だけでは正しく処理出来ません。
今回は、TDEを有効にしたデータベースを、別のマシンで復元する方法を紹介します。
前提
- TDEが有効のデータベースがあること
環境
- SQL Server Management Studio 20.2.30.0
復元方法
TDE有効時のみ必要になる手順
- バックアップ元のサーバーのmasterデータベースで以下の分を実行し、サーバー証明書と秘密キーのバックアップを取得します。
※ TDEを有効にする際に取得済みの場合はスキップしてください
BACKUP CERTIFICATE certificate_name TO FILE ='path_to_file' WITH PRIVATE KEY ( FILE ='path_to_private_key_file', ENCRYPTION BY PASSWORD ='encryption_password' );
以下の引数についての説明を参照して文の引数を適宜変更してください。
- certificate_name:バックアップする証明書の名前
- path_to_file:証明書の保存先の絶対パス(ファイル名含む)
- path_to_private_key_file:秘密キーの保存先の絶対パス(ファイル名含む)
- encryption_password:秘密キーを暗号化するパスワード
例
BACKUP CERTIFICATE TDE_Cert TO FILE = 'D:\Cert\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = 'D:\Cert\TDE_Cert.key', ENCRYPTION BY PASSWORD ='p@ssw0rd!' );
- 手順1で作成したサーバー証明書と秘密キーを復元先のマシンにコピーします。
- 復元先のmasterデータベースで以下の文を実行し、サーバー証明書と秘密キーをインポートします。
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'master_key_password'; CREATE CERTIFICATE certificate_name FROM FILE = 'path_to_file' WITH PRIVATE KEY ( FILE = 'path_to_private_key', DECRYPTION BY PASSWORD = 'private_key_password' );
以下の引数についての説明を参照して文の引数を適宜変更してください。
- master_key_password:マスターキーを暗号化するパスワード
- certificate_name:再作成する証明書の名前
- path_to_file:証明書が配置されている絶対パス(ファイル名含む)
- path_to_private_key:秘密キーが配置されている絶対パス(ファイル名含む)
- private_key_password:秘密キーを復号するパスワード
「private_key_password」は秘密キーのバックアップ作成時に指定したものと同じ値を指定する必要があります。
例
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'p@ssw0rd_master_key'; CREATE CERTIFICATE TDE_Cert FROM FILE = 'C:\work\TDE_Cert.cer' WITH PRIVATE KEY ( FILE = 'C:\work\TDE_Cert.key', DECRYPTION BY PASSWORD = 'p@ssw0rd!' );
ここまでが、データベースを別マシンで復元する際に、TDE有効時のみ必要になる手順です。
共通の手順
以降は、TDEが無効時のデータベース復元と同様の手順で復元できます。
次の手順からは例として、復元先マシンにデータベースのバックアップファイルを配置し、そのファイルを基にデータベースを復元する手順を記載します。
- 復元先のSSMSで、「データベース」を右クリック後「データベースの復元」をクリックします。
- 全般>ソースから、「デバイス」を選択し、右側にある「...」をクリックします。
- バックアップ メディアの種類は「ファイル」のまま、バックアップ メディアの「追加」をクリックします。
-
復元したいバックアップファイルを選択し、「OK」をクリックします。
-
復元したいバックアップファイルが指定されていることを確認し、「OK」をクリックします。
- ソース、転送先、復元プランが合っているかを確認し、画面左側の「ページの選択」から「File」と「オプション」の内容も必要に応じて変更・修正を行います。
- 設定が完了したら「OK」をクリックします。
- 復元が完了するまで待機し、復元に成功したポップアップを確認します。
最後に
TDEを有効化して別のマシンでデータベースを復元する際に、TDE無効時の手順では復元できなかったため、方法を調査しまとめました。
この記事が参考になれば幸いです。
参考資料
- BACKUP CERTIFICATE (Transact-SQL) - SQL Server | Microsoft Learn
- 別の SQL Server への TDE で保護されたデータベースの移動 - SQL Server | Microsoft Learn
- CREATE CERTIFICATE (Transact-SQL) - SQL Server | Microsoft Learn