Hallo,
ich habe bei einem Kundenauftrag die Vorgabe, dass der Inhalt der Tabellen verschlüsselt sein muss. Passwort für die Entschlüsselung wird über die Software an den Datenbankserver übergeben. Damit soll vermieden werden, dass der Datenbankadministrator die Daten der Tabellen lesen, bzw. ändern kann.
Ist das mit PostgreSQL möglich? Bin neu bei PostgreSQL.
Danke für Unterstützng.
Gruß
Nowhereman
Ob es möglich ist kann ich dir jetzt akut nicht sagen, aber das die Idee blödsinnig ist schon.
Warum? In dem moment wo das Passwort an den Server mit übergeben wird (z. B. in einem SELECT), hat der Administrator schon das Kennwort. Der Administrator eines Datenbankserver kann die SQL Statements mitloggen und somit auch das Kennwort extrahieren… Also kurz gesagt blöde Idee.
Entweder dem Administrator vertrauen oder wenn diese Sicherheit notwendig ist, dann muss diese komplett in der Applikation erfolgen. Also Ver- und Entschlüsselung.
cu tb
Problem ist, wenn ich die Datenbank über die Anwendung mit verschlüsselten Daten füttere, kann ich sinnvoll weder joins noch where nutzen. Bei MsSQL 2016 ist entsprechendes als Warnhinweis vorhanden. Wäre dort also eine sinnfreie Idee und hoffentlich in PostgreSQL gelöst. Problem ist, der Kunde wird auditiert und das ist eine Auditvorgabe.
Wieso musst Du über Spalten verschlüsseln über die Du joinst? Das sind noch im Regelfall generierte Nummern, wieso muss man die verschlüsseln?
Bei den MS Informationen für MsSQL 2016 wurde join erwähnt. Keine Ahnung warum, da ich das nie hinterfragt habe. Bin eh kein Freund von MsSQL
ORACLE unterstützt das mit dem Feature Label Security, ist aber nicht ganz billig
Quote:
Oracle Label Security enables companies and government organizations to consolidate data with different access requirements (including government classified data) into the same database. It implements multilevel access controls based on the classification of the data and the access label of the application user. This powerful capability enables access to sensitive data associated with R&D projects, non-public financial information, or healthcare information to be enforced inside Oracle Database 18c.
https://www.oracle.com/database/technologies/security/label-security.html
Du bekommst damit so sachen wir Transparente Rowlevel encryption und der Transportlayer ist mit TLSv1.2 verschlüsselt.
Für login Sachen kann man eine PKI oder LDAP Authorization nutzen, die Token basiert ist (genau wie bei Kerberos) und einem Admin
bringt das Mitsniffen oder loggen auch nichts. Label Security wurde unter aderen dafür entwickelt, daß DB-Admins den Tabellen inhalt
nur verschlüsselt aber nicht entschlüsselt sehen können.