0

私はネットワークのさまざまな部分を設計しています。将来のソフトウェアプロジェクトの設計に関する私の現在の考え:

DMZ内のWebサーバー。このWebサーバーには、すべてのデータ管理の内部にあるMSSQLデータベースと通信するために、ファイアウォール(SQLポート上)に穴が開けられています。

質問:ファイアウォールにデータベースサーバーと通信するための穴を設ける代わりに、DMZ内のアプリケーションが使用できるWebサービスをホストする内部Webサーバーを、Webサービスの背後にあるデータベースロジックとともに使用する方が適切/安全ですか(そのWebサーバーとのみ通信するために穴が開けられました。)

Webサービスの実装では、APIの変更を更新する場所は1つだけです。これが、私が検討している理由ですが、データベースやクエリへの直接アクセスよりも遅い可能性があります。

どちらが良いかについて何か考えはありますか?

編集:すべてのアプリケーション/ビジネスロジックをアプリケーション層に配置しない限り、SQL用のファイアウォールに穴を開ける必要があることに気づきました。API関数(「GetEmployeeByName」などのすべてのアプリケーションに影響するもの)専用のレイヤーを追加したいので、DMZからDBにアクセスする必要があります...

最良の答えに傾くのは次のとおりです。Webサービスをホストする内部WebサービスAPIサーバー-これらは、DMZ内のすべてのWebサーバー、またはDMZ内のプロキシサーバーのいずれかによって消費されます。(したがって、ファイアウォールを介したsslポートが必要なサーバーは1つだけです。)(もちろん、すべての内部サーバーがアクセスできます。)

4

1 に答える 1

2

3 層アーキテクチャがより優れたモデルである場合については、多くの議論があります (ここにその 1 つがあります)。Googleでもっと見つけることができるはずです。

簡単な回答: セキュリティとスケーラビリティが目標である場合は、おそらくアプリ層サービスを使用することをお勧めします。すべての階層とレイヤーを開発する際は、必ず多層防御に重点を置いてください。

長い答え: 必要に応じて異なります。

あなたの編集に応じて編集してください: ビジネス ロジックのほとんどをアプリ層に配置することをお勧めします。Web サーバーは、主にプレゼンテーションである必要があります。ただし、ビジネス ロジックを配置する場所に関係なく、すべてのデータ アクセスをサービスに配置する必要があります。Web 層はアプリ層とのみ通信する必要があります。

これは、3 層の側面を掘り下げるための最初の検索です これは、層の分割などに関する適切な紹介です。

于 2012-11-16T21:02:17.393 に答える