【发布时间】:2018-11-16 10:54:31
【问题描述】:
我们需要为所有数据库配置始终加密功能。我们想在 Master 数据库中创建通用的 Column Master Key,以便我们可以将 CMK 链接到服务器上的所有数据库。但是我们无法将在主数据库中创建的 CMK 链接到所有数据库。我们需要在每个数据库中单独创建主密钥。有什么方法可以在主数据库中创建 CMK 并引用服务器上的所有数据库。
【问题讨论】:
标签: always-encrypted
我们需要为所有数据库配置始终加密功能。我们想在 Master 数据库中创建通用的 Column Master Key,以便我们可以将 CMK 链接到服务器上的所有数据库。但是我们无法将在主数据库中创建的 CMK 链接到所有数据库。我们需要在每个数据库中单独创建主密钥。有什么方法可以在主数据库中创建 CMK 并引用服务器上的所有数据库。
【问题讨论】:
标签: always-encrypted
列主键是每个数据库的对象,即您不能在数据库之间共享它。但是,它只不过是元数据,即存储实际密钥(证书)的指针。使用 Always Encrypted,数据库无权访问实际的加密密钥。它们存储在外部密钥存储(Windows 证书存储、Azure Key Vault)中。因此,您需要做的是通过在其余数据库中注册现有证书来复制(复制)现有证书。只需将现有 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 加密您想要的列。
【讨论】: