Mongodb 社区 - 节点 js 中的静态数据加密
Mongodb community - at rest data encryption in node js
我正在寻找一种方法来加密整个数据库并保持搜索数据的能力,尽管它是加密的。
我在 Mongo 中看到了很多关于静态数据加密的问题,但是 none 得到了一个答案,可以帮助人们完成他们应用程序的完整流程。
我希望在这里展示我的发现并得到反馈和更多想法(我还有一些问题)。
加密选项:
1.mongoose-encryption。
完整的解决方案!可以用最少的工作为您加密所有数据库!
2. Procona mongodb - 我没有机会测试它,我花了几个小时尝试安装并将它安装到 运行,但运气不佳(不过这可能只是我一个人..) .
3. 创建获取和发送方法以在模块级别加密和解密您的数据。
我对静态数据加密的要求是:
- 应用层不需要参与加解密过程。应该就像我们甚至没有加密数据(大部分)。
- 我们可以对加密数据执行搜索和查找。
- 我不知道该怎么做,但希望在加密文本字段中搜索部分单词和短语。
- 当然,除了对象 ID 之外,所有数据都是加密的。
我的做法:
我想尝试使用 mongoose-encryption 来使用这个神奇插件的所有好处。
我还想将加密字段中真实值的哈希添加到架构中,以便我可以在加密字段上执行查找操作。
问题:
在 mongoose-encryptions 隐藏它之前,我似乎无法找到正确的 mongoose Hook 来调整未加密的数据。所以我无法生成哈希。
这行不通:
Users.pre('save', () => {
this.hashedName = hash(this.name)
console.log(":(")
});
同样如上所述,在加密数据中搜索部分和短语。
通过我的方法,我们可以找到名为“Danielle”的人,但我们无法在 Hash 中搜索名称以“Dani”开头的用户。
也请大家对我的做法提出意见。我知道这是一个不容易找到解决方案的话题。
如果要加密磁盘上的数据,请加密整个磁盘并加密交换区。如果有人获得了数据库的副本(例如,您忘记在数据库上进行身份验证,并且有人连接到数据库并转储数据),明文就会暴露。
如果您希望数据库只存储加密数据,请使用client side encryption。这需要在客户端进行密钥管理,但这样做是为了防止转储您的数据库的人无法获得明文。
我正在寻找一种方法来加密整个数据库并保持搜索数据的能力,尽管它是加密的。
我在 Mongo 中看到了很多关于静态数据加密的问题,但是 none 得到了一个答案,可以帮助人们完成他们应用程序的完整流程。 我希望在这里展示我的发现并得到反馈和更多想法(我还有一些问题)。
加密选项:
1.mongoose-encryption。
完整的解决方案!可以用最少的工作为您加密所有数据库!
2. Procona mongodb - 我没有机会测试它,我花了几个小时尝试安装并将它安装到 运行,但运气不佳(不过这可能只是我一个人..) .
3. 创建获取和发送方法以在模块级别加密和解密您的数据。
我对静态数据加密的要求是:
- 应用层不需要参与加解密过程。应该就像我们甚至没有加密数据(大部分)。
- 我们可以对加密数据执行搜索和查找。
- 我不知道该怎么做,但希望在加密文本字段中搜索部分单词和短语。
- 当然,除了对象 ID 之外,所有数据都是加密的。
我的做法:
我想尝试使用 mongoose-encryption 来使用这个神奇插件的所有好处。
我还想将加密字段中真实值的哈希添加到架构中,以便我可以在加密字段上执行查找操作。
问题: 在 mongoose-encryptions 隐藏它之前,我似乎无法找到正确的 mongoose Hook 来调整未加密的数据。所以我无法生成哈希。
这行不通:
Users.pre('save', () => {
this.hashedName = hash(this.name)
console.log(":(")
});
同样如上所述,在加密数据中搜索部分和短语。 通过我的方法,我们可以找到名为“Danielle”的人,但我们无法在 Hash 中搜索名称以“Dani”开头的用户。
也请大家对我的做法提出意见。我知道这是一个不容易找到解决方案的话题。
如果要加密磁盘上的数据,请加密整个磁盘并加密交换区。如果有人获得了数据库的副本(例如,您忘记在数据库上进行身份验证,并且有人连接到数据库并转储数据),明文就会暴露。
如果您希望数据库只存储加密数据,请使用client side encryption。这需要在客户端进行密钥管理,但这样做是为了防止转储您的数据库的人无法获得明文。