Always Encrypted を使用して、SQL Serverインポート&エクスポートウィザードで列へ、または列からデータを移行します

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SQL Serverインポート & エクスポート ウィザードは、データをソースから宛先へコピーできるツールです。 この記事では、ソース、宛先、またはその両方がAlways Encrypted で保護されたカラムを含む SQL Server データベースである場合に、SQL Server インポート/エクスポート ウィザードを使用する方法について説明します。

移行シナリオ

SQL Server インポートおよびエクスポート ウィザードを使用すると、暗号化された列との間でデータを移行するための次のシナリオを実装できます。

移行時にプレーンテキスト データを暗号化する

データ ソースに平文データが含まれており、宛先が暗号化された列を含む SQL Server データベースである場合は、SQL Server インポート/エクスポート ウィザードを使用して、ソースから平文データを取得し、それを暗号化して、暗号化されたデータ (暗号文) を宛先データベースの暗号化された列にコピーできます。 この移行シナリオでは、データ ソースとしては、ファイル、SQL Server データベース、または別のデータベース システム内のデータベースなど、SQL Server インポート/エクスポート ウィザードでサポートされる任意のデータ ストアを使用できます。

SQL Serverインポート&エクスポートウィザードがデータを暗号化できるようにするために、宛先データベース接続でAlways Encryptedを有効にし、宛先データベースの列を保護するキーにアクセスできるようにしてください。 詳細については、「データベース接続に対して Always Encrypted を有効または無効にする」および「移行中にデータを暗号化または暗号化解除するためのアクセス許可」を参照してください。

暗号化されたデータを移行時に暗号化解除する

SQL Serverデータベースの暗号化されたデータベースカラムに保存されたデータを移行する場合、SQL Serverインポート&エクスポートウィザードでデータを復号し、復号(平文)データを宛先にコピーするよう設定できます。 宛先は、SQL Serverインポート&エクスポートウィザードがサポートする任意のデータストア、例えばファイル、SQL Serverデータベース、または他のデータベースシステムのデータベースなどでよい。

SQL Serverインポート&エクスポートウィザードがデータを復号できるようにするために、ソースデータベース接続でAlways Encryptedを有効にし、ソースデータベースのカラム内のデータを保護する鍵にアクセスできるようにしてください。 詳細については、「データベース接続に対して Always Encrypted を有効または無効にする」および「移行中にデータを暗号化または暗号化解除するためのアクセス許可」を参照してください。

移行時にデータを再暗号化する

もし、ソースSQL Serverデータベース内の暗号化されたカラムから同じデータベースまたは他のSQL Serverデータベースの暗号化されたカラムにデータをコピーする場合、SQL Serverインポート&エクスポートウィザードを設定して、データをソースから取得した後に復号し、再暗号化してから宛先データベースの暗号化されたカラムに挿入する設定が可能です。 対象カラムのスキーマ(カラムデータ型、暗号化タイプ、カラム暗号化キーなど)がソースカラムのスキーマと異なる場合にこの方法を用いてください。

SQL Serverインポート&エクスポートウィザードがデータを暗号化・復号できるようにするために、元のデータベース接続と宛先のデータベース接続の両方でAlways Encryptedを有効にし、ソースとターゲットのデータベース両方のカラムでデータを保護する鍵にアクセスできるようにしてください。 詳細については、「データベース接続に対して Always Encrypted を有効または無効にする」および「移行中にデータを暗号化または暗号化解除するためのアクセス許可」を参照してください。

移行時にデータを暗号化したままにする

もし、ソースSQL Serverデータベースの暗号化されたカラムから同じまたは他のSQL Serverデータベースの暗号化されたカラムにデータをコピーし、ターゲットのカラムがソースカラムと全く同じスキーマ(同じデータ型、暗号化タイプ、カラムの暗号化キーを含む)を使用している場合、SQL Serverのインポート&エクスポートウィザードを設定して、元のカラムから暗号文を取得し、その暗号化されたデータ(暗号文)をターゲットSQL Serverデータベースの暗号化されたカラムに挿入できます。

このシナリオでは、SQL Serverをサポートするデータプロバイダーを使って、ソースまたは宛先のSQL Serverデータベースに接続してください。 Always Encryptedをサポートするプロバイダーを使用して宛先データベースに接続している場合は、データベース接続でAlways Encryptedが無効になっていることを確認してください。 詳細については、「データベース接続に対して Always Encrypted を有効または無効にする」を参照してください。

また、SQL Server インポート & エクスポート ウィザードが宛先データベースへの接続に使用するデータベース プリンシパル (ユーザー) が、 オプションを に設定していることも確認する必要があります。 このオプションは、サーバーの一括コピー操作における暗号メタデータチェックを抑制し、ウィザードが暗号化されたデータを復号せずに宛先データベースに一括挿入できるようにします。 詳細については、「Always Encrypted (常に暗号化) で保護された列に暗号化されたデータを一括読み込みする」をご覧ください。

データベース接続に対して Always Encrypted を有効または無効にする

移行シナリオでSQL Serverインポート&エクスポートウィザードでデータの暗号化または復号が必要な場合は、Always Encryptedをサポートするデータプロバイダーを使って、送信元SQL Serverのデータベース接続、宛先SQL Serverのデータベース接続、またはその両方を設定してください。 また、これらの接続にはAlways Encryptedを有効にする必要があります。

接続にはウィザードでその接続上のデータを暗号化または復号する必要がない場合は、どのデータ プロバイダーでも使用できます。

SQL Server インポートおよびエクスポート ウィザード内の次のデータ プロバイダーでは、Always Encrypted がサポートされています。

移行中にデータを暗号化または暗号化解除するためのアクセス許可

SQL Serverソースまたは宛先データベースに保存されたデータを暗号化または復号するには、ソースデータベースのVIEW ANY COLUMN MASTER KEY DEFINITION権限とVIEW ANY COLUMN ENCRYPTION KEY DEFINITION権限が必要です。 列マスター キーにアクセスして使用するには、キー ストアのアクセス許可も必要です。 鍵管理操作に必要な鍵ストア権限の詳細については、「Always Encryptedの列マスター キーを作成して保存する」を参照し、お使いの鍵ストアに該当するセクションをご覧ください。