2017-10-17 5 views
0

Je suis novice dans le développement web et j'ai vu des articles comme these. Si vous utilisez AWS et que vous vous connectez à une instance AWS rds via Node, est-ce toujours considéré comme une connexion directe par opposition à un service Web?Est-il préférable de se connecter directement à une instance aws db dans une application?

+1

"connexion à un AWS"? Voulez-vous dire se connecter à une base de données relationnelle hébergée sur AWS à partir d'un serveur NodeJS également hébergé sur AWS? – Tanbouz

+0

Aws rds instance. Le serveur node js n'est pas actuellement dans aws. – llJS

Répondre

0

Vous allez probablement avoir un tas d'opinions contradictoires à ce sujet. Mon opinion personnelle est qu'un service Web en face de votre base de données est logique dans certains scénarios. Cela dit, si plusieurs applications se connectent au service Web plutôt que directement à la base de données, cela présente plusieurs avantages, sécurité, mise en cache, etc.

Cela dit, si ce n'est qu'une seule application, alors la plupart de ces avantages disparaissent et, en fait, ne font que plus complexe pour vous. Vous allez devoir configurer votre service Web pour la base de données ainsi que votre code actuel.

0

Si vous utilisez AWS et que vous vous connectez à une instance AWS rds via Node, est-ce toujours considéré comme une connexion directe par opposition à un service Web?

Non, si Node.js est en cours d'exécution sur un serveur ou dans des récipients « sans serveur » (par exemple, Lambda AWS) qui est pas une connexion directe. C'est un service web, et c'est ce que vous voulez.

Une connexion directe signifie que l'application se connecte à la base de données elle-même ... mais cela nécessite l'intégration des informations d'identification dans l'application. Vous ne voulez rien incorporer dans votre application que vous ne donneriez pas volontairement à un utilisateur arbitraire - comme les informations d'identification de la base de données et les clés API - parce que vous ne pouvez pas croire que l'application ne sera pas inversée . Vous devez concevoir l'application de manière à ne pas avoir de problèmes de sécurité si le code source complet de l'application était exposé, car tout savoir sur les composants internes de l'application ne donnerait pas d'informations précieuses à un acteur malveillant. Comment? Le code côté serveur (par exemple, dans Node.js) doit traiter toutes les demandes de l'application comme potentiellement suspectes, indignes de confiance, etc., et valider chaque demande pour faire quoi que ce soit.

Cette couche de séparation est l'une des raisons les plus fortes pour lesquelles vous ne donnez jamais à l'application direct l'accès à la base de données. Le code qui s'exécute dans un emplacement approuvé (votre serveur Web/couche API) doit vérifier chaque interaction de base de données. Cette topologie dissocie également l'utilisateur de l'application de l'accaparement des ressources sur le serveur de base de données lorsqu'il n'interagit pas réellement avec la base de données, ce qui est beaucoup moins pratique avec une connexion directe.

+0

Je suis un peu confus. Par exemple, si j'utilise mysql et que le code de nœud suivant est dans/config/mysql, est-ce que ce serait une connexion directe? Mon serveur de noeud s'exécuterait dans AWS Lambda, mais en même temps, si quelqu'un avait accès au code, il pourrait se connecter à la base de données. 'var mysql = require ('mysql'); var con = mysql.createConnection ({ hôte: "localhost", utilisateur: "votrenomutilisateur", mot de passe: "votremotdepasse" }); ' – llJS