Frage Speichern verschlüsselter Daten in Postgres


Ich habe die Pflicht, bestimmte Daten in Postgres verschlüsselt zu speichern. Offensichtlich muss ich es verschlüsseln, speichern und in der Lage sein, es zu lesen und zu entschlüsseln. Was ist der beste Weg, dies zu tun?


33
2017-11-08 17:22


Ursprung


Antworten:


Das Beste Der einfachste Weg besteht darin, die Verschlüsselung auf dem Client oder Anwendungsserver auszuführen, sodass die Datenbank keine Ahnung hat, was die Schlüssel sind und die Daten nicht entschlüsseln können. Wenn sich der Client / Anwendungsserver auf einem anderen Host befindet, umso besser.

Wenn Ihre Datenbank die Daten für Sie verschlüsselt und entschlüsselt, ist sie anfällig dafür, dass die Schlüssel zusammen mit der Datenbank gestohlen werden.

Wenn Sie die In-Database-Crypto-Funktionen von pgcrypto verwenden, können Sie die Anwendung den Schlüssel zusammen mit den Daten senden lassen, was zumindest etwas hilfreich ist. Es besteht dennoch die Gefahr, dass die Schlüssel in den Protokollen offengelegt werden, wenn ein hilfreicher Systemadministrator die Protokollierung aggressiver Anweisungen oder automatisches Plandumping aktiviert und am Ende, wenn die Schlüssel zum Datenbankcomputer gehen, anfälliger sind, als wenn sie es nicht sind . Ein Angreifer, der die Kontrolle über den Datenbankcomputer übernimmt, kann auch Protokolleinstellungen ändern, PostgreSQL-Binärdateien ersetzen oder Datenverkehr erfassen, um Schlüssel und Daten auf diese Weise zu erfassen.

Wenn sich der Anwendungsserver und die Datenbank auf demselben Computer befinden und von derselben Rolle verwaltet werden, gibt es weniger Bedenken, sie zu isolieren, und es kann sinnvoll sein, einfach pgcrypto zu verwenden.

Wie auch immer, erinnere dich an Salz!


31
2017-11-29 03:08