如何在MongoDB Community Edition上实现静态数据加密?

问题描述:

我已经通过MongoDB docs了解如何配置仅在MongoDB Enterprise中可用的加密。如何在MongoDB Community Edition上实现静态数据加密?

如何实现静止数据MongoDB Community Edition v3.4?

就在几个月前,我对自己提出了同样的问题。这是我迄今发现的选项列表:

Alex Blex suggested一样,您可以使用Community Edition以外的其他选项。

但是,如果你还是想要去与社区版,

可以使用mongoose.js与MongoDB的交互。它有getter和setter能满足您的要求:
http://mongoosejs.com/docs/2.7.x/docs/getters-setters.html

在你的猫鼬的模式,可以为字段指定getset功能。

var mySchema = new Schema({ 
    name: { 
     type: String, 
     default: '', 
     trim: true, 
     required: 'Please enter group name', 
     unique: true, 
     get: decryptFunction, 
     set: encryptFunction 
    } 
}); 
mySchema.set('toObject', {getters: true}); 
mySchema.set('toJSON', {getters: true}); 

set将在您将任何值分配给该字段时执行。它会将该值作为参数,然后您可以编写自己的加密逻辑。

只要您访问字段的值,就会执行get。它将获得加密值作为参数,您可以在此处编写解密逻辑。您需要编写decryptFunctionencryptFunction

但是,你将无法查询与原始值的这些字段。由于mongodb不知道文本是否被加密。