SCRAMFür die SQL Postgre-Passwortverschlüsselung verwenden - Amazon Relational Database Service

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.

SCRAMFür die SQL Postgre-Passwortverschlüsselung verwenden

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

Wir empfehlen, dass Sie das Verschlüsselungsschema SCRAM nicht MD5 als Kennwortverschlüsselung für Ihren verwenden. RDSfür die SQL Postgre-DB-Instance. Es ist ein kryptografischer Challenge-Response-Mechanismus, der den scram–sha-256-Algorithmus zur Passwortauthentifizierung und -verschlüsselung nutzt.

Möglicherweise müssen Sie die Bibliotheken aktualisieren, damit Ihre Client-Anwendungen sie unterstützen. SCRAM JDBCVersionen vor 42.2.0 unterstützen SCRAM beispielsweise nicht. Weitere Informationen finden Sie unter SQLJDBCPostgre-Treiber in der Postgre-Treiber-Dokumentation. SQL JDBC Eine Liste anderer SQL Postgre-Treiber und deren SCRAM Unterstützung finden Sie in der Postgre-Dokumentation unter Liste der Treiber. SQL

Anmerkung

RDSfür Postgre-Version 13.1 und höher SQL wird scram-sha-256 unterstützt. Mit diesen Versionen können Sie Ihre DB-Instance auch nach Bedarf konfigurierenSCRAM, wie in den folgenden Verfahren beschrieben.

Einrichtung des für die erforderliche SQL Postgre-DB-Instance SCRAM

dass der nur Passwörter akzeptiert, die den scram-sha-256-Algorithmus verwenden.

Wichtig

Wenn Sie bei vorhandenen RDS Proxys mit SQL Postgre-Datenbanken die Datenbankauthentifizierung so ändern, dass sie nur verwendet SCRAM 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 für die SQL Postgre-DB-Instance auf die Parameter, die die Passwortverschlüsselung steuern.

  • Wenn Ihr für SQL Postgre-DB-Instance eine Standardparametergruppe verwendet, müssen Sie eine benutzerdefinierte erstellen und sie auf Ihren anwenden, damit Sie die Parameter bei Bedarf ändern können. Wenn Ihr für die SQL Postgre-DB-Instance eine benutzerdefinierte Parametergruppe verwendet, können Sie die erforderlichen Parameter später im Prozess nach Bedarf ä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.

Machen Sie sich bereit, SCRAM für Ihren zu benötigen SQL

Bevor Sie Änderungen an Ihrem für die SQL Postgre-DB-Instance 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. Diese Erweiterung wird auf und höhere Versionen unterstützt.

So erhalten Sie eine Liste der Datenbankbenutzer (Rollen) und Passwortverschlüsselungsmethoden
  1. Verwenden Siepsql, um eine Verbindung herzustellen, Ihre RDS für die SQL Postgre-DB-Instance, wie im Folgenden gezeigt.

    psql --host=db-name.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-Parametergruppe

Anmerkung

Wenn Ihr für die SQL Postgre-DB-Instance bereits eine benutzerdefinierte Parametergruppe verwendet, müssen Sie keine neue erstellen.

Eine Übersicht der Parametergruppen für Amazon RDS finden Sie unterArbeiten mit Parametern auf der DB-Instance von RDS for PostgreSQL.

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

Sie können auch das verwenden AWS Management Console oder die RDSAPI, um eine benutzerdefinierte zu erstellen DB-Parametergruppe. Weitere Informationen finden Sie unter

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

So erstellen Sie eine benutzerdefinierte DB-Parametergruppe
  1. Verwenden Sie den create-db-parameter-group CLI Befehl, um die benutzerdefinierte DB-Parametergruppe zu erstellen. In diesem Beispiel wird postgres13 als Quelle für diese benutzerdefinierte Parametergruppe verwendet.

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

    aws rds create-db-parameter-group --db-parameter-group-name 'docs-lab-scram-passwords' \ --db-parameter-group-family postgres13 --description 'Custom parameter group for SCRAM'

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

    aws rds create-db-parameter-group --db-parameter-group-name "docs-lab-scram-passwords" ^ --db-parameter-group-family postgres13 --description "Custom DB parameter group for SCRAM"
  2. Verwenden Sie den modify-db-instance CLI Befehl, um diese benutzerdefinierte Parametergruppe auf Ihren RDS for SQL Postgre-DB-Cluster anzuwenden.

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

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

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

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

    Um Ihre RDS for SQL Postgre-DB-Instance mit Ihrer benutzerdefinierten DB-Parametergruppe erneut zu synchronisieren, müssen Sie die primäre und alle anderen Instances des Clusters neu starten. Planen Sie dies während Ihres regulären Wartungsfensters, um die Auswirkungen auf Ihre Benutzer zu minimieren.

Konfiguration der zu verwendenden Passwortverschlüsselung SCRAM

Der von einem verwendete Kennwortverschlüsselungsmechanismus ist in der DB-Parametergruppe im password_encryption Parameter festgelegt. SQL Zulässige Werte sind keine Angabe, md5 oder scram-sha-256. Der Standardwert hängt wie folgt von der SQL Version von für Postgre ab:

  • RDSfür Postgre SQL 14 und höher — Standard ist scram-sha-256

  • RDSfür Postgre SQL 13 — Standard ist md5

Mit einer benutzerdefinierten DB-Parametergruppe, die an Ihren für SQL Postgre-DB-Instance angehängt ist, können Sie Werte für den Kennwortverschlüsselungsparameter ändern.

Im Folgenden zeigt die RDS Konsole die Standardwerte für die password_encryption Parameter RDS für SQL Postgre.
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-parameter-group --db-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 SCRAM wie im Folgenden beschrieben migrieren.

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

    psql --host=db-name.111122223333.aws-region.rds.amazonaws.com --port=5432 --username=postgres --password
  2. Überprüfen Sie die Einstellung des password_encryption Parameters auf Ihrer RDS for SQL Postgre-DB-Instance, indem Sie den folgenden Befehl verwenden.

    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 in Ihrem . RDSfür die SQL Postgre-DB-Instance.

Parameter auf „Erforderlich“ ändern SCRAM

Dies ist der letzte Schritt in diesem Prozess. Nachdem Sie die Änderung im folgenden Verfahren vorgenommen haben, können sich Benutzerkonten (Rollen), die immer noch md5 Verschlüsselung für Passwörter verwenden, nicht beim anmelden. RDSfür die SQL Postgre-DB-Instance.

Das rds.accepted_password_auth_method gibt die Verschlüsselungsmethode an, die der für die SQL Postgre-DB-Instance während des Anmeldevorgangs für ein Benutzerkennwort 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 zeigt die Standardwerte und die zulässigen Werte für die Parameter anrds.accepted_password_auth_method.

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

Um den Parameterwert so zu ändern, dass eine SCRAM Authentifizierung für Passwörter erforderlich ist
  1. Stellen Sie sicher, dass alle Datenbankbenutzerkennwörter für alle Datenbanken auf Ihrem für die SQL Postgre-DB-Instance für die Passwortverschlüsselung verwendet scram-sha-256 werden. 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 für alle DB-Instances in Ihrem . RDSfür die SQL Postgre-DB-Instance.

    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-parameter-group --db-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-parameter-group --db-parameter-group-name "docs-lab-scram-passwords" ^ --parameters "ParameterName=rds.accepted_password_auth_method,ParameterValue=scram,ApplyMethod=immediate"