セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用して列の暗号化をインプレースで構成する
適用対象: SQL Server 2019 (15.x) 以降 - Windows のみ Azure SQL データベース
セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用すると、 のセキュリティで保護されたエンクレーブ内で、データベースの列に対するインプレースでの暗号化操作がサポートされます。 インプレース暗号化を使うと、そのような操作のためにデータをデータベースの外部に移動する必要がなくなり、暗号化操作の速度と信頼性が向上します。
Note
インプレース暗号化のパフォーマンス上の利点にもかかわらず、大きなテーブルの暗号化操作には時間がかかり、大量のリソースが消費され、アプリケーションのパフォーマンスと可用性が低下する可能性があります。
インプレース暗号化を使うと、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 パッケージを使用してインプレースで列暗号化を構成する」を参照してください。
次のステップ
- Transact-SQL を使用してインプレースでの列の暗号化を構成する
- セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用する列でインデックスを作成して使用する
- セキュリティで保護されたエンクレーブが設定された Always Encrypted を使用するアプリケーションを開発する