2017-10-17 25 views
0

私はWeb開発を初めて利用しており、theseなどの投稿を見ました。 AWSを使用していて、Nodeを介してAWS rdsインスタンスに接続している場合、Webサービスではなく直接接続と見なされますか?アプリケーションのaws dbインスタンスに直接接続するのがベストプラクティスですか?

+1

「AWSに接続していますか?」 AWSでホストされているNodeJSサーバーからAWSでホストされているリレーショナルデータベースに接続することを意味しますか? – Tanbouz

+0

Aws rdsインスタンス。ノードjsサーバーは現在awsにありません。 – llJS

答えて

0

あなたはおそらく、これについて相反する意見を得るでしょう。私の個人的な意見は、あなたのデータベースの前にあるWebサービスは、いくつかのシナリオでは理にかなっています。 Webサービスに直接接続するのではなく、Webサービスに接続する複数のアプリケーションには、いくつかの利点、セキュリティ、キャッシングなどがあります。

これは単一のアプリケーションであれば、ほとんどの利点が消えてしまいます。あなたのためにもっと複雑です。 db用のWebサービスと実際のコードをセットアップする必要があります。

0

AWSを使用していて、Nodeを介してAWS rdsインスタンスに接続している場合でも、Webサービスではなく直接接続と見なされますか?

いいえ、のNode.jsはサーバーまたは「サーバレス」コンテナで実行されている場合(例えば、AWSラムダ)ない直接接続あります。それはウェブサービスであり、それがあなたが望むものです。

直接接続とは、アプリケーションがデータベースに接続していることを意味しますが、アプリに証明書を埋め込む必要があります。

あなたは、アプリケーションがリバースエンジニアリングされないと信じることができないため、データベース資格やAPIキーなど、任意のユーザーに譲歩しないことをあなたのアプリに組み込むことは望ましくありません。

アプリケーションのソースコード全体が公開されている場合、セキュリティ上の懸念がないようにアプリケーションを設計する必要があります。どうやって?サーバー側のコード(例:Node.js)は、アプリからのすべてのリクエストを潜在的に疑わしいもの、信頼できないものなどとして処理し、何かを行うすべてのリクエストを検証する必要があります。

この分離レイヤは、に直接というデータベースへのアクセスを許可しない最大の理由の1つです。信頼できる場所(Webサーバー/ APIレイヤー)で実行されているコードは、すべてのデータベース操作を検証する必要があります。このトポロジは、実際にデータベースとやりとりしていないときに、データベースサーバ上のリソースを縛ることからアプリユーザーを切り離します。これは直接接続ではあまり実用的ではありません。

+0

私は少し混乱しています。たとえば、私がmysqlを使用していて、次のノードコードが/ config/mysqlにある場合、それは直接接続ですか?私のノードサーバーはAWS Lambdaで動作しますが、同時に誰かがコードにアクセスすると、データベースに接続することができます。 'var mysql = require( 'mysql'); var con = mysql.createConnection({ ホスト: "localhost"、 ユーザー: "yourusername"、 パスワード: "yourpassword" }); ' – llJS

関連する問題