適用対象:SQL Server
この記事では、Transact-SQLを使ってSQL Serverでデータベースマスターキーをバックアップする方法を説明します。 データベースマスターキーは、データベース内の他の鍵や証明書を暗号化します。 もし鍵が削除されたり破損した場合、SQL Serverはそれらの鍵を復号できなくなり、それらで暗号化されたデータは事実上失われてしまうことがあります。 このため、データベースのマスターキーをバックアップし、バックアップは安全なオフサイトに保存してください。
Limitations
バックアップする前に、データベースのマスターキーを開いて復号する必要があります。 サービスマスターキーがデータベースのマスターキーを暗号化しているなら、明示的にデータベースのマスターキーを開く必要はありません。 しかし、パスワードがデータベースマスターキーの唯一の暗号化方法である場合は、明示的に開く必要があります。
データベースのマスターキーを作成したらすぐにバックアップし、バックアップは安全なオフサイトに保存してください。
アクセス許可
データベースに対する CONTROL 権限が必要です。
データベースのマスターキーをバックアップしてください
この記事のコードサンプルは、Azure Data SQL Samples Repository GitHub repositoryからダウンロードできるAdventureWorks2025またはAdventureWorksDW2025サンプルデータベースを使用しています。
バックアップしたいデータベースマスターキーを含むSQL Serverインスタンスに接続してください。 SQLcmd、SQL Server Management Studio (SSMS)、Visual Studio Code 用の MSSQL 拡張機能など、使い慣れた SQL Server クライアント ツールを使用して、SQL Server のインスタンスに接続できます。
バックアップ媒体上でデータベースマスターキーを暗号化するための固有のパスワードを選択してください。 パスワードは SQL Server の既定のパスワード ポリシーに従う必要があります。 既定では、パスワードの長さは少なくとも 8 文字で、大文字、小文字、10 進数の数字、記号の 4 種類のうち 3 種類を含んでいる必要があります。 パスワードには最大 128 文字まで使用できます。 可能な限り長く複雑なパスワードを使用してください。
バックアップキーのコピーを保存するための取り外し可能なバックアップメディアを用意しましょう。
キーのバックアップを作成するNTFSディレクトリを特定してください。 このディレクトリは次のステップでファイルを作成します。 ディレクトリは厳格なアクセス制御リスト(ACL)で保護します。
以下の Transact-SQL スクリプトを確認して実行します。
この例は次のとおりです。
サービスマスターキーはデータベースのマスターキーを暗号化しないので、開く際にパスワードを指定する必要があります。
AdventureWorks2025がC:\Backups\Keys\AdventureWorks2025_master_keyできるようにデータベースのマスターキーをバックアップします。 これらの設定を環境に合わせて変更してください。
Caution
データベースバックアップを復元するにはパスワードが必要です。 このパスワードは安全かつ確実に保存してください。
USE AdventureWorks2025; GO OPEN MASTER KEY DECRYPTION BY PASSWORD = '<dmk-password>'; BACKUP MASTER KEY TO FILE = 'C:\Backups\Keys\AdventureWorks2025_master_key' ENCRYPTION BY PASSWORD = '<password>'; GOバックアップ済みファイルをバックアップ媒体にコピーし、コピーの内容を確認しましょう。
バックアップを安全な場所に保存します。