mod_process_security – Apache上でスレッド単位で権限分離を行うファイルのアクセス制御アーキテクチャ(前半編)

「スレッド単位で権限分離を行うWebサーバ上のアクセス制御アーキテクチャ」として、3月15日16日に開催されたIA/IOT/SITE/ISMS合同研究会で発表してきた。概ね、好評だったように思う。ただ、やらないといけないことはいくつかあるので、そこはこれから大学で適宜やっていこうと思う。

まずは、この論文の概要としては、

  • 大規模Webサーバ上で大多数のユーザー(仮想ホスト)を一つのサーバで処理するようなマルチテナント環境において、ユーザー間のセキュリティを担保するためのアクセス制御を行う技術

である。(これまではsuEXECが使われていた)

これは、Webサービスが高度化していく時代において、低価格化がより望まれてきており、以前に増してマルチテナントで少ないサーバで多くのユーザー領域(仮想ホスト等)を共有して、かつ、セキュアな仕組みにしておきたいという背景がある。

実際のユースケースとしては、以下のような状況で使えるように思う。

  • モジュール版PHPやPerl等(DSO版)を安全かつ高速に仮想ホスト環境で実行可能
  • CGIやDSOのアクセス制御を統一的に扱うことが可能(suEXECとかいらない)
  • FastCGIももちろんアクセス制御された状態で動作可能

結局何ができるかというと、CGIやDSO及びFastCGI等の実行方式に関わらず、仮想ホスト環境においてsuEXECのような動的コンテンツをファイルのユーザー権限で実行することが可能であるということ。さらに、DSOを実行させた場合でも性能劣化が非常に少なくなっている。

では、具体的にどういう処理をしているのかを簡単に説明する。(詳しくは論文で

 

続きを読む

Webサーバの仮想ホスティングにおけるパーミッション設定の答え(Apacheの場合)

Webサーバを構築する上で、複数のユーザーでサーバを共有する場合、Apacheの仮想ホスト方式(VirtualHost)を使う場合が多いと思う。この方式の利点としては、単一のサーバプロセスのみを動作させておけば良く、リソース効率が良いからだ。

個別のユーザーごとにサーバプロセスを立ち上げたり、chrootで区別したり、仮想マシンやコンテナ等で区別する手法があるが、Webサーバを共有したい目的においては、非常にオーバースペックな共有の仕方と言える。そのため、仮想ホスト方式を使う場合が多いのだが、ここでよくよく注意しなければならないことがある。

それは、セキュリティである。

続きを読む

Apache 2.4.1まとめ – リリース後2週間を迎えて

Apache2.4.1がリリースしてから、約2週間たった。

自分が思っていた以上に、世の中の人はApacheやWebサーバに関心があるようで、この2週間でもかなりの検証や調査が行われていた。僕自身も、自分の記事をここまで見て頂けて光栄である。

ということで、2週間たったのでApache2.4.1に関して注目された(個人的に)9つの記事をまとめておきたいと思う。

続きを読む

引き続き Apache 2.4.1のスループット評価(旧Apacheと動的コンテンツ処理性能比較)

前回の記事「Apache 2.4.1のスループット評価(旧ApacheとNginxとのベンチマーク比較)」を非常に多くの方に見て頂いており、こういう情報が重要なんだなぁ、としみじみ思った。多くのオープンソースを使わしてもらっているので、こういう形でフィードバックしていけたらよいな。参考にして頂いてありがとうございます。

今回は、前回の記事に続き、個人的にも非常に興味のあるApache2.4.1の「動的コンテンツのスループット」がどの程度なのかを評価したいと思う。

続きを読む

Apache 2.4.1のスループット評価(旧ApacheとNginxとのベンチマーク比較)

久々のApache HTTP Server 2.4.1という安定版がリリースされたので、早速ベンチマーク評価を行う。今回はevent_mpmのExperimentがとれて、晴れてデフォルトMPMになったのでそれを使ってみたい。

日本一(ひょっとすると世界一)早いApache 2.4.1 event_mpmのレビューを意識してみた。

続きを読む