「マイクロソフト系技術情報 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サーバへのアプリケーションの配置はどうなるか?
箱モノ系 †
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? への攻撃が成功しても、
低い権限しか奪取することができないようにする。