Konfigurieren der Sicherheit für Ihren PostgreSQL-Server mit Azure Arc-Unterstützung
In dieser Dokumentation werden verschiedene Aspekte der Sicherheit Ihrer Servergruppe beschrieben:
- Verschlüsselung von ruhenden Daten
- Postgres-Rollen und Benutzerverwaltung
- Allgemeine Perspektiven
- Ändern des Kennworts des postgres-Administrators
- Überwachung
Hinweis
Als Previewfunktion unterliegt die in diesem Artikel vorgestellte Technologie den zusätzlichen Nutzungsbedingungen für Microsoft Azure-Vorschauen.
Die neuesten Updates sind in den Versionshinweisenverfügbar.
Verschlüsselung von ruhenden Daten
Sie können die Verschlüsselung ruhender Daten implementieren, indem Sie entweder die Datenträger verschlüsseln, auf denen Sie Ihre Datenbanken speichern, und/oder indem Sie Datenbankfunktionen zum Verschlüsseln der Daten verwenden, die Sie einfügen oder aktualisieren.
Hardware: Verschlüsselung von Linux-Hostvolumes
Implementieren Sie die Systemdatenverschlüsselung, um jegliche Daten zu schützen, die sich auf den Datenträgern befinden, die von Ihren Azure Arc-fähigen Data Services verwendet werden. Weitere Informationen hierzu finden Sie hier:
- Verschlüsselung ruhender Daten unter Linux im Allgemeinen
- Spezielle Datenträgerverschlüsselung mit dem LUKS-Befehl
cryptsetup
(Linux)(https://www.cyberciti.biz/security/howto-linux-hard-disk-encryption-with-luks-cryptsetup-command/). Da Datendienste mit Azure Arc-Unterstützung in der physischen Infrastruktur ausgeführt werden, die Sie bereitstellen, sind Sie für die Sicherheit der Infrastruktur verantwortlich.
Software: Verwenden der PostgreSQL-Erweiterung pgcrypto
in Ihrer Servergruppe
Zusätzlich zur Verschlüsselung der Datenträger, die zum Hosten Ihres Azure Arc-Setups verwendet werden, können Sie Ihren PostgreSQL-Server mit Azure Arc-Unterstützung so konfigurieren, dass Mechanismen zur Verfügung gestellt werden, die Ihre Anwendungen zum Verschlüsseln von Daten in Ihren Datenbanken verwenden können. Die pgcrypto
-Erweiterung ist Teil der contrib
-Erweiterungen von Postgres und in Ihrem PostgreSQL-Server mit Azure Arc-Unterstützung verfügbar. Weitere Informationen zur pgcrypto
-Erweiterung finden Sie hier.
Zusammenfassend können Sie die folgenden Befehle zum Aktivieren, Erstellen und Verwenden der Erweiterung verwenden:
Erstellen der pgcrypto
-Erweiterung
Stellen Sie mit dem Clienttool Ihrer Wahl eine Verbindung mit Ihrer Servergruppe her, und führen Sie die PostgreSQL-Standardabfrage aus:
CREATE EXTENSION pgcrypto;
Einzelheiten hier finden Sie, wie Sie eine Verbindung herstellen können.
Überprüfen den Liste der einsatzbereiten Erweiterungen in Ihrer Servergruppe
Sie können überprüfen, ob die pgcrypto
-Erweiterung einsatzbereit ist, indem Sie die verfügbaren Erweiterungen in Ihrer Servergruppe auflisten.
Stellen Sie mit dem Clienttool Ihrer Wahl eine Verbindung mit Ihrer Servergruppe her, und führen Sie die PostgreSQL-Standardabfrage aus:
select * from pg_extension;
pgcrypto
sollte angezeigt werden, wenn Sie die Erweiterung mit den oben angegebenen Befehlen aktiviert und erstellt haben.
Verwenden der pgcrypto
-Erweiterung
Sie können nun den Code Ihrer Anwendungen so anpassen, dass sie von pgcrypto
bereitgestellte Funktionen verwenden:
- Allgemeine Hashfunktionen
- Kennworthashfunktionen
- PGP-Verschlüsselungsfunktionen
- Rohverschlüsselungsfunktionen
- Funktionen für zufällige Daten
(Beispielsweise zum Generieren von Hashwerten) Führen Sie den folgenden Befehl aus:
select crypt('Les sanglots longs des violons de l_automne', gen_salt('md5'));
Daraufhin wird der folgende Hash zurückgegeben:
crypt
------------------------------------
$1$/9ACBYOV$z52PAGjQ5WTU9xvEECBNv/
Alternativ gibt folgendes Beispiel:
select hmac('Les sanglots longs des violons de l_automne', 'md5', 'sha256');
Daraufhin wird der folgende Hash zurückgegeben:
hmac
--------------------------------------------------------------------
\xd4e4790b69d2cc8dbce3385ee63272bc7760f1603640bb211a7b864e695570c5
Alternativ können Sie verschlüsselte Daten beispielsweise wie ein Kennwort speichern:
Eine Anwendung speichert Geheimnisse in der folgenden Tabelle:
create table mysecrets(USERid int, USERname char(255), USERpassword char(512));
Verschlüsseln Sie das Passwort beim Anlegen eines Benutzers:
insert into mysecrets values (1, 'Me', crypt('MySecretPasswrod', gen_salt('md5')));
Beachten Sie, dass das Passwort verschlüsselt ist:
select * from mysecrets;
Ausgabe:
- USERid: 1
- USERname: Me
- USERpassword: $1$Uc7jzZOp$NTfcGo7F10zGOkXOwjHy31
Wenn Sie sich mit der Anwendung verbinden und ein Kennwort eingeben, wird in der Tabelle mysecrets
nachgeschaut und der Name des Benutzers zurückgegeben, wenn eine Übereinstimmung zwischen dem der Anwendung mitgeteilten Kennwort und den in der Tabelle gespeicherten Kennwörtern besteht. Beispiel:
Geben Sie das falsche Passwort ein:
select USERname from mysecrets where (USERpassword = crypt('WrongPassword', USERpassword));
Output
USERname --------- (0 rows)
Geben Sie das richtige Passwort ein:
select USERname from mysecrets where (USERpassword = crypt('MySecretPasswrod', USERpassword));
Ausgabe:
USERname --------- Me (1 row)
In diesem kleinen Beispiel wird veranschaulicht, dass Sie ruhende Daten (Speichern verschlüsselter Daten) auf einem PostgreSQL-Server mit Azure Arc-Unterstützung mithilfe der Postgres-Erweiterung pgcrypto
verschlüsseln und Ihre Anwendungen die von pgcrypto
bereitgestellten Funktionen zum Bearbeiten dieser verschlüsselten Daten verwenden können.
Postgres-Rollen und Benutzerverwaltung
Allgemeine Perspektiven
Um Rollen und Benutzer in Ihrem PostgreSQL-Server mit Azure Arc-Unterstützung zu konfigurieren, verwenden Sie die Standard-Postgres-Methode zur Verwaltung von Rollen und Benutzern. Weitere Einzelheiten finden Sie hier.
Überwachung
Konfigurieren Sie für Überwachungsszenarien Ihre Servergruppe so, dass sie die Postgres-Erweiterungen vom Typ pgaudit
verwendet. Ausführlichere Informationen zu pgaudit
finden Sie im GitHub-Projekt pgAudit
. Informationen zum Aktivieren der Erweiterung pgaudit
in Ihrer Servergruppe finden Sie unter Verwenden von PostgreSQL-Erweiterungen in Azure Arc-fähigen PostgreSQL Hyperscale-Servergruppen.
Verwenden der SSL-Verbindung
SSL ist für Clientverbindungen erforderlich. In der Verbindungszeichenfolge sollte der SSL-Modusparameter nicht deaktiviert werden. Erstellen von Verbindungszeichenfolgen.