Was ist eine gute Sicherheitsmethode zum Speichern einer kritischen Datenbank auf den Laptops von Entwicklern?

33

Wir haben ein paar Hinweise:

  1. Entwickler benötigen ein Replikat der Produktionsdatenbank auf ihren Computern.
  2. Entwickler haben das Passwort für diese Datenbank in den App.config-Dateien.
  3. Wir wollen nicht, dass die Daten in dieser Datenbank kompromittiert werden.

Einige Lösungsvorschläge und deren Nachteile:

  1. 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.
  2. 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.
  3. 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.

Svarog
quelle
26
Haben Sie tatsächlich die Auswirkungen der Festplattenverschlüsselung auf die Leistung gemessen? Ich habe es auf ziemlich alten Laptops verwendet und keine signifikanten Leistungseinbußen festgestellt. Moderne Betriebssysteme können ziemlich gut cachen und Festplatten sind sowieso langsam. Die schlechteste Auswirkung ist wahrscheinlich auf Ihre Batterielebensdauer.
5gon12eder
69
Um ehrlich zu sein, klingt dies nicht nach dem richtigen Ansatz. 1) Warum benötigen Entwickler eine Produktionsdatenbank auf ihren Maschinen? Gibt es keine Möglichkeit, Dummy-Daten für eine Entwickler-Datenbank zu erstellen? 2) Warum wird das Passwort in einer Konfigurationsdatei im Klartext gespeichert? Sie versuchen anscheinend, einem fehlerhaften Prozess einen Pflasterstein aufzuzwingen. Vielleicht können Sie überarbeiten, was auf den Dev-Maschinen tatsächlich vorhanden ist und wie das Kennwort für die Datenbank gespeichert wird.
Thomas Stringer
2
Es gibt Gründe für Entwickler, eine Produktionsdatenbank zu benötigen. Aus historischen Gründen ist ihre Arbeit zu stark mit den Live-Daten gekoppelt. Ich weiß, dass dies eine schlechte Idee ist, und wenn wir keine gute Lösung finden, werden wir auf Dummy-Daten umsteigen. Im Moment versuche ich, ohne das eine gute Lösung zu finden.
Svarog
6
Kein Benutzer eines MacBook Pro kann anhand der Geschwindigkeit des Computers feststellen, ob die Festplattenverschlüsselung auf einem SSD-Laufwerk aktiviert oder deaktiviert ist. Es gibt keinen Unterschied. Keine, die Sie bemerken können. Vielleicht kann man messen, aber nichts, was auffällt.
gnasher729
5
Ich bin @ gnasher729s zweitem Kommentar. Da in regulierten Umgebungen (Finanz- und Gesundheitswesen) seit vielen Jahren die vollständige Festplattenverschlüsselung verwendet wird, muss die Leistung nicht spürbar beeinträchtigt werden. Viele Leute bringen andere gültige Punkte vor, aber in einer HIPAA-Umgebung ist es schwierig, eine vernünftige Richtlinie ohne vollständige Festplattenverschlüsselung zu haben, selbst wenn Datenbanken nicht auf Notebooks gespeichert sind. E-Mails und andere Datenfragmente landen ohnehin oft dort. Swap files .... etc ... Die vollständige Festplattenverschlüsselung ist nicht ausreichend, aber normalerweise notwendig.
Joshp

Antworten:

100

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:

  1. Generieren Sie alle Dummy-Daten. Das ist schwieriger als es klingt. Es ist überraschend schwierig und arbeitsintensiv, vernünftige imaginäre Daten zu generieren.
  2. Anonymisieren Sie Ihre Produktionsdaten. Dies kann einfacher sein, aber mit Vorsicht vorgehen.

Für Option 2

  • In der Produktionsumgebung erstellt ein autorisierter Datenbankadministrator eine Kopie der Produktionsdaten.
  • Noch in der Produktionsumgebung führt derselbe autorisierte Administrator eine Routine aus, die alle vertraulichen Daten anonymisiert. Im Zweifelsfall anonymisieren.
  • Erst dann sollten die Daten in eine andere Umgebung verschoben werden.
Corbin March
quelle
31
und das Passwort für die Datenbankkopie sollte nicht dasselbe sein wie das für die Produktionsversion .....
Lightness Races mit Monica
3
"In den USA können Sie beispielsweise Produktionsdaten nicht aus der Produktionsumgebung verschieben, wenn sie regulierte Informationen enthalten." Was? Haben Sie eine Quelle dafür? Können Sie beispielsweise keine Sicherungen einer Produktionsdatenbank als Daten für die Staging-Umgebung oder zum Testen von Datenbanken auf Entwicklermaschinen verwenden?
Kindermädchen
12
@nanny Nicht, wenn Sie regulierte Daten verwenden. Zum Beispiel habe ich unter HIPAA-Regulierung gearbeitet. Die HIPAA erklärt: "Die erfassten Unternehmen müssen außerdem angemessene Mindestrichtlinien und -verfahren einhalten, um zu begrenzen, wie viele geschützte Gesundheitsinformationen für bestimmte Zwecke verwendet, offengelegt und angefordert werden." Eine notwendige Mindestrichtlinie kann interpretiert werden. Unser Rechtsbeistand schlug eine strikte Interpretation vor, die vertrauliche Daten enthielt, auf die Entwickler nicht zugreifen konnten. (Müssen sie wirklich ihre Arbeit tun?) Die gleiche Vorsicht gilt für die Einhaltung finanzieller Vorschriften wie für PCI.
Corbin
4
@ Kindermädchen Nehmen Sie dies als Hörensagen von einem Nicht-Anwalt, aber wie ich es verstehe, variieren die Regeln stark von Staat. Der Rechtsbeistand, mit dem ich zusammenarbeite, ist immer auf der Hut. Genau genommen benötigen Entwickler keine tatsächlichen SSNs, um ihre Aufgaben zu erfüllen. Daher schlägt der Anwalt vor, dass diese SSNs in einer geschützten Umgebung leben, auf die Entwickler keinen Zugriff haben. Hör mir aber nicht zu. Ein Anwalt, der auf Ihre langfristigen Interessen achtet, ist die beste Ressource.
Corbin,
5
Streng genommen ist es nicht ILLEGAL, mit PPI nachlässig umzugehen, es sei denn, Sie leisten Regierungsarbeit, dann kommt Titel 32 ins Spiel ... aber es handelt sich um eine schwerwiegende zivilrechtliche Gefährdung. Dies ist jedoch eine gute Antwort. upvoted.
Dwoz
9

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.

