2016-11-19 3 views
0

Ich habe eine App, die zu verschiedenen Datenbanken auf einer Mongodb-Instanz verbindet. Die verschiedenen Datenbanken sind für verschiedene Clients. Ich möchte wissen, ob meine Client-Daten kompromittiert werden, wenn ich mich mit einem einzigen Benutzer bei den verschiedenen Datenbanken anmelde. Ist es für diesen Benutzer ein Muss, root zu sein? die Rolle readWrite wird den Trick machen. Ich werde Verbindung zu den Datenbanken über ein Java-Backend herstellen.Ist es unsicher, einen Root-Benutzer für mongodb zu verwenden?

Antwort

1

Es gibt keine einfache Antwort darauf. Es geht um Risiko und Kosten-Nutzen.

Wenn Sie denselben Datenbankbenutzer zum Herstellen einer Verbindung mit einer Datenbank verwenden, hängt die Trennung der Clientdaten viel mehr von der Geschäftslogik in Ihrer Anwendung ab. Wenn irgendein Teil Ihres Codes sich nur dazu entschließen kann, eine Verbindung zu einer beliebigen Client-Datenbank herzustellen, dann kann eine Anfrage von einem Client (und meiner Erfahrung nach möglicherweise) in einer anderen Client-Datenbank landen. Einige Faktoren machen dies wahrscheinlicher, zum Beispiel, wenn viele Leute Ihre App für eine längere Zeit entwickeln, wird jemand einen Fehler machen. Eine sicherere Option wäre eine zentrale Komponente oder eine Komponente, die nur sehr selten geändert wird, wobei Änderungen streng überwacht werden, die für jede Clientsitzung (oder sogar Anforderung) die Anmeldeinformationen für den Client übernehmen und diese zum Herstellen einer Verbindung verwenden zur Datenbank. Auf diese Weise würde jeder zukünftige Fehler eines Entwicklers in seinem Umfang begrenzt sein, sie wären beispielsweise nicht in der Lage, die falsche Datenbank zu verwenden. Und dann haben wir keine nicht vorsätzlichen Anwendungsfehler erwähnt, die es einem Angreifer ermöglichen würden, dasselbe zu tun, und die viel wahrscheinlicher sind. Wenn Sie eine starke Durchsetzung und Trennung an Ort und Stelle haben, kann ein böswilliger Benutzer von einem Client möglicherweise nicht auf andere Clientdaten zugreifen, selbst im Falle von Anwendungsschwachstellen, da die Verbindung auf die richtige Datenbank beschränkt wäre. (Beachten Sie, dass Ihre Anwendung auch in diesem Fall Zugriff auf alle Anmeldeinformationen der Client-Datenbank haben muss, sodass ein vollständiger Verstoß gegen Ihre Anwendung oder den Server immer noch alle Client-Daten für den Angreifer bedeuten würde. Aber nicht jeder erfolgreiche Angriff endet mit einer vollständigen Kompromittierung.)

Ob Sie dies tun oder nicht, sollte von Risiken abhängen. Eine Frage, die Sie beantworten sollten, ist, wie viel es Sie kosten würde, wenn eine clientübergreifende Datenpanne passieren würde. Wenn es keine große Sache ist, ist wahrscheinlich die Trennung in der Geschäftslogik in Ordnung. Wenn es bedeutet, aus dem Geschäft zu gehen, ist es definitiv nicht genug.

Wie für den Benutzer für die Verbindung verwendet werden sollte root sein - nein, definitiv nicht. Nach dem Prinzip der geringsten Rechte sollten Sie einen Benutzer verwenden, der nur die Rechte an den Dingen hat, die er benötigt, d. Verbindung zu dieser Datenbank und sonst nichts.

Verwandte Themen