3層ネットワークトポロジ(web/app/data)が2層トポロジ(web-app/data)よりもセキュリティを向上させる方法に興味があります。 DMZは、世界との最初の接点であり、サーバーのセキュリティ侵害の影響が少ない場所であるという概念を理解しています。しかし、WebとWebアプリではどのような違いがありますか? DMZで?そして、私が非準拠アプリで何をするか(私はDMZを 'web'としてダムリバースプロキシに入れることができますが、ここでも付加価値は何ですか? )
簡単に言うと、セキュリティの観点からアプリ層を追加することで提供される主な機能は、データへのアクセスをより正確に制御することです。これを実装および実現するには、さまざまな方法があります。例は説明的なものです。
ハッシュ化されたパスワードを含むユーザーテーブルがデータベースにあるとします。ユーザーのログインを検証するには、対象のユーザーに適用されるハッシュについてテーブルをクエリする必要があります。
DMZのWebアプリがユーザーパスワードの検証をどのように処理するかを考えてみましょう。
次に、Webアプリが侵害された場合の意味を考えてみましょう。 2層ソリューションでは、クエリを変更したり、ハッシュされたすべてのパスワードを使用してユーザーテーブル全体を取得する新しいクエリを作成したりできる場合があります。 3層ソリューションでは、アプリケーションレイヤーによって提供される特定の機能のみがあり、(そのレイヤーの欠陥を無視して)基になるテーブルにアクセスできません。
事実上、アプリレイヤーは、データストアへの直接アクセスを削除することにより、データアクセスに関してWebアプリが実行できることの制御されたホワイトリストを可能にします。これが必要かどうかを判断するには、シュローダーの回答を参照してください。
あなたが問題について考えている方法は、あなたを困らせています。セキュリティを向上させるのはDMZまたは階層ではありませんアクセスとデータの分離です。
したがって、このように考えると、分離の層と分離しないことのリスクに関して、リスクと軽減オプションの評価を開始できます。
DMZネットワーク(サーバーレベルのアクセス))に誰かがアクセスするリスクがある場合は、リスクの高いアセットをDMZの背後に配置する必要があります。アーキテクチャが影響の大きいアセットが存在する場所ではない場合、DMZにアプリ層(または同様にWebアプリ層)を配置することを決定することで正当化できます。
あなたの決定マトリックスは質問に基づいています:
DMZと階層型アーキテクチャは、一連の制御が失敗した場合にオプションを提供する制御層を追加します。制御層が効果を持つかどうかは、完全にリスク評価次第です。
セキュリティとリスク管理とは、有害事象の発生の可能性と影響を軽減するために、制御のレイヤーを適用することです。コントロールが可能性や影響に影響を与えない場合、それはリソースの浪費です。
OPについての私の理解:2層= Webブラウザーで実行されるロジックは軽量/ UI、Webサーバーはプレゼンテーションおよびビジネスロジックを処理し、2層はDBまたはデータストアです。 PHPバックエンドDBでCRUDを実行し、HTMLを提供する可能性があります。3層は、Webサーバー(プレゼンテーション)とデータストアの間にサービス/ビジネスレイヤーを追加します。
アーキテクチャの設計と運用の観点から、この中間層を追加することには多くの利点があります。各層の責任を制限し、毎回システム全体をアップグレードする必要がなく、負荷の大きい層を水平方向に拡張します、ビジネス層にも他のウェブアプリやアプリからアクセスできます。
セキュリティの観点からは、各層のセキュリティコントロールを調整できます。 Web層はDMZにあり、データセンターで通信するIPを制限する必要があります。一方、ビジネス層は、承認サーバー、例外管理システム、DB、 ...脅威モデルを適用します。Webサーバーがビジネスロジックを処理し、操作をキャッシュ/ログに記録する場合、サーバーのセキュリティ侵害のリスクがあるため、暗号化が必要になる可能性があります。一方、データセンターに中間層がある場合ビジネスオペレーションのキャッシュ/ログは、平文で保存するのに適している場合があります。