2017-10-23 5 views
0

Unsere Anwendung verwendet eine SQL-Datenbank zum Speichern von Daten, die nicht vom Benutzer geändert werden dürfen.Zugriff auf Datenbanken auf dem selbst gehosteten MySQL-Server verhindern

Vorerst wir eine lokale sqlite db verwenden, die über sqlcipher verschlüsselt und entschlüsselt die wird von uns festgelegt mit einem privaten Schlüssel auf Anwendung starten. Auf diese Weise kann der Benutzer keine Daten ändern, ohne diesen Schlüssel zu kennen oder sogar die Datenbank in seinem bevorzugten Datenbankbrowser zu laden.

Wir wollen jetzt zulassen, dass die Datenbank auf einem MySQL-Server sein kann. Aber soweit ich das verstehe ist eine gleiche Art der Sicherung der Daten nicht möglich. Vor allem, weil wir wollen, dass der Benutzer seinen eigenen Server hosten kann (genauso wie er seine "eigene" lokale sqlite Datei verwendet) Ich verstehe, dass es eine sogenannte "at rest" Verschlüsselung für innodb in mysql gibt, aber das scheint für den Benutzer vollständig transparent sein. Wenn der Benutzer also eine Verbindung zur db herstellt, muss er keinen Schlüssel eingeben, damit er entschlüsselt wird, aber dies geschieht automatisch für ihn im Hintergrund.

Gibt es eine Möglichkeit, den Benutzer zu erlauben, seinen eigenen mysql-Server zu verwenden, aber ihn daran zu hindern, jede Datenbank zu ändern, die wir darauf erstellen? Oder ist das nur mit einem Server möglich, den wir selbst hosten?

Antwort

0

Lassen Sie mich zuerst einen kurzen Kommentar zu der Methode geben, die Sie bis jetzt verwendet haben.

Ich denke, dass das Konzept in erster Linie falsch war, weil es nicht sicher ist. Der Entschlüsselungsschlüssel muss sich in der Anwendung befinden, da Ihre Benutzer sonst nicht in der Lage wären, die Datenbank zu öffnen. Sobald die Anwendung ausgeführt wird, kann ein Benutzer diesen Schlüssel mit bekannten Methoden/Tools aus dem Arbeitsspeicher extrahieren.

Im Gegensatz dazu, wenn Sie einen Server in einem verschlossenen Raum verwenden, haben Sie real Sicherheit vorausgesetzt, dass die Server-Software keine Fehler hat, die es Benutzern ermöglichen, sie anzugreifen.

die Antwort auf Ihre Frage ist somit:

  • Ja, es klug ist, zu MySQL zu aktualisieren.

  • Verwenden Sie einen Server für alle Benutzer, der sich physisch an einem Ort befindet, auf den normale Benutzer keinen Zugriff haben.

  • Nein, versuchen Sie nicht, die MySQL-Tabellendateien auf der Festplatte zu verschlüsseln, wenn Ihre einzige Sorge darin besteht, dass Benutzer die Daten nicht ändern können.

  • Weisen Sie stattdessen der zentralen Datenbank und den Tabellen Zugriffsrechte zu. Wenn die normalen Benutzer nur Leseberechtigung für alle Tabellen haben, haben sie keine Möglichkeit, Daten über das Netzwerk zu ändern, sondern können alle Daten lesen. Soviel ich verstanden habe, ist das was du willst.

+0

Hm nicht genau, sorry, wenn ich unklar gewesen bin. Danke für den Kommentar, wir kennen die Risiken, haben aber mit dem Kunden vereinbart, dass die gewählte Methode für eine Basisversion ausreichend ist. Für eine professionelle Version sollte dies jedoch verbessert werden. In Bezug auf die Datenbank stellte sich die Frage, ob es möglich ist, dass der Benutzer/die Firma einen bereits vorhandenen mysql-Server in seinem Intranet verwenden kann, um sich einfach über unsere Anwendung mit ihm zu verbinden, aber wir können sie trotzdem sicherstellen sind nicht in der Lage, die Daten zu bearbeiten. – acj

+0

aber es sieht so aus, als ob die einzige Möglichkeit darin besteht, den mysql Server innerhalb unserer Installationsprozeduren selbst zu installieren, oder irre ich mich? – acj

+0

Ich denke, die CEOs Ihres Unternehmens und Ihrer Kundenfirma sollten sich unterhalten. Es sollte möglich sein, * Ihre * Datenbank auf * ihrem * Server zu installieren und * durch einen schriftlichen Vertrag * sicherzustellen, dass * nur Ihre Admins oder deren Admins * physischen Zugriff auf diesen Server haben und kein Administrator die entsprechenden Daten berührt. Wenn dies nicht möglich ist, installieren Sie entweder Ihren eigenen MySQL-Server an ihrem Platz (dies ist jedoch nie sicher, solange ihre Administratoren physischen Zugriff auf den Server haben), oder mieten Sie einen Server von einem Hosting-Unternehmen. – Binarus

Verwandte Themen