Sécurité avec Amazon Aurora PostgreSQL - Amazon Aurora

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.

Sécurité avec Amazon Aurora PostgreSQL

Pour obtenir une présentation générale de la sécurité Aurora, consultez Sécurité dans Amazon Aurora. Vous pouvez gérer la sécurité d'Amazon Aurora PostgreSQL à différents niveaux :

  • Pour contrôler qui peut effectuer des actions de gestion Amazon RDS sur les clusters de bases de données et les instances de base de données Aurora PostgreSQL, AWS Identity and Access Management utilisez (IAM). IAM gère l'authentification de l'identité de l'utilisateur avant que l'utilisateur puisse accéder au service. Il gère également l'autorisation, c'est-à-dire si l'utilisateur est autorisé à faire ce qu'il essaie de faire. L'authentification de base de données IAM est une méthode d'authentification supplémentaire que vous pouvez choisir lorsque vous créez votre cluster de base de données Aurora PostgreSQL. Pour de plus amples informations, veuillez consulter Gestion des identités et des accès pour Amazon Aurora.

    Si vous utilisez IAM avec votre cluster de base de données Aurora PostgreSQL, connectez-vous d'abord à l'aide de vos informations d'identification IAM, avant d'ouvrir AWS Management Console la console Amazon RDS à l'adresse. https://console.aws.amazon.com/rds/

  • Les clusters de bases de données Aurora doivent être créés dans un cloud privé virtuel (VPC) basé sur le service Amazon VPC. Pour contrôler quels appareils et EC2 instances Amazon peuvent ouvrir des connexions au point de terminaison et au port de l'instance de base de données pour les clusters de base de données Aurora dans un VPC, utilisez un groupe de sécurité VPC. Ces connexions au point de terminaison et au port peuvent être effectuées à l'aide du protocole SSL (Secure Socket Layer). En outre, les règles de pare-feu de votre entreprise peuvent contrôler si les appareils en cours d'exécution dans votre entreprise peuvent ouvrir des connexions à une instance de base de données. Pour plus d'informations sur VPCs, voirAmazon VPC et Amazon Aurora.

    La location de VPC prise en charge dépend de la classe d'instances de base de données utilisée par vos clusters de bases de données Aurora PostgreSQL. Avec la location de VPC default, le cluster de base de données s'exécute sur du matériel partagé. Avec la location de VPC dedicated, le cluster de base de données s'exécute sur une instance matérielle dédiée. Les classes d'instance de base de données de performance à capacité extensible prennent uniquement en charge la location de VPC par défaut. Les classes d'instance de base de données de performance à capacité extensible incluent les classes d'instance de base de données db.t3 et db.t4g. Toutes les autres classes d'instance de base de données Aurora PostgreSQL prennent en charge à la fois la location de VPC par défaut et dédiée.

    Pour plus d'informations sur les classes d'instance, consultez Classes d'instances de base de données Amazon Aurora. Pour plus d'informations sur la location de VPC default et dedicated, consultez Instances dédiées dans le Guide de l'utilisateur Amazon Elastic Compute Cloud.

  • Pour accorder des autorisations aux bases de données PostgreSQL exécutées sur votre cluster de base de données Amazon Aurora, vous pouvez adopter la même approche générale que pour les instances autonomes de PostgreSQL. Les commandes telles que CREATE ROLE, ALTER ROLE, GRANT et REVOKE fonctionnent de la même façon que dans les bases de données sur site, comme le fait la modification directe des bases de données, schémas et tables.

    PostgreSQL gère les privilèges en utilisant des rôles. Le rôle rds_superuser est le rôle disposant du plus haut niveau de privilèges sur un cluster de base de données Aurora PostgreSQL. Ce rôle est créé automatiquement et il est accordé à l'utilisateur qui crée le cluster de base de données (le compte utilisateur principal, postgres par défaut). Pour en savoir plus, veuillez consulter la section Comprendre les rôles et les autorisations PostgreSQL.

