Verwenden von SCRAM für die PostgreSQL-Passwortverschlüsselung - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden von SCRAM für die PostgreSQL-Passwortverschlüsselung

Der Salted Challenge Response Authentication Mechanism (SCRAM) ist eine Alternative zum standardmäßigen Message Digest (MD5) -Algorithmus von PostgreSQL zur Verschlüsselung von Passwörtern. Der SCRAM-Authentifizierungsmechanismus gilt als sicherer als. MD5 Weitere Informationen zu diesen beiden verschiedenen Ansätzen zur Sicherung von Passwörtern finden Sie unter Passwortauthentifizierung in der PostgreSQL-Dokumentation.

Wir empfehlen, SCRAM statt MD5 als Kennwortverschlüsselungsschema für Ihren Aurora PostgreSQL-DB-Cluster zu verwenden. SCRAM wird in Aurora PostgreSQL Version 10 und allen höheren Haupt- und Nebenversionen unterstützt. Es ist ein kryptografischer Challenge-Response-Mechanismus, der den scram–sha-256-Algorithmus zur Passwortauthentifizierung und -verschlüsselung nutzt.

Möglicherweise müssen Sie Bibliotheken aktualisieren, damit Ihre Clientanwendungen SCRAM unterstützen können. JDBC-Versionen vor 42.2.0 unterstützen SCRAM beispielsweise nicht. Weitere Informationen finden Sie unter PostgreSQL-JDBC-Treiber in der Dokumentation zu PostgreSQL-JDBC-Treibern. Für eine Liste anderer PostgreSQL-Treiber und SCRAM-Unterstützung siehe die Treiberliste in der PostgreSQL-Dokumentation.

Aurora PostgreSQL Version 14 und höhere Versionen unterstützen scram-sha-256 standardmäßig zur Passwortverschlüsselung für neue DB-Cluster. Für diese Versionen ist der password_encryption Wert des Standard-DB-Cluster-Parameters group (default.aurora-postgresql14) auf scram-sha-256 gesetzt. SCRAM wird nicht unterstützt für Aurora Serverless v1.

Einrichten des Aurora-PostgreSQL-DB-Clusters, sodass SCRAM erforderlich ist

Bei Aurora PostgreSQL 14.3 und höheren Versionen können Sie verlangen, dass der Aurora-PostgreSQL-DB-Cluster nur Passwörter akzeptiert, die den scram-sha-256-Algorithmus verwenden.

Wichtig

Wenn Sie bei vorhandenen RDS-Proxys mit PostgreSQL-Datenbanken die Datenbankauthentifizierung so ändern, dass nur SCRAM verwendet wird, ist der Proxy für bis zu 60 Sekunden nicht verfügbar. Um das Problem zu vermeiden, führen Sie einen der folgenden Schritte aus:

  • Stellen Sie sicher, dass die Datenbank sowohl die SCRAM- als auch die MD5-Authentifizierung zulässt.

  • Wenn Sie nur die SCRAM-Authentifizierung verwenden möchten, erstellen Sie einen neuen Proxy, migrieren Sie Ihren Anwendungsdatenverkehr auf den neuen Proxy und löschen Sie dann den zuvor mit der Datenbank verknüpften Proxy.

Bevor Sie Änderungen an Ihrem System vornehmen, vergewissern Sie sich, dass Sie den folgenden Prozess komplett verstehen:

  • Sammeln Sie Informationen über alle Rollen und Passwortverschlüsselung für alle Datenbankbenutzer.

  • Überprüfen Sie die Parametereinstellungen für Ihren Aurora-PostgreSQL-DB-Cluster für die Parameter, die die Passwortverschlüsselung steuern.

  • Wenn Ihr Aurora-PostgreSQL-DB-Cluster eine Standardparametergruppe verwendet, müssen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe erstellen und sie auf Ihren Aurora-PostgreSQL-DB-Cluster anwenden, damit Sie bei Bedarf Parameter ändern können. Wenn Ihr Aurora-PostgreSQL-DB-Cluster eine benutzerdefinierte Parametergruppe verwendet, können Sie die erforderlichen Parameter bei Bedarf später im Prozess ändern.

  • Ändern Sie den Parameter password_encryption in scram-sha-256.

  • Informieren Sie alle Datenbankbenutzer, dass sie ihre Passwörter aktualisieren müssen. Wiederholen Sie diesen Schritt für Ihr postgres-Konto. Die neuen Passwörter werden mit dem scram-sha-256-Algorithmus verschlüsselt und gespeichert.

  • Stellen Sie sicher, dass alle Passwörter mit diesem Verschlüsselungstyp verschlüsselt sind.

  • Wenn alle Passwörter scram-sha-256 verwenden, können Sie den rds.accepted_password_auth_method-Parameter von md5+scram in scram-sha-256 ändern.

Warnung

Nachdem Sie rds.accepted_password_auth_method nur in scram-sha-256 geändert haben, können Benutzer (Rollen) mit md5-verschlüsselten Passwörtern keine Verbindung herstellen.

Vorbereiten der SCRAM-Anforderung für Ihren Aurora-PostgreSQL-DB-Cluster

Bevor Sie Änderungen an Ihrem Aurora-PostgreSQL-DB-Cluster, vornehmen, überprüfen Sie alle vorhandenen Datenbankbenutzerkonten. Überprüfen Sie auch die Art der Verschlüsselung, die für Passwörter verwendet wird. Sie können für diese Aufgaben die rds_tools-Erweiterung verwenden. Informationen darüber, welche PostgreSQL-Versionen unterstützt werdenrds_tools, finden Sie unter Erweiterungsversionen für Amazon RDS for PostgreSQL.

So erhalten Sie eine Liste der Datenbankbenutzer (Rollen) und Passwortverschlüsselungsmethoden
  1. Verwenden Sie psql zum Herstellen einer Verbindung mit der primären Instance Ihres Aurora-PostgreSQL-DB-Clusters , wie im Folgenden gezeigt.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Installieren Sie die rds_tools-Erweiterung.

    postgres=> CREATE EXTENSION rds_tools; CREATE EXTENSION
  3. Rufen Sie eine Auflistung der Rollen und Verschlüsselungsmethoden ab.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type();

    Die Ausgabe entspricht weitgehend der folgenden.

    rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | md5 user_465 | md5 postgres | md5 (8 rows)

Erstellen einer benutzerdefinierten DB-Cluster-Parametergruppe

Anmerkung

Wenn Ihr Aurora-PostgreSQL-DB-Cluster bereits eine benutzerdefinierte Parametergruppe verwendet, müssen Sie keine neue erstellen.

Eine Übersicht über Parametergruppen für Aurora finden Sie unter Eine DB-Cluster-Parametergruppe in Amazon Aurora erstellen.

Der für Passwörter verwendete Passwortverschlüsselungstyp wird in einem Parameter, password_encryption, festgelegt. Die Verschlüsselung, die der Aurora-PostgreSQL-DB-Cluster zulässt, wird in einem anderen Parameter, rds.accepted_password_auth_method, festgelegt. Wenn Sie den Standardwert eines dieser Parameter ändern, müssen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe erstellen und auf Ihren Cluster anwenden.

Weitere Informationen finden Sie unter Eine DB-Cluster-Parametergruppe in Amazon Aurora erstellen.

Sie können jetzt die benutzerdefinierte Parametergruppe Ihrer DB-Instance zuordnen.

So erstellen Sie eine benutzerdefinierte DB-Cluster-Parametergruppe
  1. Verwenden Sie den CLI-Befehl create-db-cluster-parameter-group zum Erstellen der benutzerdefinierten Parametergruppe für den Cluster. Folgendes Beispiel verwendet aurora-postgresql13 als Quelle für diese benutzerdefinierte Parametergruppe.

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family aurora-postgresql13 --description 'Custom DB cluster parameter group for SCRAM'

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

    aws rds create-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family aurora-postgresql13 --description "Custom DB cluster parameter group for SCRAM"

    Sie können jetzt die benutzerdefinierte Parametergruppe Ihrem Cluster zuordnen.

  2. Verwenden Sie den CLI-Befehl modify-db-cluster zum Anwenden dieser benutzerdefinierten Parametergruppe auf Ihren Aurora-PostgreSQL-DB-Cluster.

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:

    aws rds modify-db-cluster --db-cluster-identifier 'your-instance-name' \ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

    aws rds modify-db-cluster --db-cluster-identifier "your-instance-name" ^ --db-cluster-parameter-group-name "docs-lab-scram-passwords

    Zum erneuten Synchronisieren Ihres Aurora-PostgreSQL-DB-Clusters mit Ihrer benutzerdefinierten DB-Cluster-Parametergruppe starten Sie die primäre und alle anderen Instances des Clusters neu.

Konfigurieren der Passwortverschlüsselung für die Verwendung von SCRAM

Der Passwortverschlüsselungsmechanismus, der von einem Aurora-PostgreSQL-DB-Cluster verwendet wird, ist in der DB-Cluster-Parametergruppe auf den Parameter password_encryption festgelegt. Zulässige Werte sind keine Angabe, md5 oder scram-sha-256. Der Standardwert hängt von der Version von Aurora PostgreSQL wie folgt ab:

  • Aurora PostgreSQL 14 – Der Standardwert ist scram-sha-256.

  • Aurora PostgreSQL 13 – Der Standardwert ist md5.

Mit einer benutzerdefinierten DB-Cluster-Parametergruppe , die Ihrem Aurora-PostgreSQL-DB-Cluster angefügt ist, können Sie die Werte für den Passwortverschlüsselungsparameter ändern.

