是否可以在同一 table 中对已加密的列应用动态数据屏蔽

Is it possible to apply the dynamic data masking on already encrypted column in same table

我在我的 Azure SQL 数据库中的两个不同 table 上实施了始终加密和动态数据屏蔽概念。

但我有疑问,比如“是否可以在同一 table 中对已加密的列应用动态数据屏蔽”。

我试过上面的场景,它给出了类似“列 'SSN' 的数据类型不支持数据屏蔽功能 'partial'” 的错误。

我 运行 下面的查询用于在已加密的列上应用屏蔽。

ALTER TABLE [dbo].[CustomerTables]
ALTER COLUMN [SSN] ADD MASKED WITH (FUNCTION = 'partial(0,"XXX-XX-",4)');

是否可以在同一 table 中的已加密列上应用动态数据屏蔽?

不,当前加密的列不能被屏蔽。而且,您不能加密已屏蔽的列。

使用动态数据屏蔽,屏蔽值是在服务器端生成的。要生成掩码值(尤其是使用部分掩码),SQL 服务器需要知道原始值(明文形式)。如果列使用 Always Encrypted 加密,SQL 服务器只知道密文而无法解密 - 只有客户端应用程序才能解密存储在加密列中的值。