別の SQL Server への TDE で保護されたデータベースの移動
このトピックでは、Transparent Data Encryption(TDE)を使用してデータベースを保護し、SQL Server Management StudioまたはTransact-SQLを使用してデータベースをSQL Serverの別のインスタンスに移動する方法について説明します。 TDE は、データとログ ファイルの I/O 暗号化と複合化をリアルタイムで実行します。 暗号化は、復旧中に、可用性のためのデータベース ブート レコードに格納されるデータベース暗号化キー (DEK) を使用します。 DEK とは、サーバーの master
データベースに保存されている証明書を使用して保護される対称キー、または EKM モジュールによって保護される非対称キーのことです。
このトピックの内容
作業を開始する準備:
透過的なデータ暗号化で保護されたデータベースを作成する方法:
データベースを移動する方法:
はじめに
制限事項と制約事項
TDE で保護されたデータベースを移動するとき、DEK を開くために使用される証明書または非対称キーも移動する必要があります。 SQL Server がデータベース ファイルにアクセスできるように、証明書または非対称キーを宛先サーバーの
master
データベースにインストールする必要があります。 詳細については、「Transparent Data Encryption (TDE)」を参照してください。証明書を復旧するために、証明書ファイルと秘密キー ファイルの両方のコピーを保持する必要があります。 秘密キーのパスワードは、データベース マスター キーのパスワードと同じにする必要はありません。
SQL Server は、ここで作成したファイルを C:\Program Files\Microsoft SQL Server\MSSQL12 に格納します。既定では、MSSQLSERVER\MSSQL\DATA 。 ただし、ファイル名と場所は異なる場合があります。
セキュリティ
アクセス許可
データベース マスター キーを作成するには、
CONTROL DATABASE
データベースに対するmaster
権限が必要です。DEK を保護する証明書を作成するには、
CREATE CERTIFICATE
データベースに対するmaster
権限が必要です。暗号化されたデータベースに対する
CONTROL DATABASE
権限、およびデータベース暗号化キーの暗号化に使用する証明書または非対称キーに対するVIEW DEFINITION
権限が必要です。
透過的なデータ暗号化で保護されたデータベースを作成するには
SQL Server Management Studio を使用する
データベース マスター キーと証明書を
master
データベース内に作成します。 詳細については、「 Transact-SQL の使用 」をご覧ください。master
データベースに、サーバー証明書のバックアップを作成します。 詳細については、「 Transact-SQL の使用 」をご覧ください。オブジェクト エクスプローラーで、 [データベース] フォルダーを右クリックし、 [新しいデータベース]をクリックします。
[新しいデータベース] ダイアログ ボックスで、 [データベース名] ボックスに新しいデータベースの名前を入力します。
[所有者] ボックスに新しいデータベースの所有者を入力します。 または、省略記号 [...] をクリックして [データベース所有者の選択] ダイアログ ボックスを開きます。 新しいデータベースの作成の詳細については、「 Create a Database」をご覧ください。
オブジェクト エクスプローラーで、プラス記号をクリックして [データベース] フォルダーを展開します。
作成したデータベースを右クリックし、 [タスク]をポイントし、 [データベース暗号化の管理]をクリックします。
[データベース暗号化の管理] ダイアログ ボックスでは、次のオプションを使用できます。
暗号化アルゴリズム
データベース暗号化で使用するアルゴリズムを表示または設定します。 既定の暗号化アルゴリズムはAES128
です。 このフィールドを空白にすることはできません。 暗号化アルゴリズムの詳細については、「 Choose an Encryption Algorithm」をご覧ください。サーバー証明書の使用
証明書によって保護するように暗号化を設定します。 一覧から選択します。 サーバー証明書に対するVIEW DEFINITION
権限がない場合、このリストは空になります。 証明書による暗号化方法が選択されている場合、この値を空にすることはできません。 証明書の詳細については、「 SQL Server Certificates and Asymmetric Keys」をご覧ください。[サーバー非対称キーの使用]
暗号化が非対称キーで保護されるように設定します。 使用可能な非対称キーのみが表示されます。 TDE を使用してデータベースを暗号化できるのは、EKM モジュールによって保護される非対称キーだけです。[データベース暗号化をオンに設定]
データベースを変更して TDE をオンまたはオフにします。完了したら、 [OK] をクリックします。
Transact-SQL の使用
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
-- Create a database master key and a certificate in the master database. USE master ; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'; GO CREATE CERTIFICATE TestSQLServerCert WITH SUBJECT = 'Certificate to protect TDE key' GO -- Create a backup of the server certificate in the master database. -- The following code stores the backup of the certificate and the private key file in the default data location for this instance of SQL Server -- (C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA). BACKUP CERTIFICATE TestSQLServerCert TO FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1' ); GO -- Create a database to be protected by TDE. CREATE DATABASE CustRecords ; GO -- Switch to the new database. -- Create a database encryption key, that is protected by the server certificate in the master database. -- Alter the new database to encrypt the database using 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 を使用する
オブジェクト エクスプローラーで、暗号化したデータベースを右クリックし、[タスク] をポイントして [デタッチ] をクリックします。
[データベースのデタッチ] ダイアログ ボックスでは、次のオプションを使用できます。
[デタッチするデータベース]
デタッチするデータベースを一覧表示します。データベース名
デタッチするデータベースの名前を表示します。[接続の削除]
指定したデータベースへの接続を切断します。Note
アクティブな接続があるデータベースをデタッチすることはできません。
統計の更新
既定では、データベースをデタッチしても、古い最適化統計情報が保持されます。既存の最適化統計情報を更新するには、このチェック ボックスをオンにします。[フルテキスト カタログの保持]
既定では、デタッチ操作を行っても、データベースに関連付けられたフルテキスト カタログが保持されます。 これらのカタログを削除するには、 [フルテキスト カタログの保持] チェック ボックスをオフにします。 このオプションは、SQL Server 2005 からデータベースをアップグレードする場合にのみ表示されます。Status
[準備完了] または [準備ができていません]のどちらかの状態を表示します。メッセージ
[メッセージ] 列に、次のようにデータベースに関する情報が表示される場合があります:データベースがレプリケーションに含まれている場合、 [状態] は [準備ができていません] になり、 [メッセージ] 列に [データベースがレプリケートされました]と表示されます。
データベースに1つ以上のアクティブな接続がある場合、状態はNot ready(準備完了ではなく)となり、Message(メッセージ列には<number_of_active_connections>Active connection(s)例: 1 Active connection(s)と表示されます。 データベースをデタッチするには、 [接続の削除]を選択してアクティブな接続を切断する必要があります。
メッセージについてより詳しい情報を得るには、ハイパーリンクのテキストをクリックして利用状況モニターを開きます。
OK をクリックします。
Windows エクスプローラーを使用して、移動元またはコピー元サーバーから移動先またはコピー先サーバーの同じ場所に、データベース ファイルを移動またはコピーします。
エクスプローラーを使用して、移動元またはコピー元サーバーから移動先またはコピー先サーバーの同じ場所に、サーバー証明書と秘密キー ファイルのバックアップを移動またはコピーします。
SQL Server のインストール先インスタンスにデータベース・マスターキーを作成する。 詳細については、「 Transact-SQL の使用 」をご覧ください。
元のサーバー証明書のバックアップ ファイルを使用して、サーバー証明書を再作成します。 詳細については、「 Transact-SQL の使用 」をご覧ください。
SQL Server Management Studioのオブジェクト エクスプローラーで、データベースフォルダを右クリックし、「Attach」を選択します。
[データベースのインポート] ダイアログ ボックスで、 [アタッチするデータベース]の下の [追加]をクリックします。
データベース ファイルの検索:server_name ダイアログ ボックスで、新しいサーバーにアタッチするデータベース ファイルを選択し、 「OK」をクリックします。
[データベースのインポート] ダイアログ ボックスでは、次のオプションを使用できます。
[アタッチするデータベース]
選択されたデータベースに関する情報を表示します。<カラムヘッダーなし>
アタッチ操作の状態を示すアイコンが表示されます。 表示されるアイコンの種類は、下の [状態] の説明に示します。[MDF ファイルの場所]
選択した MDF ファイルのパスとファイル名が表示されます。データベース名
データベースの名前が表示されます。[次の名前でアタッチ]
データベースを別の名前でアタッチする場合に、その名前を指定します。所有者
データベースの所有者のドロップダウン リストです。これを使用して、必要に応じて別の所有者を選択できます。Status
次の表に示すように、データベースの状態を表示します。アイコン 状態テキスト 説明 (アイコンなし) (テキストなし) このオブジェクトのアタッチ操作が開始されていないか、保留されています。 これは、ダイアログ ボックスを開いたときの既定の状態です。 緑の右向き三角形 進行中 アタッチ操作が開始されましたが、完了していません。 緑のチェック マーク 成功 オブジェクトは正常にアタッチされました。 赤い丸の中に白い×印 エラー アタッチ操作でエラーが発生し、正常に完了しませんでした。 2つの黒い象限(左右)と2つの白い象限(上下)を含む円 Stopped ユーザーがアタッチ操作を停止したため、正常に完了しませんでした。 丸の中に反時計回りの矢印 [ロールバックされました] アタッチ操作は正常に完了しましたが、他のオブジェクトのアタッチ中にエラーが発生したため、ロールバックされました。 メッセージ
空白のメッセージ、または"ファイルが見つかりません"ハイパーリンクが表示されます。追加
主な必須データベース ファイルを検索します。 ユーザーが .mdf ファイルを選択した場合、 [アタッチするデータベース] グリッドの対応するフィールドに、対応する情報が自動的に入力されます。削除
選択したファイルを [アタッチするデータベース] グリッドから削除します。" <
> " データベースの詳細
デタッチするファイルの名前を表示します。 ファイルのパス名を確認または変更するには、参照ボタン ( [...] ) をクリックしてください。Note
ファイルが存在しない場合、メッセージ 列に 「Not found(見つからない)」 と表示されます。ログ ファイルが見つからない場合は、別のディレクトリに存在するか、削除されています。 [データベースの詳細] グリッドでファイル パスを更新し、正しい場所を指定するか、そのログ ファイルをグリッドから削除します。 .ndf データ ファイルが見つからない場合、グリッドのパスを更新して、正しい場所を指定する必要があります。
[元のファイル名]
データベースに属している、アタッチされたファイルの名前が表示されます。ファイルの種類
ファイルの種類を表します。 [データ] または [ログ]になります。[現在のファイル パス]
選択されているデータベース ファイルのパスを表示します。 このパスは手作業で編集できます。メッセージ
空白のメッセージ、または"ファイルが見つかりません"ハイパーリンクが表示されます。
Transact-SQL の使用
オブジェクト エクスプローラーで、 データベース エンジンのインスタンスに接続します。
[標準] ツール バーの [新しいクエリ] をクリックします。
次の例をコピーしてクエリ ウィンドウに貼り付け、 [実行] をクリックします。
-- Detach the TDE protected database from the source server. USE master ; GO EXEC master.dbo.sp_detach_db @dbname = N'CustRecords'; GO -- Move or copy the database files from the source server to the same location on the destination server. -- Move or copy the backup of the server certificate and the private key file from the source server to the same location on the destination server. -- Create a database master key on the destination instance of SQL Server. USE master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD = '*rt@40(FL&dasl1'; GO -- Recreate the server certificate by using the original server certificate backup file. -- The password must be the same as the password that was used when the backup was created. CREATE CERTIFICATE TestSQLServerCert FROM FILE = 'TestSQLServerCert' WITH PRIVATE KEY ( FILE = 'SQLPrivateKeyFile', DECRYPTION BY PASSWORD = '*rt@40(FL&dasl1' ); GO -- Attach the database that is being moved. -- The path of the database files must be the location where you have stored the database files. CREATE DATABASE [CustRecords] ON ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ), ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' ) FOR ATTACH ; GO
詳細については、次を参照してください: