マイクロソフト系技術情報 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を検査するのはできない。
    • なので、一度、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?
    • DMZのフロント・エンド
    • HTTP Request Bodyを検査する
  • バックのIIS/ASP.NETは、KeyMaster?
    • DMZの裏のバック・エンドに引き込む。
    • バックエンドのストレージにアクセスする鍵を持つ

通信

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

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

設計目標

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

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-03-21 (土) 20:09:13 (108d)