如何在 Always Encrypted 功能中续订或扩展 CMK 证书?

Sri*_*Sri 4 sql-server sql-server-2016 always-encrypted

我已经在 SQL Server 2016 中实现了 Always Encrypted 功能。 CMK 的有效期为一年。如何更新或延长有效期?

Nik*_*oft 6

始终加密不会明确检查 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 加密密钥 T-SQL将 CekVal2 添加到您当前的 CEK (CEK1)
  6. 此时,您的客户端将能够使用 CMK1 和 CMK2 解密 CEK1。
  7. 在您将 CMK2 成功分发给所有需要它的客户端后,使用Alter Column 加密密钥 T-SQL从您当前的 CEK (CEK1) 中删除 CekVal1
  8. 此后,您的客户端将无法再使用 CMK1 解密 CEK1