Brian Knoblauch
quelle
Dies liest sich eher wie ein Kommentar, siehe Wie man antwortet
Mücke
5
@gnat, diese Antwort mag kurz sein, aber es ist eine sehr gute vorgeschlagene Alternative.
Sei nicht so ein Pedant, @gnat ... das ist eine gute Antwort.
Dwoz
@ dan1111 Das ist das Problem. Es ist keine Antwort. Es ist eine Alternative. Das macht es zu einem Kommentar, nicht zu einer Antwort.
corsiKa
2
@corsiKa, Antworten, die die Prämisse der Frage in Frage stellen, sind zulässig und oft sehr gute Antworten. Siehe XY-Problem: meta.stackexchange.com/questions/66377/what-is-the-xy-problem . Und detailliertere Antworten mögen besser sein, aber dies ist immer noch eine Antwort.
8

Ändern Sie nach Möglichkeit Ihre Arbeitsweise.

Wie andere darauf hingewiesen haben:

  • Die Verwendung von Produktionsdaten für die Entwicklung ist keine gute Praxis.
  • Es ist keine gute Praxis, ein Passwort im Klartext zu speichern.

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
1
"Keine ideale Lösung" sollte durch "eine völlig dumme Idee" ersetzt werden IMO
Darkhogg 20.11.15
@ Darkhogg, du hast recht, es sollte stärker sein. Bearbeitet Ich würde nicht so weit gehen, "völlig dumm" zu sein, ohne zu wissen, wie empfindlich die Anwendung ist. Praktisch gesehen ist das Risiko von Kompromissen bei der Verwendung der vollständigen Festplattenverschlüsselung sehr, sehr gering, so dass es möglich ist, aus Sicherheitsgründen zu viel davon zu machen.
Ich stimme dem ersten Punkt zu, aber nicht dem zweiten. Wenn Sie Ihr Passwort nicht im Klartext speichern, wo speichern Sie es (1) in Chiffretext oder (2) in Ihrem Gehirn. Wenn (1), wo speichern Sie das Kennwort für die Verschlüsselung (Endlosschleife erkannt)? Wenn (2), dann hoffe ich, dass Sie gerne um 2:00 Uhr aufwachen, um das Passwort einzugeben und den Dienst neu zu starten.
Emory
1

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.

Dwoz
quelle
5
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.
Robert Harvey
@RobertHarvey, es funktioniert nur dann nicht, wenn Sie das Produktionsproblem in einer Entwicklungsumgebung nicht reproduzieren können. Ich denke, dass ich während meiner (langen) Karriere mit ein paar Fingern zählen kann, wie oft angemessen bereinigte Testdaten nicht ausreichten, um einen Produktionsfehler zu reproduzieren. "Proprietary Business Information" geht weit über SSNs und CC-Nummern hinaus!
Dwoz
4
Aber wenn Sie diesen Weg beschreiten, werden Sie IT-Mitarbeiter haben, die ihre Arbeit nicht erledigen können, weil sie keinen Administratorzugriff auf alles haben. Ich gebe zu, dass dies potenzielle Probleme mit Snowden verursacht, aber ich sehe keine praktikable Alternative, außer Menschen einzustellen, denen Sie vertrauen können. Sarbanes Oxley und HIPAA legen sehr genau fest, welche Art von Daten gespeichert werden müssen, und es sind nicht "alle Produktionsdaten" enthalten, und das bei weitem nicht. Trotzdem glaube ich nicht, dass es jemals Produktionsdaten auf Roaming-Laptops geben sollte.
Robert Harvey
1
-1 für NIE. Ihre differenzierteren Kommentare sind besser als Ihre Antwort. Sie sollten sie darin bearbeiten.
1
@ dan1111 wir können uns dann einigen, nicht zuzustimmen. Kundendaten "wie sie sind" sollten NIEMALS NIEMALS in Entwicklungssystemen verwendet werden. Es sollte immer saniert werden. Du glaubst das nicht, weil du noch nicht von diesem tollwütigen Mungo gebissen wurdest ... und das ist es, wenn es passiert. Ein tollwütiges verrücktes Nagetier, das dein Blut abziehen will. Nimm meinen Rat, vermeide den tollwütigen Mungo.
Dwoz
1

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.

Paparazzo
quelle
0

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.

Jason Crosby
quelle
dies scheint nur wiederholen Punkt gemacht und erklärt in Top-Antwort vor einer Woche über
gnat