igelr Asked: 2019-07-18 02:07:12 +0800 CST2019-07-18 02:07:12 +0800 CST 2019-07-18 02:07:12 +0800 CST AE 证书是否同时包含主密钥和加密密钥? 772 设置 Always Encrypted 后,我可以在当前用户中看到证书 选择时 select * from sys.column_master_keys 在 key_path 下我看到了这个位置,但是没有为加密密钥指定位置。那么仅此证书导出就足够了吗?它是否在同一个证书中同时包含主密钥和加密密钥? 谢谢 sql-server encryption 1 个回答 Voted Best Answer Sean Gallardy 2019-07-18T02:42:06+08:002019-07-18T02:42:06+08:00 设置 Always Encrypted 后,我可以在当前用户中看到证书 正确,您已声明将在此处创建/存储列主密钥 (CMK)。这很可能是通过 GUI 完成的,以生成新密钥并将其保存在那里。CMK 还有其他选项。 [...] 在 key_path 下我看到了这个位置,但没有为加密密钥指定位置。 正确,这是对存在 CMK 的 SQL Server 执行元数据更新时使用的位置。由于 SQL Server 不会去接触该证书(它不应该在服务器中),它只知道将什么作为元数据发送回客户端驱动程序。该证书包含一个非对称密钥对,用于加密和解密存储在同一数据库中的 SQL Server 内部的列加密密钥 (CEK)。 那么仅此证书导出就足够了吗? 假设 AE 设置正确,客户端只需要该证书,是的。显然,获取所述元数据需要数据库级别的权限,但如果您没有 CMK 的副本,那么整个过程就没有实际意义。 它是否在同一个证书中同时包含主密钥和加密密钥? 不,正如我所说,有 CMK,它是您创建的证书,然后有 CEK,它对数据进行实际加密和解密。 您需要返回阅读有关Always Encrypted 及其工作原理的更多信息,因为这一切都在文档中进行了解释。
正确,您已声明将在此处创建/存储列主密钥 (CMK)。这很可能是通过 GUI 完成的,以生成新密钥并将其保存在那里。CMK 还有其他选项。
正确,这是对存在 CMK 的 SQL Server 执行元数据更新时使用的位置。由于 SQL Server 不会去接触该证书(它不应该在服务器中),它只知道将什么作为元数据发送回客户端驱动程序。该证书包含一个非对称密钥对,用于加密和解密存储在同一数据库中的 SQL Server 内部的列加密密钥 (CEK)。
假设 AE 设置正确,客户端只需要该证书,是的。显然,获取所述元数据需要数据库级别的权限,但如果您没有 CMK 的副本,那么整个过程就没有实际意义。
不,正如我所说,有 CMK,它是您创建的证书,然后有 CEK,它对数据进行实际加密和解密。
您需要返回阅读有关Always Encrypted 及其工作原理的更多信息,因为这一切都在文档中进行了解释。