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.
Concepts et terminologie RDS Proxy
Vous pouvez simplifier la gestion des connexions pour vos instances de base de données Amazon RDS à l’aide de RDS Proxy.
RDS Proxy gère le trafic réseau entre l’application cliente et la base de données. Il le fait d’abord de manière active en comprenant le protocole de la base de données. Il ajuste ensuite son comportement en fonction des opérations SQL de votre application et des jeux de résultats de la base de données.
RDS Proxy réduit la charge de mémoire et d’UC pour la gestion des connexions sur votre base de données. La base de données a besoin de moins de mémoire et de ressources de l’UC lorsque les applications ouvrent de nombreuses connexions simultanées. La logique n’est pas non plus nécessaire dans vos applications pour fermer et rouvrir les connexions qui restent inactives pendant longtemps. De même, il faut logique d’application moindre pour rétablir les connexions en cas de problème de base de données.
L'infrastructure du proxy RDS est hautement disponible et déployée sur plusieurs zones de disponibilité (AZs). Le calcul, la mémoire et le stockage de RDS Proxy sont indépendants de votre instance de base de données RDS. Cette séparation permet de réduire la surcharge sur vos serveurs de base de données, afin qu’ils puissent dédier leurs ressources à la gestion des charges de travail de base de données. Les ressources de calcul de RDS Proxy sont sans serveur et automatiquement mises à l’échelle en fonction de la charge de travail de votre base de données.
Rubriques
Présentation des concepts RDS Proxy
RDS Proxy gère l’infrastructure pour effectuer le regroupement de connexions et les autres fonctions décrites dans les sections qui suivent. Vous voyez les serveurs proxy qui figurent dans la console RDS sur la page Proxys.
Chaque proxy gère les connexions à une seule instance de base de données RDS. Le proxy détermine automatiquement l’instance d’enregistreur actuelle pour l’instance ou le cluster de bases de données multi-AZ RDS.
Les connexions qu’un proxy garde ouvertes et disponibles pour vos applications de base de données constituent le groupe de connexions.
Par défaut, RDS Proxy peut réutiliser une connexion après chaque transaction dans votre session. « multiplexage » est le terme utilisé pour cette réutilisation au niveau de la transaction. Lorsque RDS Proxy supprime temporairement une connexion du groupe de connexions pour la réutiliser, cette opération est appelée un emprunt de connexion. lorsque l’opération peut être effectuée sans risque, RDS Proxy renvoie cette connexion au groupe de connexions.
Dans certains cas, RDS Proxy ne peut pas s’assurer que la réutilisation d’une connexion à une base de données en dehors de la session en cours peut être effectuée sans risque. Dans ce cas, il maintient la session sur la même connexion jusqu’à la fin. Ce comportement de secours est appelé épinglage.
Un proxy a un point de terminaison par défaut. Vous vous connectez à ce point de terminaison lorsque vous utilisez une instance de base de données RDS. Vous le faites au lieu de vous connecter au read/write point de terminaison qui se connecte directement au d'instances. Pour les clusters de base de de base de données RDS), vous pouvez également créer des points de terminaison supplémentaires read/write en lecture seule. Pour de plus amples informations, veuillez consulter Présentation des points de terminaison proxy.
Par exemple, vous pouvez toujours vous connecter au point de terminaison du cluster pour read/write les connexions sans regroupement de connexions. Vous pouvez toujours vous connecter au point de terminaison du lecteur pour des connexions en lecture seule à charge équilibrée. Vous pouvez toujours vous connecter aux points de terminaison de l’instance pour le diagnostic et le dépannage d’instances de base de données spécifiques d’un cluster. Si vous utilisez d'autres AWS services, par exemple pour vous connecter AWS Lambda aux bases de données RDS, modifiez leurs paramètres de connexion pour utiliser le point de terminaison du proxy. Par exemple, vous indiquez au point de terminaison proxy de permettre aux fonctions de Lambda d’accéder à votre base de données tout en profitant des fonctionnalités de RDS Proxy.
Chaque proxy contient un groupe cible. Ce groupe cible incarne l’instance de base de données RDS à laquelle le proxy peut se connecter. L’instance de base de données RDS associée à un proxy est appelée cibles de ce proxy. Pour des raisons pratiques, lorsque vous créez un proxy via la console, RDS Proxy crée également le groupe cible correspondant et enregistre automatiquement les cibles associées.
Une famille de moteurs est un ensemble associé de moteurs de base de données qui utilisent le même protocole de base de données. Vous choisissez la famille de moteurs pour chaque proxy que vous créez.
Regroupement de connexions
Chaque proxy effectue le regroupement de connexions séparément pour l’instance d’enregistreur et de lecteur de sa base de données RDS associée. Le regroupement de connexions est une optimisation qui réduit la surcharge associée à l’ouverture et à la fermeture des connexions, tout en maintenant plusieurs connexions ouvertes simultanément. Cette surcharge inclut la mémoire nécessaire pour gérer chaque nouvelle connexion. Cela implique également une surcharge du processeur pour fermer chaque connexion et en ouvrir une nouvelle. Les exemples incluent l'établissement de contacts Security/Secure TLS/SSL (Transport Layer Sockets Layer), l'authentification, les capacités de négociation, etc. Le regroupement de connexions simplifie la logique de votre application. Vous n’avez pas besoin d’écrire de code d’application pour minimiser le nombre de connexions ouvertes simultanées.
Chaque proxy effectue aussi le multiplexage de connexion, également connu sous le nom de réutilisation de connexion. Grâce au multiplexage, RDS Proxy exécute toutes les opérations d’une transaction à l’aide d’une connexion de base de données sous-jacente. RDS peut ensuite utiliser une connexion différente pour la transaction suivante. Si vous ouvrez de nombreuses connexions simultanées au proxy, celui-ci conserve un plus petit nombre de connexions ouvertes à l’instance ou au cluster de bases de données. Cela permet de réduire davantage la surcharge de mémoire pour les connexions sur le serveur de base de données. Cette technique réduit également le risque que des erreurs liées au « nombre de connexions trop élevé » se produisent.
Sécurité RDS Proxy
Le proxy RDS utilise les mécanismes de sécurité RDS existants tels que TLS/SSL et AWS Identity and Access Management (IAM). Pour obtenir des informations générales sur ces fonctionnalités de sécurité, reportez-vous à la section Sécurité dans Amazon RDS. Par ailleurs, commencez par découvrir la façon dont RDS utilise l’authentification, l’autorisation et d’autres domaines de sécurité.
RDS Proxy peut agir comme une couche de sécurité supplémentaire entre les applications clientes et la base de données sous-jacente. Par exemple, vous pouvez vous connecter au proxy à l’aide de TLS 1.3, même si l’instance de base de données sous-jacente prend en charge une version antérieure de TLS. Vous pouvez vous connecter au proxy à l'aide d'un rôle IAM même si le proxy se connecte à la base de données à l'aide de la méthode d'authentification de l'utilisateur et du mot de passe de la base de données. Grâce à cette technique, vous pouvez appliquer de fortes exigences d’authentification pour les applications de base de données sans avoir à fournir un effort de migration coûteux pour les instances de base de données elles-mêmes.
Vous pouvez utiliser les méthodes d'authentification suivantes avec le proxy RDS :
-
Informations d'identification de base
-
Authentification IAM standard
-
End-to-end Authentification IAM
Utilisation d'IAM avec RDS Proxy
RDS Proxy propose deux méthodes d'authentification IAM :
-
Authentification IAM standard : appliquez l'authentification IAM pour les connexions à votre proxy pendant que le proxy se connecte à la base de données à l'aide des informations d'identification stockées dans Secrets Manager. Cela permet d'appliquer l'authentification IAM pour l'accès aux bases de données, même si les bases de données utilisent l'authentification par mot de passe native. Le proxy récupère les informations d'identification de la base de données auprès de Secrets Manager et gère l'authentification auprès de la base de données pour le compte de votre application.
-
End-to-end Authentification IAM : applique l'authentification IAM pour les connexions directement entre vos applications et votre base de données via le proxy. End-to-end L'authentification IAM simplifie votre configuration de sécurité et évite la gestion des informations d'identification de base de données dans Secrets Manager. Cette couche de sécurité supplémentaire renforce le contrôle d'accès basé sur l'IAM depuis l'application cliente vers la base de données.
Pour utiliser l'authentification IAM standard, configurez votre proxy pour utiliser les secrets de Secrets Manager pour l'authentification et activez l'authentification IAM pour les connexions client. Vos applications s'authentifient auprès du proxy via IAM, tandis que le proxy s'authentifie auprès de la base de données à l'aide des informations d'identification extraites de Secrets Manager.
Pour utiliser l'authentification end-to-end IAM, configurez votre proxy pour qu'il utilise l'authentification IAM lors de la définition du schéma d'authentification par défaut lors de la création ou de la modification de votre proxy.
Pour l'authentification end-to-end IAM, vous devez mettre à jour le rôle IAM associé au proxy pour accorder l'rds-db:connectautorisation. Grâce à l'authentification end-to-end IAM, il n'est plus nécessaire d'enregistrer des utilisateurs de base de données individuels auprès du proxy via les secrets de Secrets Manager.
Utilisation TLS/SSL avec RDS Proxy
Vous pouvez vous connecter au proxy RDS à l'aide du TLS/SSL protocole.
Note
Le proxy RDS utilise les certificats du AWS Certificate Manager (ACM). Si vous utilisez RDS Proxy, vous n’avez pas besoin de télécharger des certificats Amazon RDS ou de mettre à jour des applications utilisant des connexions RDS Proxy.
Afin d’appliquer TLS pour toutes les connexions entre le proxy et votre base de données, vous pouvez spécifier un paramètre Exiger la sécurité de la couche de transport lorsque vous créez ou modifiez un proxy dans la AWS Management Console.
Le proxy RDS peut également garantir que votre session est utilisée TLS/SSL entre votre client et le point de terminaison du proxy RDS. Pour que RDS Proxy procède ainsi, spécifiez l’exigence côté client. Les variables de session SSL ne sont pas définies pour les connexions SSL à une base de données utilisant RDS Proxy.
-
Pour RDS for MySQL, spécifiez l’exigence côté client avec le paramètre
--ssl-modelorsque vous exécutez la commandemysql. -
Pour Amazon RDS PostgreSQL, spécifiez
sslmode=requirecomme partie de la chaîneconninfolorsque vous exécutez la commandepsql.
Le proxy RDS prend en charge le protocole TLS versions 1.0, 1.1 ; 1.2 et 1.3. Vous pouvez vous connecter au proxy à l’aide d’une version de TLS supérieure à celle utilisée dans la base de données sous-jacente.
Par défaut, les programmes client établissent une connexion chiffrée avec RDS Proxy. L’option --ssl-mode fournit davantage de contrôle. Du côté client, RDS Proxy prend en charge tous les modes SSL.
Pour le client, les modes SSL sont les suivants :
- PREFERRED
-
SSL est le premier choix, mais n’est pas obligatoire.
- DISABLED
-
Aucun mode SSL n’est autorisé.
- REQUIRED
-
SSL est obligatoire.
- VERIFY_CA
-
SSL est obligatoire et une vérification de l’autorité de certification (CA) est effectuée.
- VERIFY_IDENTITY
-
SSL est obligatoire et une vérification de l’autorité de certification (CA) et de son nom d’hôte est effectuée.
Lorsque vous utilisez un client avec --ssl-mode VERIFY_CA ou VERIFY_IDENTITY, spécifiez l’option --ssl-ca pointant vers une autorité de certification au format .pem. Pour utiliser le .pem fichier, téléchargez toutes les autorités PEMs de certification racine depuis Amazon Trust Services.pem fichier.
Le proxy RDS utilise des certificats à caractères génériques, qui s’appliquent à un domaine et à ses sous-domaines. Si vous utilisez le client mysql pour vous connecter avec le mode SSL VERIFY_IDENTITY, vous devez actuellement exécuter la commande mysql compatible avec MySQL 8.0.
Basculement
Le basculement est une fonctionnalité de haute disponibilité qui remplace une instance de base de données par une autre lorsque l’instance d’origine est indisponible. Un problème lié à une instance de base de données peut entraîner un basculement. Celui-ci peut également faire partie de procédures de maintenance normales, lors d’une mise à niveau de la base de données par exemple. Le basculement s’applique aux instances de base de données RDS dans une configuration multi-AZ.
La connexion via un proxy rend vos applications plus résistantes aux basculements de base de données. Lorsque l’instance de base de données d’origine est indisponible, RDS Proxy se connecte à la base de données de secours sans supprimer les connexions d’application inactives. Cela permet d’accélérer et de simplifier le processus de basculement. Ce basculement interrompt moins longtemps votre application par rapport à un problème de redémarrage ou de base de données classique.
Sans RDS Proxy, un basculement provoque une brève interruption de service. Pendant la panne, vous ne pouvez pas effectuer d’opérations d’écriture sur la base de données en cours de basculement. Toutes les connexions de base de données existantes sont interrompues et votre application doit les rouvrir. La base de données est ouverte à de nouvelles connexions et opérations d’écriture lorsqu’une instance de base de données en lecture seule est promue pour remplacer celle qui n’est pas disponible.
Pendant les basculements de base de données, RDS Proxy continue d’accepter les connexions à la même adresse IP et redirige automatiquement les connexions vers la nouvelle instance de base de données principale. Les clients qui se connectent via RDS Proxy ne sont pas sujets aux éléments suivants :
-
Délais de propagation du système de noms de domaine (DNS) lors du basculement.
-
Mise en cache DNS locale.
-
Délai d’expiration de connexion.
-
Incertitude concernant l’instance de base de données qui est le rédacteur en cours.
-
Attente d’une réponse à la requête d’un ancien rédacteur devenu indisponible sans fermer les connexions.
Pour les applications qui conservent leur propre regroupement de connexions, passer par RDS Proxy implique que la plupart des connexions restent actives pendant des basculements ou d’autres interruptions. Seules les connexions qui se trouvent au milieu d’une transaction ou d’une instruction SQL sont annulées. RDS Proxy accepte immédiatement les nouvelles connexions. Lorsque le rédacteur de base de données n’est pas disponible, RDS Proxy place les demandes entrantes dans la file d’attente.
Pour les applications qui ne conservent pas leurs propres regroupements de connexions, RDS Proxy offre des taux de connexion plus rapides et davantage de connexions ouvertes. Il permet de réduire la surcharge coûteuse des reconnexions fréquentes à la base de données. Il effectue cette opération en réutilisant les connexions de base de données maintenues dans le regroupement de connexions de RDS Proxy. Cette approche est particulièrement importante pour les connexions TLS, où les coûts d’installation sont importants.
Transactions
Toutes les instructions d’une seule transaction utilisent toujours la même connexion à la base de données sous-jacente. La connexion devient disponible pour une session différente lorsque la transaction se termine. Voici les conséquences de l’utilisation de la transaction en tant qu’unité de granularité :
-
La connexion peut être réutilisée après chaque instruction individuelle lorsque le paramètre RDS for MySQL
autocommitest activé. -
Inversement, lorsque le paramètre
autocommitest désactivé, la première instruction que vous émettez dans une session lance une nouvelle transaction. Par exemple, supposons que vous saisissiez une séquenceSELECT,INSERT,UPDATE, ainsi que d’autres instructions en langage de manipulation de données (DML). Dans ce cas, la réutilisation de la connexion ne se produit que lorsque vous émettezCOMMIT,ROLLBACKou que vous mettez fin à la transaction. -
La saisie d’une instruction en langage de définition de données (DDL) entraîne la fin de la transaction une fois l’instruction terminée.
RDS Proxy détecte lorsqu’une transaction se termine par le protocole réseau utilisé par l’application cliente de base de données. La détection des transactions ne repose pas sur des mots-clés tels que COMMIT ou ROLLBACK apparaissant dans le texte de l’instruction SQL.
Dans certains cas, RDS Proxy peut détecter une demande de base de données qui rend impossible le déplacement de votre session vers une autre connexion. Dans ce cas, il désactive le multiplexage pour cette connexion pendant le reste de votre session. La même règle s’applique si RDS Proxy ne peut pas s’assurer de la praticité du multiplexage pour la session. Cette opération est appelée épinglage. Pour savoir comment détecter et réduire l’épinglage, consultez Contournement de l’épinglage d’un proxy RDS.