Verwendung SSL mit einer SQL Postgre-DB-Instance - 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.

Verwendung SSL mit einer SQL Postgre-DB-Instance

Amazon RDS unterstützt die Secure Socket Layer (SSL) -Verschlüsselung für SQL Postgre-DB-Instances. Mithilfe SSL können Sie eine SQL Postgre-Verbindung zwischen Ihren Anwendungen und Ihren SQL Postgre-DB-Instances verschlüsseln. Standardmäßig SQL verwendet Postgre und erwartet, RDS dass alle Clients überSSL/eine Verbindung herstellenTLS, aber Sie können es auch vorschreiben. RDSfor Postgre SQL unterstützt die Transport Layer Security (TLS) Versionen 1.1, 1.2 und 1.3.

Allgemeine Informationen zur SSL Unterstützung und zu SQL Postgre-Datenbanken finden Sie in der SQL Postgre-Dokumentation unter SSLSupport. Informationen zur Verwendung einer SSL Verbindung über JDBC finden Sie in der SQL Postgre-Dokumentation unter Konfiguration des Clients.

SSLSupport ist in allen AWS Regionen für SQL Postgre verfügbar. Amazon RDS erstellt ein SSL Zertifikat für Ihre SQL Postgre-DB-Instance, wenn die Instance erstellt wird. Wenn Sie die SSL Zertifikatsüberprüfung aktivieren, enthält das SSL Zertifikat den DB-Instance-Endpunkt als Common Name (CN) für das SSL Zertifikat, um vor Spoofing-Angriffen zu schützen.

Eine Verbindung zu einer Postgre-DB-Instance herstellen über SQL SSL

Um eine Verbindung zu einer SQL Postgre-DB-Instance herzustellen über SSL
  1. Laden Sie das Zertifikat herunter.

    Informationen zum Herunterladen von Zertifikaten finden Sie unter .

  2. Connect zu Ihrer SQL Postgre-DB-Instance herSSL.

    Wenn Sie eine Verbindung herstellenSSL, kann Ihr Kunde wählen, ob die Zertifikatskette verifiziert werden soll. Wenn in Ihren Verbindungsparametern sslmode=verify-ca oder angegeben istsslmode=verify-full, verlangt Ihr Client, dass sich die RDS CA-Zertifikate in seinem Vertrauensspeicher befinden oder in der Verbindung referenziert werdenURL. Diese Anforderung dient zur Prüfung der Zertifikatskette, die Ihr Datenbankzertifikat signiert.

    Wenn ein Client, z. B. psql oderJDBC, mit SSL Support konfiguriert ist, versucht der Client SSL standardmäßig zunächst, eine Verbindung mit der Datenbank herzustellen. Wenn der Client keine Verbindung herstellen kannSSL, kehrt er zu einer Verbindung ohne Verbindung zurück. SSL Der verwendete sslmode Standardmodus unterscheidet sich zwischen libpq-basierten Clients (wie psql) und. JDBC Die libpq-basierten Clients verwenden standardmäßig und prefer die JDBC Clients verwenden standardmäßig. verify-full

    Verwenden Sie den Parameter sslrootcert, um auf das Zertifikat zu verweisen, beispielsweise sslrootcert=rds-ssl-ca-cert.pem.

Im Folgenden finden Sie ein Beispiel für die Verbindung mit psql einer SQL Postgre-DB-Instance SSL mithilfe der Zertifikatsüberprüfung.

$ psql "host=db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser sslrootcert=rds-ca-rsa2048-g1.pem sslmode=verify-full"

Eine SSL Verbindung zu einer SQL Postgre-DB-Instance ist erforderlich

Mithilfe des Parameters können Sie festlegen, dass Verbindungen zu Ihrer SQL Postgre-DB-Instance verwendet SSL werden. rds.force_ssl Der Standardwert des rds.force_ssl Parameters ist 1 (ein) RDS für SQL Postgre-Version 15 und höher. Für alle anderen RDS SQL Postgre-Hauptversionen 14 und älter ist der Standardwert dieses Parameters 0 (aus). Sie können den rds.force_ssl Parameter auf 1 (ein) setzen, umSSL/TLSfür Verbindungen zu Ihrem DB-Cluster zu benötigen. Sie können den rds.force_ssl Parameter auf 1 (on) setzen, wenn er SSL für Verbindungen zu Ihrer DB-Instance erforderlich ist.

Wenn Sie den Wert dieses Parameters ändern möchten, müssen Sie eine benutzerdefinierte DB-Parametergruppe erstellen. Anschließend ändern Sie den Wert für rds.force_ssl in Ihrer benutzerdefinierten DB-Parametergruppe in 1, um diese Funktion zu aktivieren. Wenn Sie die benutzerdefinierte DB-Parametergruppe vorbereiten, bevor Sie Ihre RDS für SQL Postgre-DB-Instance erstellen, können Sie sie (anstelle einer Standardparametergruppe) während des Erstellungsprozesses auswählen. Wenn Sie dies tun, nachdem Ihre RDS for SQL Postgre-DB-Instance bereits läuft, müssen Sie die Instance neu starten, damit Ihre Instance die benutzerdefinierte Parametergruppe verwendet. Weitere Informationen finden Sie unter Parametergruppen für Amazon RDS.