Toutes les versions disponibles d'Aurora PostgreSQL, y compris les versions 10, 11, 12, 13, 14 et supérieures, prennent en charge le mécanisme d'authentification Salted Challenge Response Authentication (SCRAM) pour les mots de passe comme alternative à message digest (). MD5 Nous vous recommandons d'utiliser SCRAM car il est plus sûr que MD5. Pour plus d'informations, notamment sur la façon de migrer les mots de passe des utilisateurs de base de données MD5 vers SCRAM, consultezUtilisation de SCRAM pour le chiffrement de mot de passe PostgreSQL.

Sécurisation des données Aurora PostgreSQL avec SSL/TLS

Amazon RDS prend en charge le chiffrement SSL (Secure Socket Layer) et TLS (Transport Layer Security) pour les clusters de bases de données Aurora PostgreSQL. Utilisation de SSL/TLS, you can encrypt a connection between your applications and your Aurora PostgreSQL DB clusters. You can also force all connections to your Aurora PostgreSQL DB cluster to use SSL/TLS. Amazon Aurora PostgreSQL prend en charge le protocole TLS (Transport Layer Security) versions 1.1 et 1.2. Nous vous recommandons d'utiliser TLS 1.2 pour les connexions chiffrées. Nous avons ajouté la prise en charge de la version TLSv1 3.3 à partir des versions suivantes d'Aurora PostgreSQL :

  • Version 15.3 et toutes les versions ultérieures

  • Version 14.8 et versions 14 ultérieures

  • Version 13.11 et versions 13 ultérieures

  • Version 12.15 et versions 12 ultérieures

  • Version 11.20 et versions 11 ultérieures

Pour plus d'informations sur la prise en charge de SSL/TLS et les bases de données PostgreSQL, veuillez consulter Support de SSL dans la documentation PostgreSQL. Pour plus d'informations sur l'utilisation d'une connexion SSL/TLS sur JDBC, veuillez consulter Configurer le client dans la documentation PostgreSQL.

Le support SSL/TLS est disponible dans toutes les régions AWS pour Aurora PostgreSQL. Amazon RDS crée un SSL/TLS certificate for your Aurora PostgreSQL DB cluster when the DB cluster is created. If you enable SSL/TLS certificate verification, then the SSL/TLS certificate includes the DB cluster endpoint as the Common Name (CN) for the SSL/TLS certificat pour se prémunir contre les attaques par usurpation d'identité.

Pour se connecter à un cluster de base de données Aurora PostgreSQL via SSL/TLS
  1. Téléchargez le certificat.

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

  2. Importez le certificat dans votre système d'exploitation.

  3. Connectez-vous à votre cluster de base de données Aurora PostgreSQL via SSL/TLS.

    Lors de la connexion avec SSL/TLS, votre client peut choisir de vérifier ou pas la chaîne du certificat. Si vos paramètres de connexion spécifient sslmode=verify-ca ou sslmode=verify-full, votre client nécessite que les certificats de l'autorité de certification RDS soient dans leur magasin d'approbations ou référencés dans l'URL de connexion. 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 ou JDBC, est configuré avec. SSL/TLS support, the client first tries to connect to the database with SSL/TLS by default. If the client can't connect with SSL/TLS, it reverts to connecting without SSL/TLS Par défaut, l'option sslmode est définie sur prefer pour les clients JDBC et libpq.

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

Voici un exemple d'utilisation de psql pour se connecter à un cluster de base de données Aurora PostgreSQL :

$ psql -h testpg.cdhmuqifdpib.us-east-1.rds.amazonaws.com -p 5432 \ "dbname=testpg user=testuser sslrootcert=rds-ca-2015-root.pem sslmode=verify-full"

Exigence d'une connexion SSL/TLS à un cluster de base de données Aurora PostgreSQL

Pour exiger des connexions SSL/TLS à votre cluster de base de données Aurora PostgreSQL, utilisez le paramètre. rds.force_ssl

  • Pour exiger des connexions SSL/TLS, définissez la valeur du rds.force_ssl paramètre sur 1 (activé).

  • Pour désactiver les connexions SSL/TLS requises, définissez la valeur du rds.force_ssl paramètre sur 0 (désactivé).

La valeur par défaut de ce paramètre dépend de la version d'Aurora PostgreSQL :

  • Pour les versions 17 et ultérieures d'Aurora PostgreSQL : la valeur par défaut est 1 (activé).

  • Pour les versions 16 et antérieures d'Aurora PostgreSQL : la valeur par défaut est 0 (off).

