【问题标题】:Mongodb community - at rest data encryption in node jsMongodb社区-节点js中的静态数据加密
【发布时间】:2021-03-18 05:22:03
【问题描述】:

我正在寻找一种方法来加密整个数据库并保持搜索数据的能力,尽管它已加密。

我在 Mongo 中看到了很多关于静态数据加密的问题,但没有一个答案可以帮助他们完成应用程序的完整流程。 我希望在这里展示我的发现并获得反馈和更多想法(我还有一些问题)。

加密选项:

1.mongoose-encryption。 完整的解决方案!可以用最少的工作为您加密所有数据库!
2. Procona mongodb - 我没有机会测试它,我花了几个小时试图安装并让它运行,但没有运气(这可能只是我......)。
3. 在模块级别创建 get 和 send 方法来加密和解密您的数据。

我对静态数据加密的要求是:

  1. 应用层不需要参与加密-解密过程。应该就像我们甚至没有加密数据(大部分)。
  2. 我们可以对加密数据执行搜索和查找。
  3. 我不知道该怎么做,但希望在加密文本字段中搜索部分单词和短语。
  4. 当然,除了对象 ID,所有数据都是加密的。

我的做法:
我想尝试使用 mongoose-encryption 来利用这个神奇插件的所有好处。
我还想将加密字段中的真实值的哈希添加到架构中,以便我可以对加密字段执行查找操作。

问题: 在 mongoose-encryptions 隐藏它之前,我似乎找不到正确的 mongoose Hook 来处理未加密的数据。所以我无法生成我的哈希。

这不起作用:

Users.pre('save', () => { 
  this.hashedName = hash(this.name)
  console.log(":(")
});

同样如上所述,在加密数据中搜索部分和短语。 使用我的方法,我们可以找到名为“Danielle”的人,但我们无法在 Hash 中搜索名称以“Dani”开头的用户。

请给我您的意见以及我的方法。我知道这是一个不容易找到解决方案的话题。

【问题讨论】:

  • 不能部分搜索加密字段。您要么必须加密搜索值并在其上查找完全匹配,要么解密所有值以在明文中搜索。
  • 是的,我就是这么想的。可以在 mongodb Enterprise 上搜索吗?
  • 作为使用 HIPAA 数据的人,我强烈建议您对磁盘进行加密,甚至不要考虑加密数据库。加密的数据库处理起来非常痛苦。

标签: node.js mongodb encryption mongoose-plugins


【解决方案1】:

如果要加密磁盘上的数据,请加密整个磁盘并加密交换。如果有人获得了数据库的副本(例如,您忘记在数据库上放置身份验证,而有人连接到数据库并转储数据),那么明文就会暴露出来。

如果您希望数据库仅存储加密数据,请使用client side encryption。这需要在客户端进行密钥管理,但这样做会使转储您的数据库的人无法获得明文。

【讨论】:

  • 谢谢,客户端加密是可行的方法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-29
  • 2015-01-06
  • 2012-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-13
  • 2021-10-06
相关资源
最近更新 更多