Im Folgenden zeigt die RDS-Konsole die Standardwerte für die password_encryption-Parameter für Aurora PostgreSQL.
So ändern Sie die Passwortverschlüsselungseinstellung in scram-sha-256
  • Ändern Sie den Wert der Passwortverschlüsselung in scram-sha-256, wie nachfolgend gezeigt. Die Änderung kann sofort angewendet werden, da der Parameter dynamisch ist. Daher ist kein Neustart erforderlich, damit die Änderung wirksam wird.

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name \ 'docs-lab-scram-passwords' --parameters 'ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate'

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

    aws rds modify-db-parameter-group --db-parameter-group-name ^ "docs-lab-scram-passwords" --parameters "ParameterName=password_encryption,ParameterValue=scram-sha-256,ApplyMethod=immediate"

Migrieren von Passwörtern für Benutzerrollen zu SCRAM

Sie können Passwörter für Benutzerrollen wie folgt zu SCRAM migrieren.

Um Datenbankbenutzer- (Rollen-) Passwörter von MD5 zu SCRAM zu migrieren
  1. Melden Sie sich als Administratorbenutzer an (Standardbenutzer postgres), wie nachfolgend gezeigt.

    psql --host=cluster-name-instance-1.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Überprüfen Sie die Einstellung des password_encryption-Parameters auf der DB-Instance von RDS for PostgreSQL mithilfe des folgenden Befehls.

    postgres=> SHOW password_encryption; password_encryption --------------------- md5 (1 row)
  3. Ändern Sie den Wert dieses Parameters in scram-sha-256. Dies ist ein dynamischer Parameter, sodass Sie die Instance nach dieser Änderung nicht neu starten müssen. Überprüfen Sie den Wert erneut, um sicherzustellen, dass er jetzt auf scram-sha-256 festgelegt ist. Gehen Sie dazu wie folgt vor.

    postgres=> SHOW password_encryption; password_encryption --------------------- scram-sha-256 (1 row)
  4. Bitten Sie alle Datenbankbenutzer, ihre Passwörter zu ändern. Stellen Sie sicher, dass Sie auch Ihr eigenes Passwort für das postgres-Konto ändern (der Datenbankbenutzer mit rds_superuser-Berechtigungen).

    labdb=> ALTER ROLE postgres WITH LOGIN PASSWORD 'change_me'; ALTER ROLE
  5. Wiederholen Sie den Vorgang für alle Datenbanken auf dem Aurora-PostgreSQL-DB-Cluster.

Ändern des Parameters, um SCRAM zu erfordern

Dies ist der letzte Schritt in diesem Prozess. Nachdem Sie die Änderung im folgenden Verfahren vorgenommen haben, können sich Benutzerkonten (Rollen), die nach wie vor die md5-Verschlüsselung für Passwörter verwenden, nicht beim Aurora-PostgreSQL-DB-Cluster anmelden.

Die rds.accepted_password_auth_method gibt die Verschlüsselungsmethode an, die der Aurora-PostgreSQL-DB-Cluster als Benutzerpasswort beim Anmeldevorgang akzeptiert. Der Standardwert ist md5+scram, was bedeutet, dass eine der beiden Methoden akzeptiert wird. Im folgenden Bild finden Sie die Standardeinstellung für diesen Parameter.

Die RDS-Konsole, die die Standardwerte und die zulässigen Werte für den rds.accepted_password_auth_method-Parameter zeigt.

Die zulässigen Werte für diesen Parameter sind md5+scram oder nur scram. Durch Ändern dieses Parameterwerts in scram wird er erforderlich.

So ändern Sie den Parameterwert, sodass eine SCRAM-Authentifizierung für Passwörter erforderlich ist
  1. Stellen Sie sicher, dass alle Datenbank-Benutzerpasswörter für alle Datenbanken auf Ihrem Aurora-PostgreSQL-DB-Cluster scram-sha-256 für die Passwortverschlüsselung verwenden. Fragen Sie hierzu rds_tools für die Rolle (Benutzer) und den Verschlüsselungstyp wie folgt ab.

    postgres=> SELECT * FROM rds_tools.role_password_encryption_type(); rolname | encryption_type ----------------------+----------------- pg_monitor | pg_read_all_settings | pg_read_all_stats | pg_stat_scan_tables | pg_signal_backend | lab_tester | scram-sha-256 user_465 | scram-sha-256 postgres | scram-sha-256 ( rows)
  2. Wiederholen Sie die Abfrage auf allen DB-Instances Ihres Aurora-PostgreSQL-DB-Clusters.

    Wenn alle Passwörter scram-sha-256 verwenden, können Sie fortfahren.

  3. Ändern Sie den Wert der akzeptierten Passwortauthentifizierung in scram-sha-256 wie folgt.

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Linux, macOS, oder Unix:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name 'docs-lab-scram-passwords' \ --parameters 'ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate'

    Wählen Sie in der &Snowconsole; Ihren Auftrag aus der Tabelle. Windows:

    aws rds modify-db-cluster-parameter-group --db-cluster-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"