Utilisation SSL avec une instance de SQL base de données Postgre - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisation SSL avec une instance de SQL base de données Postgre

Amazon RDS prend en charge le chiffrement Secure Socket Layer (SSL) pour les SQL instances de base de données Postgre. À l'aide deSSL, vous pouvez chiffrer une SQL connexion Postgre entre vos applications et vos instances de base de données PostgreSQL. Par défaut, RDS Postgre SQL utilise et attend de tous les clients qu'ils se connectent en utilisantSSL/TLS, mais vous pouvez également l'exiger. RDScar Postgre SQL prend en charge les versions 1.1, 1.2 et 1.3 de Transport Layer Security (TLS).

Pour des informations générales sur le SSL support et les SQL bases de données Postgre, consultez le SSLsupport dans la documentation PostgreSQL. Pour plus d'informations sur l'utilisation d'une SSL connexionJDBC, consultez la section Configuration du client dans la SQL documentation Postgre.

SSLle support est disponible dans toutes les AWS régions pour PostgreSQL. Amazon RDS crée un SSL certificat pour votre SQL instance de base de données Postgre lors de sa création. Si vous activez la vérification du SSL certificat, le SSL certificat inclut le point de terminaison de l'instance de base de données en tant que nom commun (CN) du SSL certificat afin de se protéger contre les attaques par usurpation d'identité.

Connexion à une SQL instance de base de données Postgre via SSL

Pour vous connecter à une SQL instance de base de données Postgre via SSL
  1. Téléchargez le certificat.

    Pour plus d'informations sur le téléchargement de certificats, veuillez consulter .

  2. Connectez-vous à votre SQL instance de base de données Postgre via. SSL

    Lorsque vous vous connectez en utilisantSSL, votre client peut choisir de vérifier ou non la chaîne de certificats. Si vos paramètres de connexion spécifient sslmode=verify-ca ousslmode=verify-full, votre client a besoin que les certificats RDS CA figurent dans son magasin de confiance ou soient référencés dans la connexionURL. L'exigence nécessite de vérifier la chaîne du certificat qui signe le certificat de votre base de données.

    Lorsqu'un client, tel que psql ouJDBC, est configuré avec le SSL support, le client essaie d'abord de se connecter à la base de données SSL par défaut. Si le client ne parvient pas à se connecter avecSSL, il revient à se connecter sansSSL. Le sslmode mode par défaut utilisé est différent entre les clients basés sur libpq (tels que psql) et. JDBC Les clients basés sur libpq sont par défaut et prefer les JDBC clients par défaut sur. verify-full

    Utilisez le paramètre sslrootcert pour référencer le certificat, par exemple, sslrootcert=rds-ssl-ca-cert.pem.

Voici un exemple d'utilisation psql pour se connecter à une SQL instance de base de données Postgre à l'aide de la vérification SSL des certificats.

$ 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"

Exiger une SSL connexion à une instance de SQL base de données Postgre

Vous pouvez exiger que les connexions à votre SQL instance de base de données Postgre soient utilisées SSL en utilisant le rds.force_ssl paramètre. La valeur par défaut du rds.force_ssl paramètre est 1 (activé) RDS pour les SQL versions 15 et ultérieures de Postgre. Pour toutes les autres RDS versions SQL majeures de Postgre 14 et antérieures, la valeur par défaut de ce paramètre est 0 (off). Vous pouvez définir le rds.force_ssl paramètre sur 1 (activé) pour requérirSSL/TLSpour les connexions à votre cluster de bases de données. Vous pouvez définir le rds.force_ssl paramètre sur 1 (activé) SSL pour exiger les connexions à votre instance de base de données.

Pour modifier la valeur de ce paramètre, vous devez créer un groupe de paramètres de base de données personnalisé. Vous modifiez ensuite la valeur de rds.force_ssl dans votre groupe de paramètres de base de données personnalisé sur 1 pour activer cette fonction. Si vous préparez le groupe de paramètres de base de données personnalisé avant de créer votre SQL instance de base de données RDS pour Postgre, vous pouvez le choisir (au lieu d'un groupe de paramètres par défaut) lors du processus de création. Si vous effectuez cette opération alors que votre SQL instance de base de données RDS for Postgre est déjà en cours d'exécution, vous devez redémarrer l'instance afin qu'elle utilise le groupe de paramètres personnalisé. Pour de plus amples informations, veuillez consulter Groupes de paramètres pour Amazon RDS.

Lorsque la rds.force_ssl fonctionnalité est active sur votre instance de base de données, les tentatives de connexion non utilisées SSL sont rejetées avec le message suivant :

$ 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

Déterminer l'état de la SSL connexion

Le statut chiffré de votre connexion est affiché dans la page d'accueil d'ouverture de session lorsque vous vous connectez à l'instance de base de données :

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

Vous pouvez également charger l'sslinfoextension, puis appeler la ssl_is_used() fonction pour déterminer si elle SSL est utilisée. La fonction renvoie t si la connexion est utiliséeSSL, sinon elle revientf.

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

Pour obtenir des informations plus détaillées, vous pouvez utiliser la requête suivante pour obtenir des informations via pg_settings :

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)

Vous pouvez également collecter toutes les informations concernant l'SSLutilisation RDS de votre SQL instance de base de données Postgre par processus, client et application à l'aide de la requête suivante :

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)

Pour identifier le code utilisé pour votre SSL connexion, vous pouvez effectuer une requête comme suit :

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

Pour en savoir plus sur sslmode cette option, consultez la section Fonctions de contrôle de connexion à la base de données dans la SQLdocumentation Postgre.

SSLsuites de chiffrement dans RDS Postgre SQL

Le paramètre de SQL configuration Postgre ssl_ciphers spécifie les catégories de suites de chiffrement autorisées pour les connexions. SSL Le tableau suivant répertorie les suites de chiffrement par défaut utilisées dans RDS SQL Postgre.

Version du SQL moteur Postgre Suites de chiffrement
16 HIGH:!aNULL:!3DES
15 HIGH:!aNULL:!3DES
14 HIGH:!aNULL:!3DES
13 HIGH:!aNULL:!3DES
12 HIGH:!aNULL:!3DES
11.4 et versions mineures ultérieures HIGH:MEDIUM:+3DES:!aNULL:!RC4
11.1, 11.2 HIGH:MEDIUM:+3DES:!aNULL
10.9 et versions mineures ultérieures HIGH:MEDIUM:+3DES:!aNULL:!RC4
10.7 et versions mineures inférieures HIGH:MEDIUM:+3DES:!aNULL