web-dev-qa-db-ja.com

Always Encrypted機能でCMK証明書を更新または拡張するにはどうすればよいですか?

SQL Server 2016にAlways Encrypted機能を実装しました。CMKは1年間有効です。どうすれば更新できますか、または有効期間を延長できますか?

3
Sri

常に暗号化は、CMK証明書の有効性を明示的にチェックしません。 Always Encryptedは、CMK証明書を純粋に(PK、SK)ペアとして扱います。そのため、問題が発生することなく、期限切れの証明書を使用できます。ただし、ベストプラクティスは、定期的にCMKをローテーションすることです。 Always Encryptedは、アプリケーションのダウンタイムを発生させることなくCMKをローテーションするメカニズムを提供します。詳しくは以下の公式記事をご覧ください。
第1条
第2条

PowerShellなしでCMKローテーションを行う方法:

  1. 新しいCMK(CMK2)のプロビジョニング(新しい証明書の作成または新しいAKVキーの作成)
  2. SqlColumnEncryptionStoreProvider 。DecryptColumnEncryptionKey(String、String、Byte [])メソッドの適切なインスタンスを使用して、現在の暗号化されたCEK(CEK1)値(CekVal1)を復号化します
  3. SqlColumnEncryptionStoreProvider 。EncryptColumnEncryptionKey(String、String、Byte [])メソッドの適切なインスタンスを使用して、新しいCMK(CMK2)でcekを暗号化し、新しい暗号化されたCEK値(CekVal2)を取得します。
  4. Create Column Master Key T-SQL を使用して、新しいCMK(CMK2)を指定します
  5. Alter Column encryption key T-SQL を使用して、現在のCEK(CEK1)にCekVal2を追加します
  6. この時点で、クライアントはCMK1とCMK2の両方でCEK1を復号化できます。
  7. CMK2を必要とするすべてのクライアントに正常に配布した後、 Alter Column暗号化キーT-SQL を使用して、現在のCEK(CEK1)からCekVal1を削除します
  8. この後、クライアントはCMK1を使用してCEK1を復号化できなくなります