Wir haben ein paar Hinweise:
- Entwickler benötigen ein Replikat der Produktionsdatenbank auf ihren Computern.
- Entwickler haben das Passwort für diese Datenbank in den App.config-Dateien.
- Wir wollen nicht, dass die Daten in dieser Datenbank kompromittiert werden.
Einige Lösungsvorschläge und deren Nachteile:
- Full-Disk-Verschlüsselung. Dies löst alle Probleme, beeinträchtigt jedoch die Leistung des Laptops. Wir sind ein Start-up-Unternehmen, haben also kein Geld für Kraftpferde.
- Erstellen Sie eine VM mit verschlüsselter Festplatte und speichern Sie die Datenbank darauf. Es funktioniert gut, aber es hilft nicht allzu viel, da in Web.Config ein Kennwort vorhanden ist.
- Lösung Nummer 2 +, bei der der Entwickler das Datenbankkennwort jedes Mal eingeben muss, wenn er etwas ausführt. Es löst alle Probleme, ist aber für Entwickler, die die Anwendung manchmal mehrmals pro Minute starten, sehr umständlich. Außerdem haben wir mehrere Anwendungen, die eine Verbindung zu derselben Datenbank herstellen, und die Implementierung eines Kennwortbildschirms muss sich in beiden unterscheiden.
Meine Frage ist also, ob es eine gemeinsame Lösung für ein solches Problem gibt oder Vorschläge, wie man eine der oben genannten Lösungen umsetzt.
Antworten:
Sie möchten nicht nur keine Kopie der Produktionsdatenbank, sie ist möglicherweise auch illegal. In den USA können Sie beispielsweise Produktionsdaten nicht aus der Produktionsumgebung verschieben, wenn sie regulierte Informationen wie z. B. persönliche Gesundheitsdaten, Finanzdaten oder sogar Daten enthalten, die bei Identitätsdiebstahl verwendet werden könnten. Wenn Sie dies tun, könnten Sie eine Geldstrafe erhalten, Ihre Compliance-Position verlieren und daher aggressiveren Audits unterzogen werden oder sogar in einem Rechtsstreit genannt werden.
Wenn Sie zum Testen Daten im Produktionsmaßstab benötigen, haben Sie mehrere Möglichkeiten:
Für Option 2
quelle
Können Sie den Entwicklern mindestens VMs in Ihrem Rechenzentrum geben, in die sie für diese Arbeit RD ausführen können? Während sie eigentlich mit Nicht-Produktionsdaten arbeiten sollten, wäre dies sicherer, bis Sie dorthin gelangen, da die Daten nicht auf leicht gestohlenen Laptops gespeichert würden.
quelle
Ändern Sie nach Möglichkeit Ihre Arbeitsweise.
Wie andere darauf hingewiesen haben:
Beide setzen Sie einem erheblichen Risiko aus und sollten nach Möglichkeit geändert werden. Sie sollten zumindest ernsthaft einschätzen, wie hoch die Kosten für diese Änderungen wären. Wenn dies eine externe Abhängigkeit ist, zu deren Änderung Sie nicht befugt sind, sollten Sie in Erwägung ziehen, dies als Anliegen gegenüber demjenigen zu erörtern, der über diese Befugnis verfügt.
In der realen Welt ist es jedoch möglicherweise nicht möglich, dies zu ändern. Unter der Annahme, dass das, was Sie tun, legal ist, müssen Sie möglicherweise (zumindest vorübergehend) mit dieser Regelung leben.
Wenn dies wirklich notwendig ist, müssen Sie nur die Festplattenverschlüsselung durchführen.
Angesichts der Risiken müssen Sie die bestmögliche Sicherheitsoption verwenden, und das ist es. Wenn es einen Leistungstreffer gibt, leben Sie damit. Das Arbeiten mit vertraulichen Daten ist mit Kosten verbunden.
Wenn ich Ihr Kunde wäre, wäre ich nicht beeindruckt, dass Sie sich entschieden haben, für meine Daten nicht die beste verfügbare Sicherheitsoption zu verwenden, da Ihre Laptops dadurch etwas langsamer werden.
quelle
Die Antwort von Corbin March ist ziemlich gut. Ich möchte nur ein zusätzliches Detail hinzufügen, dass Ihre Produktionsdatenbank im Allgemeinen zwei Datenklassen enthält: System- / Anwendungsmetadaten; und Client-Benutzerdaten / Transaktionsdaten. Letzteres sollte NIEMALS in einer Entwicklungsumgebung "wie sie ist" verwendet werden.
In der Tat ist es sehr selten, dass Sie für die Entwicklung tatsächliche Informationen zum Produktionskunden benötigen.
Wenn das Problem, das das OP hier beschreibt, Geschäftsgeheimnisdaten oder anderweitig stark proprietäre Systemdaten umfasst, bei denen es sich nicht um Kundendaten handelt, die von Entwicklern benötigt werden, muss der Sicherheitsansatz ein Schema umfassen, das nicht vorhanden ist Das DB-Passwort wird im Klartext in einer Ressourcendatei gespeichert. Es muss einen Mechanismus geben, um beispielsweise ein tägliches Kennwort neu zu generieren, das nicht auf der Festplatte gespeichert ist.
quelle
client user data/transactional data... should NEVER be used in a development environment "as is."
- Das klingt für mich nicht praktikabel. Produktionsbezogene Programmierprobleme, die mit den Daten eines bestimmten Kunden zu tun haben, wären im Rahmen dieser Vereinbarung nicht lösbar. Darüber hinaus sind tatsächliche Live-Daten vom Standpunkt des Testens aus äußerst nützlich. Die Privatisierungs- oder Anonymisierungsbemühungen sollten sich ausschließlich auf die Daten konzentrieren, die speziell geregelt sind.Sie geben nicht an, welche Datenbank und welche Umgebung.
Wenn Sie die integrierte Sicherheit verwenden können, ist der Zugriff auf die Datenbank nur möglich, wenn Sie als dieser Benutzer angemeldet sind. Ja, wenn sich die Daten auf der Festplatte befinden, können sie gehackt werden, dies ist jedoch eine Verteidigung der ersten Ebene.
App.config lässt mich denken, dass dies ein .NET sein könnte. Legen Sie config in ein USB-Stick und lesen Sie es vom USB-Stick. Wenn das Laufwerk nicht vorhanden ist, geben Sie als Benutzer das Kennwort ein.
Gibt es eine Möglichkeit, das Passwort im Speicher zu speichern, wenn es zum ersten Mal eingegeben und von allen gelesen wird? Auch hier geben Sie die Umgebung nicht an. Speicherabgebildete Dateien
Bei einigen TDE können Sie den Schlüssel auf einem separaten Gerät speichern, sodass sie den Schlüssel nur beim Starten des Datenbankservers bereitstellen.
quelle
Eine mögliche Option besteht darin, eine Kopie der Datenbank zu erstellen und diese Kopie mit einem Skript zu bereinigen, sodass Sie andere Daten als die tatsächlich in der Produktion befindlichen erhalten. Sie werden nicht die gleichen Daten wie die Produktion haben, aber Sie werden den gleichen Maßstab haben.
quelle