当前行业标准的 Linux 主机上 Web 应用程序密钥管理解决方案

信息安全 Web应用程序 linux 密钥管理
2021-08-23 05:11:17

场景:数据被发送到应用程序服务器,您希望在将数据发送到数据库服务器进行存储之前有选择地加密一些数据。所有服务器都运行一些 linux 发行版。这是一个相对较高的安全情况,如果数据泄露,可能会造成重大的经济损失,但同时这不是国家安全问题。此外,服务器位于第三方云基础架构中,因此 HSM 不是一种选择。不需要具体的监管要求,但我怀疑这个问题的答案将满足大部分要求。

假设:数据被安全地发送到应用程序服务器,并且应用程序用户被适当地授权以检索数据。

我一直在寻找一段时间来提出目前公认​​的密钥管理“行业最佳实践”,并不断发现零散的好建议。有人可以指出我已经回答了这个问题的资源,还是我们可以针对上述确切情况提出最佳“当前接受的答案”?

3个回答

听起来您正在寻找一种解决方案来保护“静止”的数据。您可能已经知道,仅仅在“静止”时保护数据是不够的,而在处理数据时却忽略了安全性。

如果您有购买商业(付费)解决方案的预算,您可能需要考虑其中之一。

  1. Oracle 密钥管理器
  2. RSA 数据保护管理器

有很多潜在的解决方案取决于您使用的服务。例如,Amazon 提供与其 Amazon Relational Database Service 相结合的解决方案,该服务提供了使用格式保留加密对数据进行加密的能力。

您可能想查看“透明数据加密”。了解更多有关设置架构的信息确实会有所帮助。它是真正的云设置还是托管?

最后,我敦促您考虑在云中运行“敏感”数据的安全隐患。

在 Linux 服务器上实现应用程序级加密有点棘手,因为应用程序需要能够从某个地方获取加密密钥,而您不希望它在任何地方都是明文。从监管的角度来看,您可能希望对加密密钥进行双重控制和拆分知识。

您可以在访问组之间以及应用程序和数据库之间的关键部分之间进行某种程度的逻辑分离,这些部分可以进行异或运算以创建加密密钥,尽管这可能会通过模糊性提供一些有限的安全性。

另一种选择是手动干预将密钥加载到应用程序内存中。例如,让 user1 解密包含密钥组件的 gpg 文件并将其加载到应用程序内存中,然后让 user2 解密包含密钥组件的 gpg 文件并将其加载到应用程序内存中。应用程序可以将这些组件异或在一起,因此它在内存中有一个加密密钥。你必须考虑系统重启/崩溃,我猜 user1 和 user2 可能是服务帐户......你明白了。

希望这可以帮助...

您确定您不只是在寻找个人公钥/私钥基础设施吗?您可以创建自己的 CA 服务器/中间证书/服务器证书并集中管理它们(OpenSSL/当月它们的任何 SSL 风格)。您可以使用 RSA 对加密传输中的数据 (DIT) 和静态数据 (DAR)。

它基本上就是 Oracle Key Manager 和 RSA DPM。如果您有他们的预算并且缺乏知识,那么实施商业解决方案可能是可行的,但是如果您知道自己在 linux 上做什么,那么这并不是那么具有挑战性。您可能会发现它是一个持续的过程,并且您编写自动化任务的脚本并为 Golden Images 部署 CA 证书。