DP300-SEC#31
Azure SQL Database で Always Encrypted を実装する手順を順序通りに並べてください。
- Column Master Key (CMK) を Key Vault に作成
- Column Encryption Key (CEK) を CMK で暗号化
- 対象テーブル カラムに Always Encrypted 暗号化属性を設定
- クライアント アプリで CMK 参照設定 + 接続文字列に Column Encryption Setting=Enabled
解説
【正しい順序】
- ステップ 1: Column Master Key (CMK) を Key Vault に作成
- ステップ 2: Column Encryption Key (CEK) を CMK で暗号化
- ステップ 3: 対象テーブル カラムに Always Encrypted 暗号化属性を設定
- ステップ 4: クライアント アプリで CMK 参照設定 + 接続文字列に Column Encryption Setting=Enabled
【各ステップの理由】
- ステップ 1 Column Master Key (CMK) を Key Vault に作成: CMK は Azure Key Vault または Windows Cert Store で保管する最上位キー で Always Encrypted の起点です。
- ステップ 2 Column Encryption Key (CEK) を CMK で暗号化: CEK は カラム暗号化 用 Symmetric キー で CMK で暗号化されて DB 内に保管されます。
- ステップ 3 対象テーブル カラムに Always Encrypted 暗号化属性を設定: ALTER TABLE で対象カラムに
ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = ...)を設定し暗号化を有効化します。 - ステップ 4 クライアント アプリで CMK 参照設定 + 接続文字列に Column Encryption Setting=Enabled: クライアント側 ADO.NET ライブラリで CMK Provider を設定し 接続文字列に Column Encryption Setting=Enabled を追加します。
【誤った順序の問題点】
- CEK 作成 → CMK 作成: CMK が先決で CEK は CMK で暗号化される下位キーです。
- クライアント設定 → CMK 作成: CMK が無いとクライアント設定でも 暗号化動作しません。

コメント