2017-10-11 6 views

答えて

0

私は数ヶ月前に同じ質問を自分自身にお願いしていました。これは私がこれまでに見つけたオプションのリストです:

  • ファイルシステムレベルのストレージボリュームを暗号化します。 Atlasが提供しているのは、ほとんどのクラウドプロバイダがサポートしているものです。http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html,https://docs.microsoft.com/en-us/azure/security-center/security-center-disk-encryptionなどです。クラウドキー管理と組み合わせると、IMHOの最も簡単な方法です。大部分の運用システムでは、オンプレミスのストレージでも同じことが達成できます。基礎となるOSについて十分な詳細を提供するには、relevant StackExchange communityでそれを行う方法を尋ねてください。
  • Percona MongoDB serverには、監査と暗号化を含むいくつかのエンタープライズ機能があります。 IIRCは、OSが提供するディスク暗号化を使用しているので、基本的に前のものと同じです。
  • は、アプリケーションレベルの機密データを暗号化します。例えばhttps://www.openssl.org/docs/manmaster/man1/rsautl.html。もう少し柔軟性がありますが、フルテキスト検索や暗号化されたフィールドのインデックスのソートなど、いくつかの機能が失われます。
  • エンタープライズライセンスを購入してください。直接質問に答えないが、以前のオプションと比較してよりコスト効率が良いかもしれない。
0

Alex Blex suggestedのように、Community Edition以外のオプションがあります。それでも、コミュニティ版と一緒に行きたい場合は

しかし、

あなたはMongoDBのと対話するためのmongoose.jsを使用することができます。あなたのマングーススキーマで
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はテキストが暗号化されていることを知らないので。

関連する問題