データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

MSSQL Server:CLE(セルレベル暗号化)環境でのデータベース移行手順と復号エラーの解決策

本記事では、CLE(Cell Level Encryption/セルレベル暗号化)が実装されたデータベースを移行・復元する際に必要な手順と、暗号化されたデータを正しく復号するための方法について詳しく解説します。

データセキュリティはデータベース管理における最重要課題の一つです。MS SQL Serverで機密データを暗号化する方法には、CLE、TDE(Transparent Data Encryption)、Always Encryptedなど複数の選択肢があります。その中でも、証明書やキーを使用してセル単位でデータを暗号化する方式がCLE(Cell Level Encryption)です。

発生する問題

  1. アプリケーションやT-SQLコード内のデータ復号処理が、特定のエラーを出力し始める。
  2. DecryptByKey関数がデータを復号できなくなる。この場合エラー自体は表示されませんが、暗号化キーが欠落しているため、機能面に深刻な影響が及びます。

解決策

これらの問題は、データベースマスターキー(DMK)を開いていないために復号が不可能になっているケースや、DMKが現在のインスタンスのサービスマスターキーで暗号化されていないことに起因します。解決策は複数あるので、順番に見ていきましょう。

ケース1:データベースマスターキーの暗号化パスワードが分かっている場合

ステップ1: パスワードを使用してデータベースマスターキーを開き、データを復号します。

ステップ2: 「毎回のセッションでパスワードを使ってキーを開く必要があるのか?パスワードをハードコードしてもよいのか?」という疑問が浮かぶかもしれません。答えはノーです。そのような場合は、データベースマスターキーを現在のインスタンスのサービスマスターキーで再暗号化してください。

ステップ3: パスワードでキーを開かずにデータを復号できるか確認します。キーが現在のサービスマスターキーによっても暗号化されているため、答えはイエスです。

ステップ4: データベースマスターキーの暗号化パスワードを変更したい場合は、以下のコマンドを実行してパスワードを更新します。

ケース2:データベースマスターキーの暗号化パスワードが不明な場合

パスワードが分からないものの、移行元サーバーにアクセスできる場合は、ケース1のステップ4でパスワードを変更してからステップ1の手順に従ってください。アクセスできない場合は、以下の代替手順を使用します。
なお、この方法は、データベースを復元するインスタンスが他のキーを使用していない場合にのみ実行可能です。ここではインスタンスのサービスマスターキーを復元する手順が必要になるためです。

例:インスタンスのサービスマスターキーのバックアップ方法

-- サービスマスターキーのバックアップを取得
BACKUP SERVICE MASTER KEY TO FILE = 'C:\Shared\service_master_key.key'
ENCRYPTION BY PASSWORD = 'key_P@ssw0rdGqw0956565'

注意: キーのバックアップファイルはセキュリティ上非常に機密性が高いため、SQL Serverがファイルへアクセスできるよう、ファイルのセキュリティ設定にSQLサービスアカウントを追加してください。設定を怠ると、復元処理中に次のエラーが発生する可能性があります。

Msg 15317, Level 16, State 2, Line 53
The master key file does not exist or has invalid format
(マスターキーファイルが存在しないか、形式が無効です)

ステップ1: データベースを復元する前に、サービスマスターキーを復元します。

ステップ2: データベースを復元します。

ステップ3: パスワードでキーを開かずにデータを復号できるか確認します。インスタンスのサービスマスターキーと、それによって暗号化されたデータベースの両方を復元したため、同一のサービスマスターキーが使用され、答えはイエスです。

まとめ

MS SQL Serverの暗号化に関わる各オブジェクトは、インスタンスレベルのサービスマスターキーによって保護されています。暗号化管理においては、暗号化に関わるオブジェクトがさらにパスワード、キー、または証明書によって暗号化されているという階層構造を理解することが重要です。

セルレベルのデータ暗号化が施されたデータベースを移行する際は、必ず「キーを復号して移行先インスタンスのサービスマスターキーで再暗号化する」か、「移行元のインスタンスマスターキーを復元する」のいずれかの対応が必要になります。

ご意見やご質問がある場合は、フィードバックタブからお気軽にお寄せください。私たちとの対話も歓迎します。

  1. MS Access から SQL Server へデータを移行する方法【初心者向け手順解説】

    データベースのサイズが大きくなりすぎてAccessでは管理しきれなくなったため、筆者は最近AccessデータベースからSQL Server 2014へデータを移行しました。作業自体はそれほど難しくありませんが、同じことで悩む方のために、ステップごとの詳しい手順を記事としてまとめておきます。 事前準備:SQL Serverのインストール まず最初に、お使いのパソコンにSQL ServerまたはSQL Server Expressがインストールされていることを確認してください。個人用PCにSQL Server Expressをダウンロードする場合は、必ずAdvanced Services(高度なサ

  2. 認証用のカスタム事前共有キーを使用して L2TP VPN Server 2016 をセットアップする方法。

    このチュートリアルでは、Windows Server 2016 で L2TP VPN アクセス サーバーをセットアップする手順について説明します。仮想プライベート ネットワーク (VPN) を使用すると、インターネットの場所からプライベート ネットワークに安全に接続でき、インターネットの攻撃やデータから保護されます。傍受。Server 2016 に L2TP/IPSec VPN アクセスをインストールして構成するには、VPN 操作を成功させるために VPN サーバー側でいくつかの設定を構成する必要があるため、多段階のプロセスです。 L2TP/IPSec VPN サーバー 2016 をカスタム事