Always Encrypted を使用したデータベースのエクスポートとインポート
適用対象: SQL Server Azure SQL データベース Azure SQL Managed Instance
この記事では、Always Encrypted で保護された列を含むデータベースをエクスポートおよびインポートする方法について説明します。
データベースをエクスポートすると、暗号化された列に格納されているすべてのデータが暗号化された形式 (ciphertext) でデータベースから取得され、結果として生成された BACPAC に入れられます。 生成された BACPAC には、Always Encrypted キーのメタデータも含まれます。
BACPAC をデータベースにインポートすると、BACPAC からの暗号化されたデータがデータベースに読み込まれ、Always Encrypted キーのメタデータが再び作成されます。
ソース データベース (エクスポートしたデータベース) に格納されている暗号化された列にクエリを実行するように構成されたアプリケーションがある場合、特別なことをしなくても、そのアプリケーションでターゲット データベース内の暗号化されたデータに対してクエリを実行することができます。これは両方のデータベースのキーが同じであるためです。
データベースのエクスポートおよびインポート方法の詳細については、以下をご覧ください。
- データ層アプリケーションのエクスポート
- BACPAC ファイルのインポートによる新しいユーザー データベースの作成
- Azure SQL データベースを BACPAC ファイルにエクスポートする
- BACPAC ファイルを Azure SQL Database のデータベースにインポートする
- SqlPackage
暗号化された列を含むデータベースを移行するためのアクセス許可
ソース データベースに対して ALTER ANY COLUMN MASTER KEY および ALTER ANY COLUMN ENCRYPTION KEY 権限が必要です。 ターゲット データベースに対して ALTER ANY COLUMN MASTER KEY、ALTER ANY COLUMN ENCRYPTION KEY、VIEW ANY COLUMN MASTER KEY DEFINITION、および VIEW ANY COLUMN ENCRYPTION が必要です。
暗号化された列に対して構成されている列マスター キーへのアクセス権は必要ありません。エクスポートおよびインポート操作中にデータが暗号化された状態になるためです。