我正在将SQL Always Encrypted(SQL始终加密)发布到我们的数据库中,并且正在查询有关存储CMK证书的最佳实践方法。
我们在Windows Server 2016主机上托管了.Net Web应用,每个应用都分配了不同的AD服务帐户(SA)作为其应用程序池ID。我们在单独的服务器上有一个SQL Server实例。这种方法使我们能够隔离和限制每个应用程序对数据库的访问,并且运行良好。
我不想将CMK证书导入本地计算机Windows证书存储区,因为这意味着服务器上的所有用户(主要是服务器管理员)都可以访问证书,因此可以解密证书。数据库中的数据。
我当前已以SA身份登录服务器,并在本地用户下安装了证书。这是我能想到的最安全的选项,因为SA仅能够解密信息,这意味着只有应用程序可以解密数据,而其他用户则不能。但是,我遇到的问题是SA似乎需要一直登录到服务器,这不是一个可行的长期解决方案(如果重新启动服务器,则该帐户将被注销,并且我的应用程序将失败)
有没有人找到关于安全存储CMK最佳位置的官方Microsoft指南?
非常感谢
答案 0 :(得分:2)
我建议使用 Azure Key Vault
作为您的密钥库提供者(集中式密钥库),这将是存储密钥的最安全方法。
Selecting a Key Store for Column Master Key
按此,
集中式密钥库-在多台计算机上提供应用程序。一个 集中式密钥库的示例是Azure Key Vault。集中式 密钥库通常使密钥管理更容易,因为您不需要 维护多个列主键的副本 机器。您需要确保将您的应用程序配置为 连接到集中式密钥库
到目前为止,集中化密钥存储区
您可以轻松地manage the users/Application通过Azure Key Vault中的访问策略。