首页 > 解决方案 > SQL 始终加密 CMK 证书存储最佳实践

问题描述

我正在将 SQL Always Encrypted 推广到我们的数据库中,并且有一个关于存储 CMK 证书的最佳实践方法的查询。

我们在 Windows server 2016 机器上托管了 .Net Web 应用程序,每个应用程序都有一个不同的 AD 服务帐户 (SA),作为其应用程序池 ID。我们在单独的服务器上有一个 SQL 服务器实例。这种方法允许我们隔离和限制每个应用程序对数据库的访问,并且运行良好。

我不想将 CMK 证书导入本地计算机 Windows 证书存储,因为这意味着服务器上的所有用户,主要是服务器管理员,都可以访问证书,从而能够解密数据库。

我目前以 SA 身份登录服务器并在本地用户下安装了证书。这是我能想到的最安全的选项,因为只有 SA 能够解密信息,这反过来意味着只有应用程序可以解密数据,而其他用户不能。然而,我使用这种方法面临的问题是 SA 似乎需要一直登录到服务器,这不是一个可行的长期解决方案(如果服务器重新启动,该帐户将被注销并且我的申请会失败)

有没有人找到有关安全存储 CMK 的最佳位置的任何官方 Microsoft 指南?

非常感谢

标签: sqlazuresslencryptionalways-encrypted

解决方案


我建议将Azure Key Vault用作您的Keystore Provider(Centralized Key Stores),这将是存储您的密钥的最安全方式。

为列主密钥选择密钥库

据此,

集中式密钥库- 为多台计算机上的应用程序提供服务。集中式密钥存储的一个示例是 Azure Key Vault。集中式密钥存储通常使密钥管理更容易,因为您不需要在多台机器上维护列主密钥的多个副本。您需要确保将应用程序配置为连接到集中式密钥存储

So go far Cnetralized Key Stores

您可以通过 Azure Key Vault 中的访问策略轻松管理用户/应用程序。

参考


推荐阅读