我们需要为所有数据库配置始终加密功能。我们想在Master数据库中创建公用的Column Master Key,以便我们可以将CMK链接到服务器上的所有数据库。但是我们无法将在主数据库中创建的CMK链接到所有数据库。我们需要在每个数据库中分别创建创建主密钥。有什么方法可以在主数据库中创建CMK并引用服务器上的所有数据库。
答案 0 :(得分:0)
列主键是每个数据库的对象,即您不能在数据库之间共享它。但是,它不过是元数据,即存储实际密钥(证书)的指针。使用始终加密,数据库无权访问实际的加密密钥。它们存储在外部密钥存储(Windows证书存储,Azure密钥保管库)中。因此,您需要做的是通过在其余数据库中注册来复制(复制)现有证书。只需将现有的CMK编写为CREATE COLUMN MASTER KEY语句并在每个数据库中执行它即可:
CREATE COLUMN MASTER KEY [CMK_Auto1]
WITH
(
KEY_STORE_PROVIDER_NAME = N'MSSQL_CERTIFICATE_STORE',
KEY_PATH = N'CurrentUser/my/2CC027B4FCA85D4244B528E8CA5F73D1EBB18C69'
)
GO
这将在每个数据库中创建一个新的CMK,但是它们都将使用相同证书来加密数据。然后,使用您使用上面的脚本创建的现有CMK加密所需的列。