web-dev-qa-db-ja.com

ユーザーパスワードをNoSQLデータベースに保存しますか?

私は現在ウェブサイトのバックエンドをコーディングしており、これが議論されている記事に出くわしていません。すべてのアプリケーションデータをMongoDBに保存したいのですが、機密性の高いユーザー情報をMySQLデータベースに分割したいと思います。私の合理的な理由は、MySQLデータベースは認証のためにのみアクセスされるが、ユーザー名とパスワードをACIDであるデータベースに保存したいということです。追加の利点は、ユーザーのデータがユーザーエンティティ自体から物理的に分離されていることです。

私の質問は、これは必要ですか?すべてのデータをMongoDBに保持する必要がありますか?

7
MikeG

使用する予定のデータベースエンジンのセキュリティが十分でないと思われる場合は、何にでも使用することはお勧めしません。それが十分に安全であれば、2つの異なるデータベースAPIの追加された複雑さはあなたの人生を難しくし、攻撃者に実際には影響しません(とにかくそれをファイルにダンプするだけです)。

データを物理的に分離したい場合は、パスワードデータベースを他のデータとは別のマシンに置くことができます。

あなたが パスワードを正しくハッシュする (PBKDF2、bcryptまたはscrypt、高コスト/反復回数)である場合、パスワードデータベースは、愚かなパスワードの場合を除いて、攻撃者にとってあまり有用ではないはずです。

ACIDコンプライアンスについて:MongoDBには アトミック操作 がありますが、マルチトランザクションはありません-- ドキュメント トランザクションは1つしかないデータベースではおそらく必要ありません- コレクション

4
Brendan Long