Note

Lorsque vous effectuez une mise à niveau d'une version majeure d'Aurora PostgreSQL version 16 ou antérieure vers la version 17 ou ultérieure, la valeur par défaut du paramètre passe de 0 (désactivé) à 1 (activé). Cette modification peut entraîner des défaillances de connectivité pour les applications qui ne sont pas configurées pour le protocole SSL. Vous pouvez revenir au comportement par défaut précédent en réglant ce paramètre sur 0 (désactivé).

Pour plus d'informations sur la gestion des paramètres, consultezGroupes de paramètres pour Amazon Aurora ().

La mise à jour du paramètre rds.force_ssl affecte également la valeur 1 (activé) au paramètre PostgreSQL ssl et modifie le fichier pg_hba.conf de votre cluster de base de données pour qu'il prenne en charge la nouvelle configuration SSL/TLS.

Lorsque le paramètre rds.force_ssl a pour valeur 1 pour un cluster de base de données, vous voyez une sortie similaire à la suivante lorsque vous vous connectez, indiquant que SSL/TLS est à présent requis :

$ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql (9.3.12, server 9.4.4) WARNING: psql major version 9.3, server major version 9.4. Some psql features might not work. SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256) Type "help" for help. postgres=>

Détermination du statut de la connexion SSL/TLS

Le statut chiffré de votre connexion est affiché dans la page d'accueil d'ouverture de session lorsque vous vous connectez au cluster de base de données.

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

Vous pouvez également charger l'extension sslinfo, puis appeler la fonction ssl_is_used() pour déterminer si SSL/TLS est utilisé. La fonction renvoie t si la connexion utilise SSL/TLS ; sinon, elle renvoie f.

postgres=> create extension sslinfo; CREATE EXTENSION postgres=> select ssl_is_used(); ssl_is_used --------- t (1 row)

Vous pouvez utiliser la commande select ssl_cipher() pour déterminer le chiffrement SSL/TLS :

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

Si vous activez set rds.force_ssl et redémarrez le cluster de base de données, les connexions non-SSL sont refusées avec le message suivant :

$ export PGSSLMODE=disable $ psql postgres -h SOMEHOST.amazonaws.com -p 8192 -U someuser psql: FATAL: no pg_hba.conf entry for host "host.ip", user "someuser", database "postgres", SSL off $

Pour de plus amples informations sur l'option sslmode, veuillez consulter Database Connection Control Functions dans la documentation PostgreSQL.

Configuration de suites de chiffrement pour les connexions aux clusters de bases de données Aurora PostgreSQL

L'utilisation de suites de chiffrement configurables vous permet d'avoir plus de contrôle sur la sécurité des connexions de vos bases de données. Vous pouvez spécifier une liste de suites de chiffrement que vous souhaitez autoriser pour la sécurisation des connexions SSL/TLS client à votre base de données. Avec les suites de chiffrement configurables, vous pouvez contrôler le chiffrement de connexion accepté par votre serveur de base de données. Cela permet d'éviter l'utilisation de chiffrements non sécurisés ou obsolètes.

Les suites de chiffrement configurables sont prises en charge dans Aurora PostgreSQL 11.8 et versions ultérieures.

Pour spécifier la liste des chiffrements autorisés pour le chiffrement des connexions, modifiez le paramètre de cluster ssl_ciphers. Définissez le ssl_ciphers paramètre sur une chaîne de valeurs chiffrées séparées par des virgules dans un groupe de paramètres de cluster à l'aide de l'API AWS Management Console, de ou de l' AWS CLI API RDS. Pour définir des paramètres de cluster, veuillez consulter Modification des paramètres d'un groupe de paramètres de cluster de base de données dans Amazon Aurora.

La table suivante présente les chiffrements pris en charge pour les versions valides du moteur Aurora PostgreSQL.

Versions du moteur Aurora PostgreSQL Chiffrements pris en charge TLS 1.1 TLS 1.2 TLS 1.3
9.6, 10.20 et antérieures, 11.15 et antérieures, 12.10 et antérieures, 13.6 et antérieures

DHE-RSA- -SHA AES128

DHE-RSA- - AES128 SHA256

DHE-RSA- -GCM- AES128 SHA256

DHE-RSA- -SHA AES256

