適用対象:Windows
Azure SQL Database の SQL Server 2019 (15.x) 以降のバージョン
セキュア エンクレーブを使用する Always Encrypted では、データベース エンジン内のセキュア エンクレーブ内で、データベース列に対する暗号化操作をインプレースでサポートします。 インプレース暗号化を使うと、そのような操作のためにデータをデータベースの外部に移動する必要がなくなり、暗号化操作の速度と信頼性が向上します。
注
インプレイス暗号化によるパフォーマンス向上にもかかわらず、大規模なテーブルでの暗号操作は長時間にかかり、多大なリソースを消費するため、アプリケーションのパフォーマンスや可用性に影響や低下を招く可能性があります。
インプレース暗号化を使用すると、 ALTER TABLE ALTER COLUMN (Transact-SQL) ステートメントを使用して暗号化操作をトリガーすることもできます。これはエンクレーブなしでは実行できません。
前提条件
サポートされている暗号化操作と、操作に使用される列暗号化キーの要件は、次のとおりです。
- プレーンテキスト列の暗号化。 列の暗号化に使用される列暗号化キーは、エンクレーブ対応である必要があります。
- 新しい暗号化の種類と新しい列暗号化キーの一方または両方を使用した、暗号化された列の再暗号化。 現在の列暗号化キーと新しい列暗号化キー (現在のキーと異なる場合) の両方が、エンクレーブ対応である必要があります。
- 暗号化された列の暗号化解除。列を保護している列暗号化キーは、エンクレーブ対応である必要があります。
列暗号化キーがエンクレーブ対応であることを確認する方法については、「セキュリティで保護されたエンクレーブを使用して Always Encrypted のキーを管理する」を参照してください。
また、ご利用の環境で一般的な、「セキュリティで保護されたエンクレーブを使用してステートメントを実行するための前提条件」が満たされるようにする必要があります。
暗号操作をトリガーするユーザーまたはアプリケーションは、影響を受けた列を含むテーブルのスキーマ変更を行う権限を持ち、操作に関わるカラムマスターキーやデータベース内の関連する鍵メタデータにアクセスする権限を持っています。
インプレース暗号化は、次のいずれかの方法を使用してトリガーできます。
- SQL Server Management Studio またはお使いのカスタム アプリケーションからの ALTER TABLE ALTER COLUMN (Transact-SQL) 「Transact-SQL を使用してインプレースでの列の暗号化を構成する」をご覧ください。
- Always Encrypted ウィザード
- Set-SqlColumnEncryption コマンドレット。 PowerShell を使って列の暗号化をインプレースで構成する を参照してください。
- データ層アプリケーション (DAC) パッケージ。 「DAC パッケージを使用してインプレースで列暗号化を構成する」を参照してください。