2016-11-19 9 views
0

私は、mongodbインスタンス上の異なるデータベースに接続するアプリケーションを持っています。異なるデータベースは異なるクライアント用です。私は、単一のユーザーを使用して異なるデータベースにログインすると、クライアントのデータが侵害されるかどうかを知りたいと思っています。また、このユーザーがrootになる必要がありますか? readWriteロールにトリックを行います。私は、Javaバックエンドを介してデータベースに接続することになります。mongodbにrootユーザーを使用することは危険ですか?

答えて

1

これに対する直接的な答えはありません。それはリスクとコスト便益についてです。

あなたが任意のデータベースに接続するために同じデータベース・ユーザーを使用する場合は、クライアントデータの分離は、アプリケーションでビジネスロジックにはるかに依存します。コードのいずれかの部分だけがクライアントデータベースに接続することを決定できれば、あるクライアントからの要求は、(私の経験によれば、最終的には)別のクライアントのデータベースで終了する可能性があります。たとえば、多くの人があなたのアプリを長時間開発した場合、誰かが間違いを犯すなど、いくつかの要因が起こりやすくなります。

より安全なオプションは、変更が厳密に監視されているため、ほとんど変更されない中央の部分またはコンポーネントを持つことです。各クライアントセッション(またはリクエスト)に対して、クライアントに資格情報を与えて接続するデータベースに転送します。このようにして、開発者による将来の間違いは範囲が限定され、間違ったデータベースを使用することはできません。そして、我々は、意図的でないアプリケーションの欠陥については言及していない。攻撃者がこれを行う可能性があり、これははるかに可能性が高い。強力な執行と分離が行われている場合、ある種のアプリケーションの脆弱性がある場合でも、適切なデータベースに限定されているため、あるクライアントの悪意のあるユーザーが他のクライアントのデータにアクセスできない場合があります。 (この場合であっても、アプリケーションはすべてのクライアントデータベースの資格情報にアクセスする必要があるので、アプリケーションやサーバーを完全に侵害すると、すべてのクライアントデータが攻撃者に失われることになります。 )

これを行うかどうかは、リスクに依存する必要があります。あなたが答えるための1つの質問は、クライアント間のデータ違反が起こった場合にどれくらいの費用がかかるかということです。それが大したことでなければ、おそらくビジネスロジックの分離は大丈夫です。それがビジネスを失うことを意味するなら、それは間違いなく十分ではありません。

接続に使用されているユーザーはrootでなければなりません。間違いなく最低限の特権の原則に従えば、必要なものだけの権利を持つユーザ、つまりそのデータベースに接続し、他には何もしません。

関連する問題