使用 Mongo 加密

信息安全 加密 密钥管理 数据库 mongodb nosql
2021-08-18 22:43:00

我怎样才能实现以下目标?

  • 所有计算和存储都位于云中。
  • 在 web 节点和运行 MongoDB 的 db 节点之间传输所有数据的加密。
    • 如何设置隧道?哪些协议/工具?
  • 对存储在 MongoDB 中的所有数据进行静态加密。
  • 所有数据都会经常备份(也备份到云端)。
    • 备份在传输和静止时都被加密。
  • 所有加密和密钥管理问题都在基础设施中处理,而不是在应用程序中。
    • 不应要求对应用程序代码进行任何更改。
  • 所有静态加密的密钥都可以定期轮换。
    • 密钥轮换过程简单、可编写脚本、可自动化。
    • 即使在任意多次密钥轮换之后,过去存储的数据也应该可以随时检索。
    • 备份应该可以在一段时间内检索:它们应该至少可以在一次密钥轮换中存活。

请张贴,即使您只有部分答案或对单个要点的答案。一个子目标的解决方案是整体目标解决方案的一部分。

提前感谢您的回答!

2个回答

您的要求不是特定于云的。同样的解决方案也适用于传统主机。云计算的标志是通过仅在需要时启动 VM 来动态消耗资源。

1)据我所知MongoDB 不支持 SSL为了与 MongoDB 建立安全连接,您必须使用 VPN 来创建安全隧道。

2)在将数据插入数据库之前加密数据几乎总是更好。从安全的角度来看,如果您的数据库正在处理加密,那么它需要一个密钥并且数据库受到损害,那么加密数据也受到损害。这应该由您的应用程序处理,还要注意流密码会产生更小的消息并节省空间。如果使用得当,流密码是安全的(每条消息都有唯一的 IV)。

3) 有许多使用加密的备份服务。如果您自己动手,那么我建议您使用开源项目Bacula

我认为 MongoDB 与您所要求的内容相关性只有大约 1/10。您基本上想知道如何在云中安全地存储数据和关联的密钥。有整本书都写在这... :)

您的问题可能太宽泛,我无法提供任何合理的答案,但其他人可能会做得更好。

话虽如此,微软为保护您的云应用程序编写了一个很好的模式和实践指南。这是特定于 Azure 的。