マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Apache/Tomcat構成と異なり、IIS/ASP.NETは不可分になり、
デザインパターンの質問を受けることが何度かあったので纏めます。

Web/APの分離

  • ASP.NETのみのシステムで、WebサーバとAPサーバを分けることはあるか?
  • Apache/Tomcat構成と異なり、基本、IIS/ASP.NETは不可分です。
    ただし、レア・ケースになりますが、階層を追加することはあります。

階層追加の理由

  • 分けることがある場合、どのような理由でWebサーバとAPサーバを分けるか?
  • 分割と言うより、階層の追加ですが、セキュリティ・レベルが向上するためです。
  • Webサーバ上のセキュリティ・ホールを直接突かれないようにする。
  • IIS/ASP.NET上にコードが載るので、それが漏れない様にする。
  • など、など。

分離&配置方法

  • 分けることがある場合、Webサーバ、APサーバへのアプリケーションの配置はどうなるか?
  • 以下の2パターンが一般的です。

箱モノ系

ARRやISAなどをフロントに立て、
問題のあるリクエストでは無いことを検証してから
バックのWeb/APへ要流を流すというパターン。

ゲートキーパー・デザインパターン

上記(ARRやISA)では、HTTP Request Bodyを検査するのはできないようです。

というより、HTTP Request Bodyの検査と言うやり方だと、

  • 検査処理が難しく、
  • 処理の負荷が高くなり、

防御し難くなると思います。

なので、一度、Web/APでリクエストを受けてから、要求を検査するのが一般的です。
これは、ゲートキーパー・デザインパターンと呼ばれるデザインパターンです。

以下、ゲートキーパー・デザインパターンの説明。

配置方法

配置は以下の様になります。

  • Web APIの場合(追加)
    • フロントのIIS/ASP.NET(検査層)
    • バックのIIS/ASP.NET(B層、D層)
  • Webアプリケーションの場合(分割)
    • フロントのIIS/ASP.NET(P層)
    • バックのIIS/ASP.NET(B層、D層)
  • それぞれ、
    • フロントのIIS/ASP.NETは、GateKeeper?
    • バックのIIS/ASP.NETは、KeyMaster?

と呼び、KeyMaster?をDMZの裏のバックエンドに引き込みます。

構成としてやや複雑で高級です。

通信方法

フロントのIIS/ASP.NETとバックのIIS/ASP.NETの通信方法。

  • 通信に、非同期のストレージ・キューを使用するパターンは、
    マルチキー・デザインパターンというパターンになります。

設計目標

  • GateKeepr?は、リクエストを受けてから、要求を検査します。
  • GateKeepr? にDBMSの接続文字列やストレージキーを持たせず、
    DBや、ストレージへのアクセスは KeyMaster? だけが行います。
    (ビジネス・ロジックなどもKeyMaster? だけが持つようにする)
  • 仮に GateKeeper? への攻撃が成功しても、
    低い権限しか奪取することができないようにします。

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-03-12 (日) 15:11:02 (615d)