So trennen Sie vertrauliche Daten in der Datenbank (MySql)


9

Ich muss eine Datenbank entwerfen, die Informationen über persönliche Krankheiten von Benutzern enthält.

Was kann der Ansatz sein, um die Spalten der DB-Tabellen zu implementieren: Verschlüsseln der Informationen, Trennen von Daten in zwei verschiedenen DBs, einer für vertrauliche Daten und einer für nicht vertrauliche Daten oder beides oder ein anderer Ansatz?


1
Vor wem müssen Sie die Daten schützen?
Oded

Gute Frage, aber vielleicht sollte dies auf dba.stackexchange.com/questions migriert werden ?
FrustratedWithFormsDesigner

@Oded die dba sollte nicht in der Lage sein, die Informationen über die Krankheit des Benutzers der Datenbank anzuzeigen.
Carlo

2
Aber wer sollte das nicht ?
Oded

1
Sie könnten es auf der Anwendungsseite verschlüsseln, aber die Anwendung hätte den Schlüssel. Ist dies eine Webanwendung, die die Daten "eingibt"?
Ominus

Antworten:


5

Sie können die Daten mit einem in Ihrer Webanwendung gespeicherten Schlüssel verschlüsseln, sodass die Daten in verschlüsselter Form aus db geschrieben / gelesen werden. Jeder, der Zugriff auf den Code hat, hat jedoch Zugriff auf den Schlüssel und mit dem Schlüssel auf die unverschlüsselten Daten. Dies löst die Anforderung

Die Datenbank sollte nicht in der Lage sein, die Informationen über die Krankheit des Benutzers der Datenbank anzuzeigen.

Was die Trennung von Datenbanken angeht, denke ich nicht, dass dies erforderlich ist. Sie speichern die Daten verschlüsselt und verwenden die Datenbankberechtigungen des Benutzers. Die Tabelle (falls dies überhaupt erforderlich ist) ist mehr als ausreichend. Ich denke, die zusätzliche Datenbank fügt eine Komplexitätsebene ohne viel anderes hinzu. Wenn es sich nicht an einem anderen Ort befindet, kann es zu einer kleinen Verbesserung gegenüber einem einzelnen Datenbanksystem kommen.


1
Ein weiterer Grund für separate Datenbanken ist die gesetzliche oder vertragliche Anforderung, dass die sensiblen Daten in einem Land (nicht in der Cloud) gespeichert werden müssen.
Gilbert Le Blanc

2

Die Antwort von Ominus adressiert Ihre erste Frage. Die Antwort auf die zweite Frage erfordert möglicherweise weitere Details zu Ihrer Bewerbung.

Ein anderer Ansatz mit noch größerer Sicherheit, wenn die Patienten auf die Datenbank zugreifen müssen, könnte darin bestehen, für jeden Benutzer eine separate Datenbank zu haben. Bei diesem Ansatz können Sie ein Framework verwenden, das mandantenfähige Funktionen für mehrere Datenbanken bietet. Das Problem ist jedoch, dass die Synchronisierung dieser Benutzer unglaublich schwierig ist, wenn Sie separate Anwendungsbenutzer und separate Datenbankbenutzer haben. Ich würde vermuten, dass Patienten nicht auf Ihre Datenbank zugreifen müssen. Wenn dies erforderlich ist, ist es möglicherweise am sichersten, einen Schlüssel pro Benutzer zu haben.

Neben den gesetzlichen oder vertraglichen Anforderungen kann ich mir auch andere Gründe vorstellen, separate Datenbanken zu haben: Die Wahrnehmung des Kunden hinsichtlich erhöhter Sicherheit, die den Verkauf erleichtert, die Sorge, dass die Verschlüsselung beschädigt wird, und die Sorge, dass der Schlüssel kompromittiert wird.

In Bezug auf den Teil von Briddmus 'Antwort, in dem er angibt, "dass Sie mehr als nur die medizinischen Informationen verschlüsseln müssen": Dies gilt nur, wenn jeder in der Datenbank eine Krankheit hat. (Ich würde vermuten, dass dies der Fall ist).

Hinweis: Teile dieser Antwort eignen sich besser als Kommentare, aber ich habe noch nicht genügend Mitarbeiter, um hier Kommentare zu veröffentlichen.


1

Für diese Art von Anwendung müssen Sie überlegen, wer auf die Daten zugreifen darf. Ich denke, mit medizinischen Informationen sollte es auf den Benutzer beschränkt sein, der sie eingegeben hat, und auf jeden, dem sie die Erlaubnis gegeben haben, sie anzuzeigen.

Um zu verhindern, dass der DBA die Daten anzeigt, müssen Sie sie mit einem Code verschlüsseln, auf den der DBA keinen Zugriff hat.

Sie müssen die Informationen auch so verschlüsseln, dass der Anwendungsprogrammierer auch nicht darauf zugreifen kann. Es macht keinen Sinn, die Informationen aus dem DBA zu verschlüsseln, wenn sich ein Programmierer als Benutzer anmelden kann.

Sie möchten auch nicht alle Daten mit demselben Code verschlüsseln. Die Software hat möglicherweise einen Fehler, der einem Benutzer die Informationen eines anderen Benutzers anzeigt. Daher ist es wahrscheinlich am besten, die Daten jedes Benutzers mit einem für diesen Benutzer spezifischen Code zu verschlüsseln.

Es ist wichtig zu beachten, dass Sie mehr als nur die medizinischen Informationen verschlüsseln müssen. Als Endbenutzer möchte ich nicht, dass Ihr DBA weiß, dass ich eine Krankheit habe, geschweige denn, was es ist. Daher müssen Sie auch alle personenbezogenen Daten des Benutzers verschlüsseln. Dies beinhaltet Dinge wie:

  • Name
  • Geburtsdatum
  • E-Mail-Addresse
  • Sex
  • Adresse
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.