適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
移行シナリオ
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データベースに接続してください。 Always Encryptedをサポートするプロバイダーを使用して宛先データベースに接続している場合は、データベース接続でAlways Encryptedが無効になっていることを確認してください。 詳細については、「データベース接続に対して Always Encrypted を有効または無効にする」を参照してください。
また、SQL Server インポート & エクスポート ウィザードが宛先データベースへの接続に使用するデータベース プリンシパル (ユーザー) が、
データベース接続に対して Always Encrypted を有効または無効にする
移行シナリオでSQL Serverインポート&エクスポートウィザードでデータの暗号化または復号が必要な場合は、Always Encryptedをサポートするデータプロバイダーを使って、送信元SQL Serverのデータベース接続、宛先SQL Serverのデータベース接続、またはその両方を設定してください。 また、これらの接続にはAlways Encryptedを有効にする必要があります。
接続にはウィザードでその接続上のデータを暗号化または復号する必要がない場合は、どのデータ プロバイダーでも使用できます。
SQL Server インポートおよびエクスポート ウィザード内の次のデータ プロバイダーでは、Always Encrypted がサポートされています。
- SQL Server 用の .NET Framework データ プロバイダー
- ウィザードが実行されているコンピューターで .NET Framework 4.6.1 以降が使用されていることを確認します。
- 接続に対して Always Encrypted を有効にするには、接続プロパティ内の
Column Encryption SettingをEnabledに設定します。 Always Encrypted を無効にするには、Column Encryption SettingをDisabledに設定します。 詳細については、「.NET Framework Data Provider for SQL Server を使用して SQL Server に接続する」および「アプリケーション クエリで Always Encrypted を有効にする」を参照してください。
- ODBC 用 .NET Framework データ プロバイダー
- Microsoft ODBC Driver 13.1 以降をインストールします。
- 接続に対して Always Encrypted を有効にするには、接続プロパティ内の
Column EncryptionをEnabledに設定します。 Always Encrypted を無効にするには、Column EncryptionをDisabledに設定します。 詳細については、「SQL Server 用 ODBC ドライバーを使用して SQL Server に接続する」および「ODBC アプリケーションで Always Encrypted を有効にする」を参照してください。
- 接続に対して Always Encrypted を有効にするには、接続プロパティ内の
- Microsoft ODBC Driver 13.1 以降をインストールします。
移行中にデータを暗号化または暗号化解除するためのアクセス許可
SQL Serverソースまたは宛先データベースに保存されたデータを暗号化または復号するには、ソースデータベースのVIEW ANY COLUMN MASTER KEY DEFINITION権限とVIEW ANY COLUMN ENCRYPTION KEY DEFINITION権限が必要です。 列マスター キーにアクセスして使用するには、キー ストアのアクセス許可も必要です。 鍵管理操作に必要な鍵ストア権限の詳細については、「Always Encryptedの列マスター キーを作成して保存する」を参照し、お使いの鍵ストアに該当するセクションをご覧ください。