问题描述
我们在.Net核心应用程序中使用Always encrypted。
我想知道如何将所选列的列加密传播到测试,接受和生产。我没有找到任何信息。
如果在迁移过程中得到照顾,那就太好了,因此自动部署将包括新添加的列,并立即对其进行加密。据我了解,encrypting existing data is not straighforward。因此,我宁愿没有时间在运行迁移和对列启用加密之间花费时间,至少在应用程序上没有正常运行时间。
密钥名称是否可以重复使用,并且在每个客户端上使用不同的密钥,这样安全吗?如果是这样,我认为使用migrationBuilder.sql()可能对我有帮助。
但是,到目前为止,我没有成功。
也许,根本不应该这样。
CREATE TABLE [dbo].Encrypt(
[id] [int],[sensitive] [nvarchar](max)
)
之后
Alter table Encrypt alter column [sensitive] [nvarchar](max)
COLLATE latin1_General_BIN2
ENCRYPTED WITH (
COLUMN_ENCRYPTION_KEY = [CEK_Auto1],ENCRYPTION_TYPE = Deterministic,ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256'
)
出现错误:
无法更改列“敏感”。该语句尝试使用安全的安全区域就地加密,解密或重新加密该列,但是该列的当前和/或目标列加密密钥未启用安全区域。 列和以下一个或多个列属性:排序规则(到另一个代码页),数据类型。此类更改不能合并在单个语句中。尝试使用多个语句。
从sql Server Management Studio运行时。
去这里的路是什么?
如果这等于运行迁移和运行sql脚本之间的停机时间,那就这样吧。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)