Wenn die rds.force_ssl Funktion auf Ihrer DB-Instance aktiv ist, werden Verbindungsversuche, die nicht verwendet SSL werden, mit der folgenden Meldung abgewiesen:

$ psql -h db-name.555555555555.ap-southeast-1.rds.amazonaws.com port=5432 dbname=testDB user=testuser psql: error: FATAL: no pg_hba.conf entry for host "w.x.y.z", user "testuser", database "testDB", SSL off

Ermitteln des SSL Verbindungsstatus

Der verschlüsselte Status Ihrer Verbindung wird auf dem Anmelde-Banner angezeigt, wenn Sie sich mit der DB-Instance verbinden:

Password for user master: psql (10.3) SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=>

Sie können die sslinfo Erweiterung auch laden und dann die ssl_is_used() Funktion aufrufen, um festzustellen, ob sie verwendet SSL wird. Die Funktion gibt zurückt, ob die Verbindung verwendet wirdSSL, andernfalls kehrt sie zurückf.

postgres=> CREATE EXTENSION sslinfo; CREATE EXTENSION postgres=> SELECT ssl_is_used(); ssl_is_used --------- t (1 row)

Wenn Sie detailliertere Informationen erhalten möchten, können Sie die folgende Abfrage verwenden, um Informationen von pg_settings abzurufen:

SELECT name as "Parameter name", setting as value, short_desc FROM pg_settings WHERE name LIKE '%ssl%'; Parameter name | value | short_desc ----------------------------------------+-----------------------------------------+------------------------------------------------------- ssl | on | Enables SSL connections. ssl_ca_file | /rdsdbdata/rds-metadata/ca-cert.pem | Location of the SSL certificate authority file. ssl_cert_file | /rdsdbdata/rds-metadata/server-cert.pem | Location of the SSL server certificate file. ssl_ciphers | HIGH:!aNULL:!3DES | Sets the list of allowed SSL ciphers. ssl_crl_file | | Location of the SSL certificate revocation list file. ssl_dh_params_file | | Location of the SSL DH parameters file. ssl_ecdh_curve | prime256v1 | Sets the curve to use for ECDH. ssl_key_file | /rdsdbdata/rds-metadata/server-key.pem | Location of the SSL server private key file. ssl_library | OpenSSL | Name of the SSL library. ssl_max_protocol_version | | Sets the maximum SSL/TLS protocol version to use. ssl_min_protocol_version | TLSv1.2 | Sets the minimum SSL/TLS protocol version to use. ssl_passphrase_command | | Command to obtain passphrases for SSL. ssl_passphrase_command_supports_reload | off | Also use ssl_passphrase_command during server reload. ssl_prefer_server_ciphers | on | Give priority to server ciphersuite order. (14 rows)

Sie können auch alle Informationen über die SSL Nutzung Ihrer RDS for SQL Postgre-DB-Instance nach Prozess, Client und Anwendung sammeln, indem Sie die folgende Abfrage verwenden:

SELECT datname as "Database name", usename as "User name", ssl, client_addr, application_name, backend_type FROM pg_stat_ssl JOIN pg_stat_activity ON pg_stat_ssl.pid = pg_stat_activity.pid ORDER BY ssl; Database name | User name | ssl | client_addr | application_name | backend_type ---------------+-----------+-----+----------------+------------------------+------------------------------ | | f | | | autovacuum launcher | rdsadmin | f | | | logical replication launcher | | f | | | background writer | | f | | | checkpointer | | f | | | walwriter rdsadmin | rdsadmin | t | 127.0.0.1 | | client backend rdsadmin | rdsadmin | t | 127.0.0.1 | PostgreSQL JDBC Driver | client backend postgres | postgres | t | 204.246.162.36 | psql | client backend (8 rows)

Um die für Ihre SSL Verbindung verwendete Chiffre zu identifizieren, können Sie wie folgt abfragen:

postgres=> SELECT ssl_cipher(); ssl_cipher -------------------- DHE-RSA-AES256-SHA (1 row)

Weitere Informationen zu dieser sslmode Option finden Sie unter Funktionen zur Datenbankverbindungssteuerung in der SQLPostgre-Dokumentation.

SSLCipher Suites für Postgre RDS SQL

Der SQL Postgre-Konfigurationsparameter ssl_ciphers gibt die Kategorien von Cipher Suites an, die für Verbindungen zugelassen sind. SSL In der folgenden Tabelle sind die Standard-Cipher-Suites aufgeführt, die für Postgre verwendet werden. RDS SQL

Version der Postgre-Engine SQL Cipher Suites
16 HIGH:!aNULL:!3DES
15 HIGH:!aNULL:!3DES
14 HIGH:!aNULL:!3DES
13 HIGH:!aNULL:!3DES
12 HIGH:!aNULL:!3DES
11.4 und höhere Nebenversionen HIGH:MEDIUM:+3DES:!aNULL:!RC4
11,1, 11,2 HIGH:MEDIUM:+3DES:!aNULL
10.9 und höhere Nebenversionen HIGH:MEDIUM:+3DES:!aNULL:!RC4
10.7 und niedrigere Nebenversionen HIGH:MEDIUM:+3DES:!aNULL