DHE-RSA- - AES256 SHA256

DHE-RSA- -GCM- AES256 SHA384

ECDHE-ECDSA- -SHA AES256

ECDHE-ECDSA- -GCM- AES256 SHA384

ECDHE-RSA- - AES256 SHA384

ECDHE-RSA- -SHA AES128

ECDHE-RSA- - AES128 SHA256

ECDHE-RSA- -GCM- AES128 SHA256

ECDHE-RSA- -SHA AES256

ECDHE-RSA- -GCM- AES256 SHA384

Oui

Non

Non

Non

Non

Non

Oui

Non

Non

Oui

Non

Non

Oui

Non

Non

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

10.21, 11.16, 12.11, 13.7, 14.3 et 14.4

ECDHE-RSA- -SHATLS_ECDHE_RSA_WITH_AES_128_CBC_SHA AES128

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_CBC_SHA

TLS_RSA_WITH_AES_128_GCM_ SHA256

TLS_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_AVEC_ 0_ 05_ CHACHA2 POLY13 SHA256

Oui

Non

Oui

Non

Oui

Non

Oui

Non

Non

Oui

Non

Oui

Non

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

10,22, 11,17, 12,12, 13,8, 14,5 et 15,2

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_CBC_ SHA256

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_CBC_ SHA256

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_CBC_SHA

TLS_RSA_WITH_AES_128_GCM_ SHA256

TLS_RSA_WITH_AES_128_CBC_ SHA256

TLS_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_AVEC_ 0_ 05_ CHACHA2 POLY13 SHA256

Oui

Non

Non

Oui

Non

Oui

Non

Non

Oui

Non

Non

Oui

Non

Oui

Oui

Non

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

11.20, 12.15, 13.11, 14.8, 15.3, 16.1 et versions ultérieures

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_CBC_ SHA256

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_128_CBC_ SHA256

TLS_ECDHE_RSA_WITH_AES_128_GCM_ SHA256

TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA

TLS_ECDHE_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_GCM_ SHA384

TLS_RSA_WITH_AES_256_CBC_SHA

TLS_RSA_WITH_AES_128_GCM_ SHA256

TLS_RSA_WITH_AES_128_CBC_ SHA256

TLS_RSA_WITH_AES_128_CBC_SHA

TLS_ECDHE_RSA_AVEC_ 0_ 05_ CHACHA2 POLY13 SHA256

TLS_AES_128_GCM_ SHA256

TLS_AES_256_GCM_ SHA384

Oui

Non

Non

Oui

Non

Oui

Non

Non

Oui

Non

Non

Oui

Non

Oui

Oui

Non

Non

Non

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Oui

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Non

Oui

Oui

Vous pouvez également utiliser la commande CLI describe-engine-default-cluster-parameters pour déterminer quelles suites de chiffrement sont actuellement prises en charge pour une famille de groupes de paramètres spécifique. L'exemple suivant montre comment obtenir les valeurs autorisées pour le paramètre de cluster ssl_cipher pour Aurora PostgreSQL 11.

aws rds describe-engine-default-cluster-parameters --db-parameter-group-family aurora-postgresql11 ...some output truncated... { "ParameterName": "ssl_ciphers", "Description": "Sets the list of allowed TLS ciphers to be used on secure connections.", "Source": "engine-default", "ApplyType": "dynamic", "DataType": "list", "AllowedValues": "DHE-RSA-AES128-SHA,DHE-RSA-AES128-SHA256,DHE-RSA-AES128-GCM-SHA256,DHE-RSA-AES256-SHA,DHE-RSA-AES256-SHA256,DHE-RSA-AES256-GCM-SHA384, ECDHE-RSA-AES128-SHA,ECDHE-RSA-AES128-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-RSA-AES256-SHA,ECDHE-RSA-AES256-SHA384,ECDHE-RSA-AES256-GCM-SHA384,TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA", "IsModifiable": true, "MinimumEngineVersion": "11.8", "SupportedEngineModes": [ "provisioned" ] }, ...some output truncated...

Le paramètre ssl_ciphers prend par défaut toutes les suites de chiffrement autorisées. Pour plus d'informations sur les chiffrements, veuillez consulter la variable ssl_ciphers dans la documentation PostgreSQL.