PostgreSQL-Datenbankverschlüsselung
Dieses Tutorial beschreibt verschiedene Möglichkeiten, wie Sie Ihre Daten in PostgreSQL verschlüsseln können.
Einführung in die Verschlüsselung
Verschlüsselung ist, vereinfacht gesagt, eine Methode, mit der man Daten sichern kann. Es wird systematisch geändert, um den Inhalt zu verbergen und ihn für niemanden außer den beabsichtigten Benutzern unlesbar zu machen.
Es ist möglich, dass nur die beabsichtigten Empfänger einen Schlüssel
haben, um die Daten zu entschlüsseln, um sie zu lesen. Infolgedessen werden alle sensiblen Informationen immer verborgen.
Es wird empfohlen, Daten in jedem Fall zu verschlüsseln. Es ist jedoch von entscheidender Bedeutung, wenn vertrauliche Informationen auf einem ungesicherten Server gesendet oder empfangen werden oder in einer anderen Situation, in der Daten bedroht sind.
PostgreSQL-Datenbankverschlüsselung
Eine Datenbank kann je nach Anforderung auf drei verschiedenen Schichten verschlüsselt werden. Es beinhaltet Folgendes:
- Client-Anwendung
- Speichermedium
- Die Datenbank selbst
Denken Sie daran, dass die Selbstverschlüsselung der Datenbank oft die beste Form der Verschlüsselung ist, da bekannt ist, dass sie die meisten Bedrohungsmodelle abdeckt.
Wir können andere Methoden anwenden, aber das Hauptziel sollte der Schutz der Client-Anwendung sein. Hier sind also einige Ansätze, aus denen Sie wählen können, um Ihre Daten in PostgreSQL zu verschlüsseln.
Systemfestplattenverschlüsselung
Wie der Name schon sagt, ist die Systemfestplattenverschlüsselung ein Prozess, bei dem Festplattenverschlüsselungssoftware/-hardware jedes Datenbit verschlüsselt, das auf Ihrer Festplatte gespeichert wird.
Das bedeutet, dass wir die Daten eines Benutzers verschlüsseln könnten, sobald sie erstellt werden, wenn die Software oder Hardware gleichzeitig dafür programmiert ist.
Dazu müssen Sie Ihr PostgreSQL-Setup nicht ändern, da Ihre Festplatte verschlüsselt ist. Eine einfache Möglichkeit, die Systemfestplattenverschlüsselung durchzuführen, ist die Verwendung einer VM
unter Linux.
Folgendes müssen Sie tun:
Erstellen Sie zunächst eine temporäre VM
, die ein Duplikat Ihres Zielcomputers sein wird. Die Zielfestplatte kann eine vorhandene sein, aber am besten erstellen Sie eine neue und fügen Ihre Datenbank später hinzu.
Unabhängig von Ihrer Entscheidung muss die Zielfestplatte mindestens 256MB
größer sein als die Quellfestplatte. Als nächstes können Sie die folgenden Anweisungen befolgen:
-
Muss die Ziel- und Quellfestplatten auf der temporären
VM
mounten. -
Verbinden Sie die
VM
über eine serielle Schnittstelle. Sie müssen eine serielle Portverbindung aktivieren, um diesen Schritt auszuführen. Sie könnenserial-port-enable
mit dem WertTRUE
unter Metadaten hinzufügen, um die serielle Port-Verbindung zu ermöglichen. -
Als nächstes müssen Sie
grub
zugänglich machen. Verwenden Sie dazu den folgenden Befehl:grub2-mkconfig -o/boot/grub2/grub.cfg
Starten Sie danach das System neu und
grub
ist auf der seriellen Konsole verfügbar. -
Formatieren Sie die Festplatte, um ein unverschlüsseltes (Boot-) und ein verschlüsseltes System zu erstellen. Es ermöglicht dem System,
grub
zu booten, damit der Benutzer einenSchlüssel
eingeben kann, um Daten zu entschlüsseln.Wir können dies mit dem Befehl
fdisk /dev/sdb
tun. -
Verwenden Sie
cryptsetup
, um die Festplatte zu verschlüsseln. Sie können auch einen bestimmten Teil der zu verschlüsselnden Festplatte zuordnen. Anschließend können Sie Ihre Datenbank verschlüsseln, solange sie auf dieser Festplatte vorhanden ist.
Anschließend können weitere Schritte wie die Größenänderung der Festplatte oder das Erstellen von Backups durchgeführt werden.
Transparente Datenverschlüsselung
PostgreSQL TDE
ist eine Funktion, die es einem Benutzer ermöglicht, eine PostgreSQL-Verschlüsselung für die gesamte Datenbank unter Verwendung von Cluster-Verschlüsselung durchzuführen. Es verschlüsselt beim Schreiben auf die Festplatte und entschlüsselt beim Lesen von ihr.
Sie können die folgenden Schritte während der PostgreSQL-Installation ausführen, damit dies standardmäßig angewendet wird.
-
Erstellen Sie ein Verzeichnis für PostgreSQL. Der Standardspeicherort wird häufig verwendet.
-
Bibliotheken für
bison
,readline
,flex
,zlib
,openssl
undcrypto
müssen installiert sein. Sie können bei Bedarf zusätzliche Bibliotheken installieren. -
Installieren Sie PostgreSQL auf Ihrem System.
-
Wechseln Sie mit
su - postgres
zum Benutzerpostgres
. -
Erstellen Sie einen verschlüsselten Cluster mit
-K
.Zum Beispiel
initdb -D /user/pgsql/xyz -K/user/pgsql/key
. Hier gibtuser/pgsql/key
einen Verschlüsselungsschlüssel zurück. -
initdb
speichert den Verschlüsselungs-key
-Befehl inpostgresql.conf
.
Der Cluster wurde erfolgreich erstellt und verschlüsselt nun Ihre Daten. Wenn ein Benutzer Postgres ausführt, unterscheiden sich diese verschlüsselten Cluster nicht von unverschlüsselten.
Der einzige Unterschied besteht darin, dass die Datenverschlüsselungsvariable gesetzt wird.
Verschlüsseln eines bestimmten Abschnitts der Datenbank
Mit den oben genannten Methoden wird die gesamte Datenbank oder alle Datenbanken auf PostgreSQL verschlüsselt. Sie können aber auch einzelne Datenbanken oder sogar einen bestimmten Teil einer Datenbank verschlüsseln.
Verwenden Sie dazu am besten eine Erweiterung wie pgcrypto
. So funktioniert die selektive Postgres-Verschlüsselung mit pgcrypto
:
- Aktivieren Sie die
pgcrypto
-Erweiterung mitCREATE EXTENSION IF NOT EXISTS pgcrypto
. - Im Allgemeinen verschlüsselt der Befehl
PGP_SYM_ENCRYPT
Daten, währendPGP_SYM_DECRYPT
sie entschlüsselt.
So können Sie Spalten in PostgreSQL verschlüsseln und entschlüsseln.
Verschlüsselte Daten in eine Spalte einfügen
INSERT INTO temp (x, y)
VALUES
('xx', PGP_SYM_ENCRYPT('yy', 'key')::text);
Bereits verschlüsselte Daten aktualisieren
UPDATE temp
SET y= PGP_SYM_ENCRYPT('content', 'key')::text
WHERE x= 'xx';
Zu lesende Daten entschlüsseln
SELECT x, PGP_SYM_DECRYPT(y::bytea, 'key') as data
FROM temp WHERE x= 'xx';
Das fasst einige der verschiedenen Möglichkeiten zusammen, wie Sie Ihre Datenbank je nach Ihren Anforderungen verschlüsseln können. Die PostgreSQL-Verschlüsselung mag auf den ersten Blick schwierig erscheinen, ist aber ziemlich einfach zu bewerkstelligen.
Wir hoffen, dass wir Ihnen dabei geholfen haben, herauszufinden, welche Art von Verschlüsselungsdienst für Sie am besten geeignet ist, damit Ihre Daten immer geschützt sind.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub