SlideShare a Scribd company logo
1 of 19
Download to read offline
スレッド単位で権限分離を行う
Webサーバのアクセス制御アーキテクチャ
     - mod_process_security -


  京都大学 学術情報メディアセンター
        松本 亮介
目次
•   背景
•   Webサーバ上の動的コンテンツの扱い
•   動的コンテンツに関する問題
•   本研究の概要
•   既存のアクセス制御アーキテクチャ
•   提案するアクセス制御アーキテクチャ
•   実験
•   まとめ
•   今後の課題
背景
• クラウドやホスティング(レンタルサーバ)の低価格化
 – クラウドコンピューティングの普及 ⇒ より低価格が望まれる
 – 運用管理やHWコストの削減が課題

• マルチテナント環境のクラウドやホスティングが重要
 – リソース効率の向上 ⇒ Webサーバを複数ユーザーで共有
 – 動的コンテンツの扱い ⇒ セキュリティが重要

• Unix系OSのファイルのアクセス制御でセキュリティを担保
 – (例)CGI実行方式のアクセス制御であるsuEXEC
 – CGI実行方式は性能が低い ⇒ もっと高速に動作させたい

     今後はマルチテナント環境で
  高速かつ安全に動的コンテンツを処理したい
Webサーバ上の動的コンテンツの扱い

CGI実行方式は性能が低い
  – 高速に動作するDSO実行方式を使いたい
  – DSO実行方式とは?
           CGI実行方式                             DSO実行方式
                                 ボトルネック
Server Process
                                           Server Process
                 CGI Process
                                                            Program
                               Program
                                          インタプリタを組み込んでおく


マルチテナント環境でもDSO実行方式を使って高速に処理したい
動的コンテンツに関する問題
従来のアクセス制御手法は不完全
 – 従来のDSO実行方式のためのアクセス制御の問題
   • プロセスの中で疑似的に権限を分離するアーキテクチャ
   • 不完全な仕様(性能劣化が大きい・セキュリティが弱い等)
 – CGI実行方式のためのアクセス制御の特徴
   • プロセス単位で権限を分離するアーキテクチャ
   • アクセス制御とは関係なくCGI実行方式そのものの性能が低い
 – 実行方式毎にアクセス制御が存在していて煩雑
   • 設定も複雑で開発者の敷居が高い


マルチテナント環境で動的コンテンツを扱うには・・・
 – CGI実行方式を使わざるを得ない
 – DSOを使うためには個別にデーモンやOSを起動して分離
   ⇒ オーバースペックでリソース効率が悪い
本研究の概要

パフォーマンスを考慮したアクセス制御に着目
  – CGI・DSO実行方式に両対応したアーキテクチャを設計
  – Webサービスの高度化に耐えうる基盤のセキュリティ機構
mod_process_securityの提案
  – プロセスの中でスレッド単位で権限分離を行うアーキテクチャ
    • DSO実行方式の性能をいかしたままアクセス制御可能
    • 複数あるアクセス制御手法を統一的に扱うアーキテクチャ
  – Linux上で動作するApache HTTP Serverを対象

⇒ マルチテナント環境で動的コンテンツが安全かつ高速に動作
Webサーバ上のアクセス制御の概要
• Apache HTTP Serverの利用を想定
  – 仮想ホスト方式で複数のユーザーでサーバ共有する状況
  – 複数のユーザー領域のセキュリティを担保
    • 本研究でのアクセス制御はBasic認証やIP制限等では無い

• 基本的なWebサーバのアクセス制御のアーキテクチャ
  – 仮想ホストへのリクエストはユーザー権限で実行
  – 他の仮想ホストへのアクセスを防ぐ
  – suEXECやmod_suid2、mod_ruid2等
                               単一のサーバプロセス

     Webサービス A   × Webサービス B
                               単一のOS

         ×             ×

      仮想ホスト A    ×   仮想ホスト B
                               それぞれにユーザー権限
                               を設定しアクセス制御
親サーバプロセス                                         CGI実行方式
 (owner : root)
                                                 suEXECアーキテクチャ


              子サーバプロセス
                  (owner : apache)           fork()
                                             execve() suexec-program
ボトルネック                           CGI用 プロセス
                                     (owner : root)

                                             setuid(), setgid()
            execve()                 CGI用 プロセス
                                     (owner : user1)
 index.php
                                             terminate process
(owner: user1)
親サーバプロセス                                DSO実行方式
 (owner : root)                         mod_ruid2アーキテクチャ
                           Set cap(Linux capability)

                  子サーバプロセス
                  (owner : apache)              ボトルネック
                    Set capability

                          setuid(), setgid() Unset cap
 ×                子サーバプロセス                execve()
                  (owner : user1)
                   Set capability
                                                 index.php
 setuid(), setgid()        terminate process    (owner: user1)



                                                 ×
                                               Index.php経由で
                                               権限変更が可能
提案するアクセス制御アーキテクチャ
       - mod_process_security -

• スレッドを利用してボトルネックを低減
 – 制御用スレッド単位で権限分離するアーキテクチャ
  • 動的コンテンツのリクエスト時にスレッド生成
  • プロセスの生成・破棄は不要
  • スレッドの生成・破棄により処理効率が上昇
 – 実行方式で区別しない統一的アーキテクチャ
  • CGIやDSOに個別のソフトウェアを組み込む必要無し
 – Apacheモジュールで簡単に組み込み・設定可能
  • 開発者が扱いやすい仕様
親サーバプロセス                                       CGI実行方式
   (owner : root)
                                                mod_process_security

                      子サーバプロセス
                       (owner : apache)            Create thread, set cap

                                           制御用スレッド
                                          (owner : apache)
                                                   setuid・setgid, unset cap
  CGIの仕様
                                           制御用スレッド
                                           (owner : user1)
   execve()         CGI用プロセス
                    (owner : user1)
 index.php
                            terminate process      destroy thread
(owner: user1)
親サーバプロセス                                      DSO実行方式
 (owner : root)
                                               mod_process_security

                     子サーバプロセス
                      (owner : apache)           Create thread, set cap

                                         制御用スレッド
                                         (owner : apache)

      DSOの仕様                                     setuid・setgid, unset cap
                          execve()       制御用スレッド
                                         (owner : user1)
                   index.php
                  (owner: user1)
                                                 destroy thread
実験
• 1秒間に処理可能なレスポンス数を計測(response/sec)
   • クライアントからWebサーバに対して1秒間に複数リクエストを生成
      • リクエスト数を変動させて、スループットが低下するか評価
      • アクセス制御の適応有無でスループットに差がでるか評価
   • phpinfo()を表示するプログラム(54KB)ベンチマークソフト(httperf 0.9.0)
                       クライアント
CPU                        Intel Core2Duo E8400 3.00GHz
Memory                     4GB
NIC                        Realtek RTL8111/8168B 1Gbps
OS                         CentOS 5.6
                       Webサーバ
 CPU                       Intel Xeon X5355 2.66GHz
 Memory                    8GB
 NIC                       Broadcom BCM5708 1Gbps
 OS                        CentOS 5.6
 Middle Ware               Apache 2.2
導入方法

$ sudo cp mod_process_security.so /etc/httpd/modules/.

$ cat /etc/httpd/conf.d/ps.conf
LoadModule process_security_module modules/mod_process_security.so
PSExtensions .php .cgi .py .pl .rb
# 静的コンテンツも動的コンテンツも適応したい場合は以下
# PSExAll On


$ sudo /etc/init.d/httpd restart
スループット比較
                3000                                              DSO(mod_process_security)は
                                                                  DSO(アクセス制御無し)と比較
                2500                                              してスループット劣化は微小
                                           DSO実行方式
Responses/sec




                2000
                         CGIのアクセス制御のス
                1500     ループット劣化は微小

                1000
                         CGI実行方式                        DSO(mod_ruid2)は全てのRequestに対し
                 500     (次スライドで拡大)                     て、5前後のResponse/secでありスルー
                                                        プット劣化が大きい
                   0



                                                   Requests/sec

                       DSO(mod_process_security)            DSO(アクセス制御無し)
                       DSO(mod_ruid2)                       CGI(アクセス制御無し)
                       CGI(suEXEC)                          CGI(mod_process_security)
CGIに関するスループット比較
                200


                180
Responses/sec




                160


                140
                                        アクセス制御無し、
                                        mod_process_secuiry、
                120                     suEXECの順に性能が高い。


                100
                      100   200   300    400      500      600      700    800     900   1000
                                                  Requests/sec

                      CGI(アクセス制御無し)            CGI(suexec)       CGI(mod_process_security)
考察
• mod_process_security採用によるスループット劣化は少ない
  – アクセス制御を組み込まない場合と比較
    • CGI実行方式の場合はsuEXECよりもスループット劣化が少ない
    • DSO実行方式の場合はmod_ruid2よりもスループット劣化が少ない

                                  アクセス制御無しと
 実行方式          アクセス制御手法           比較したスループット
                                  低下率(平均)

                 suEXEC             2.13%
  CGI
           mod_process_security     1.48%
           mod_ruid2やmod_suid2      99.9%
  DSO
           mod_process_security     0.19%
まとめ
• DSOの性能を生かした柔軟なアクセス制御手法
 – OSレイヤーでの変更を必要としないアーキテクチャ
 – 柔軟なシステム設計に対応
• マルチテナント環境で高いパフォーマンスとセキュリティ
 – 仮想マシンや個別のデーモンでの分離が不要
 – リソース効率が良い ⇒ 低価格化に繋がる
 – DSOの性能とセキュリティを担保
• 複数あったアクセス制御手法を統一
 – CGIやDSO等区別しない
 – 導入方法もApacheモジュールで動作するため簡単
 – 開発者が扱いやすい

 ⇒ マルチテナント環境やホスティングの低価格化を考慮した
 Webサービスの高度化に耐えうるセキュリティアーキテクチャ
今後の課題

• 今後の課題
 – アクセス制御の導入を促していく
  • https://modules.apache.org/ で公開済み
 – Apacheの開発MLで標準機能とするかの議論
 – Webサービスの高度化に耐えうる基盤設計
  • セキュリティとパフォーマンス向上の一つの答え
  • 仮想ホスト単位でのリソース割当機能設計
  • リソース割当の適応的決定の設計

More Related Content

What's hot

そろそろSELinux を有効にしてみませんか?
そろそろSELinux を有効にしてみませんか?そろそろSELinux を有効にしてみませんか?
そろそろSELinux を有効にしてみませんか?Atsushi Mitsu
 
サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)snicker_jp
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1Etsuji Nakai
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudsamemoon
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性Yusaku Watanabe
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2Etsuji Nakai
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)iret, Inc.
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Manabu Ori
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理Akihiro Kitada
 
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告Uptime Technologies LLC (JP)
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速するKohei KaiGai
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08tokuhy
 
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介ksk_ha
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)Uptime Technologies LLC (JP)
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについてさくらインターネット株式会社
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...VirtualTech Japan Inc.
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2Etsuji Nakai
 

What's hot (18)

そろそろSELinux を有効にしてみませんか?
そろそろSELinux を有効にしてみませんか?そろそろSELinux を有効にしてみませんか?
そろそろSELinux を有効にしてみませんか?
 
サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)サバフェスLT(元うなぎ屋)
サバフェスLT(元うなぎ屋)
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:ハンズオンNo1
 
CloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloudCloudStackユーザ会 OSC.cloud
CloudStackユーザ会 OSC.cloud
 
GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性GPGPUによるパーソナルスーパーコンピュータの可能性
GPGPUによるパーソナルスーパーコンピュータの可能性
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo2
 
cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)cloudpack負荷職人結果レポート(サンプル)
cloudpack負荷職人結果レポート(サンプル)
 
Pgcon2012 ori-20120224
Pgcon2012 ori-20120224Pgcon2012 ori-20120224
Pgcon2012 ori-20120224
 
〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理〜Apache Geode 入門 gfsh によるクラスター構築・管理
〜Apache Geode 入門 gfsh によるクラスター構築・管理
 
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
BigDataを迎え撃つ! PostgreSQL並列分散ミドルウェア「Stado」の紹介と検証報告
 
(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する(JP) GPGPUがPostgreSQLを加速する
(JP) GPGPUがPostgreSQLを加速する
 
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08COMSTARでiSCSI - OpenSolaris勉強会 2011.08
COMSTARでiSCSI - OpenSolaris勉強会 2011.08
 
第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介第4回Linux-HA勉強会資料 Pacemakerの紹介
第4回Linux-HA勉強会資料 Pacemakerの紹介
 
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
PostgreSQLアーキテクチャ入門(PostgreSQL Conference 2012)
 
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
MastodonインスタンスをセットアップできるスタートアップスクリプトについてMastodonインスタンスをセットアップできるスタートアップスクリプトについて
Mastodonインスタンスをセットアップできるスタートアップスクリプトについて
 
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
OpenStack Kilo with 6Wind VA High-Performance Networking Using DPDK - OpenSta...
 
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
OpenStackクラウド基盤構築ハンズオンセミナー 第2日:講義No2
 
nginx入門
nginx入門nginx入門
nginx入門
 

Viewers also liked

Cannaをフォークしてみた
CannaをフォークしてみたCannaをフォークしてみた
CannaをフォークしてみたMasahiko Hashimoto
 
続・Cannaをフォークしてみた
続・Cannaをフォークしてみた続・Cannaをフォークしてみた
続・CannaをフォークしてみたMasahiko Hashimoto
 
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?Masahiko Hashimoto
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)株式会社MonotaRO Tech Team
 
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)株式会社MonotaRO Tech Team
 
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)株式会社MonotaRO Tech Team
 

Viewers also liked (7)

Cannaをフォークしてみた
CannaをフォークしてみたCannaをフォークしてみた
Cannaをフォークしてみた
 
続・Cannaをフォークしてみた
続・Cannaをフォークしてみた続・Cannaをフォークしてみた
続・Cannaをフォークしてみた
 
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
京都発祥日本語入力「FreeWnn」は(今度こそ)どこまで賢くなれるか?
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
 
モノタロウの商品データ連携について
モノタロウの商品データ連携についてモノタロウの商品データ連携について
モノタロウの商品データ連携について
 
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
尼崎から世界へ!モノタロウの海外展開を支えるDevOps基盤 (デブサミ関西2016)
 
社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)社内勉強会を続けるには(2016.10.07 DevLove 関西)
社内勉強会を続けるには(2016.10.07 DevLove 関西)
 

Similar to スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ

Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構Ryosuke MATSUMOTO
 
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善Ryosuke MATSUMOTO
 
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューションオープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューションTetsurou Yano
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようAkira Shimosako
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
SQL Server 2022 New Features Explain Japanese
SQL Server 2022 New Features Explain JapaneseSQL Server 2022 New Features Explain Japanese
SQL Server 2022 New Features Explain JapaneseMicrosoft
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Takamasa Maejima
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理junichi anno
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努Insight Technology, Inc.
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目saiwaki
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~Naoki (Neo) SATO
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)l_b__
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...Suguru Ito
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Masahito Zembutsu
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめMikiya Okuno
 

Similar to スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ (20)

Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
 
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
汎用性の高い大規模共有型Webバーチャルホスティング基盤のセキュリティと運用技術の改善
 
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューションオープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
オープンソースカンファレンス OSC 2014 エンタープライズ 東京 ownCloud 法人向けオンラインストレージ マルチデバイスファイル共有ソリューション
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
Groovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみようGroovyで楽にSQLを実行してみよう
Groovyで楽にSQLを実行してみよう
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
SQL Server 2022 New Features Explain Japanese
SQL Server 2022 New Features Explain JapaneseSQL Server 2022 New Features Explain Japanese
SQL Server 2022 New Features Explain Japanese
 
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
Windows Server 2016 で作るシンプルなハイパーコンバージドインフラ (Microsoft TechSummit 2016)
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努C16 45分でわかるPostgreSQLの仕組み by 山田努
C16 45分でわかるPostgreSQLの仕組み by 山田努
 
RoR周辺知識15項目
RoR周辺知識15項目RoR周辺知識15項目
RoR周辺知識15項目
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
[ウェビナー] Build 2018 アップデート ~ データ プラットフォーム/IoT編 ~
 
JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)JellyBeanのソースをとりあえず眺めてみた(手抜き)
JellyBeanのソースをとりあえず眺めてみた(手抜き)
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
開発者なのに運用で手がいっぱい? そんなあなたに贈る、 クラウド時代に最適な OSS の RDBMS ! Azure Database for MySQL...
 
Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴Docker最新動向2017秋+セキュリティの落とし穴
Docker最新動向2017秋+セキュリティの落とし穴
 
DTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめDTraceによるMySQL解析ことはじめ
DTraceによるMySQL解析ことはじめ
 

Recently uploaded

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 

Recently uploaded (10)

TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 

スレッド単位で権限分離を行うWebサーバのアクセス制御アーキテクチャ

  • 1. スレッド単位で権限分離を行う Webサーバのアクセス制御アーキテクチャ - mod_process_security - 京都大学 学術情報メディアセンター 松本 亮介
  • 2. 目次 • 背景 • Webサーバ上の動的コンテンツの扱い • 動的コンテンツに関する問題 • 本研究の概要 • 既存のアクセス制御アーキテクチャ • 提案するアクセス制御アーキテクチャ • 実験 • まとめ • 今後の課題
  • 3. 背景 • クラウドやホスティング(レンタルサーバ)の低価格化 – クラウドコンピューティングの普及 ⇒ より低価格が望まれる – 運用管理やHWコストの削減が課題 • マルチテナント環境のクラウドやホスティングが重要 – リソース効率の向上 ⇒ Webサーバを複数ユーザーで共有 – 動的コンテンツの扱い ⇒ セキュリティが重要 • Unix系OSのファイルのアクセス制御でセキュリティを担保 – (例)CGI実行方式のアクセス制御であるsuEXEC – CGI実行方式は性能が低い ⇒ もっと高速に動作させたい 今後はマルチテナント環境で 高速かつ安全に動的コンテンツを処理したい
  • 4. Webサーバ上の動的コンテンツの扱い CGI実行方式は性能が低い – 高速に動作するDSO実行方式を使いたい – DSO実行方式とは? CGI実行方式 DSO実行方式 ボトルネック Server Process Server Process CGI Process Program Program インタプリタを組み込んでおく マルチテナント環境でもDSO実行方式を使って高速に処理したい
  • 5. 動的コンテンツに関する問題 従来のアクセス制御手法は不完全 – 従来のDSO実行方式のためのアクセス制御の問題 • プロセスの中で疑似的に権限を分離するアーキテクチャ • 不完全な仕様(性能劣化が大きい・セキュリティが弱い等) – CGI実行方式のためのアクセス制御の特徴 • プロセス単位で権限を分離するアーキテクチャ • アクセス制御とは関係なくCGI実行方式そのものの性能が低い – 実行方式毎にアクセス制御が存在していて煩雑 • 設定も複雑で開発者の敷居が高い マルチテナント環境で動的コンテンツを扱うには・・・ – CGI実行方式を使わざるを得ない – DSOを使うためには個別にデーモンやOSを起動して分離 ⇒ オーバースペックでリソース効率が悪い
  • 6. 本研究の概要 パフォーマンスを考慮したアクセス制御に着目 – CGI・DSO実行方式に両対応したアーキテクチャを設計 – Webサービスの高度化に耐えうる基盤のセキュリティ機構 mod_process_securityの提案 – プロセスの中でスレッド単位で権限分離を行うアーキテクチャ • DSO実行方式の性能をいかしたままアクセス制御可能 • 複数あるアクセス制御手法を統一的に扱うアーキテクチャ – Linux上で動作するApache HTTP Serverを対象 ⇒ マルチテナント環境で動的コンテンツが安全かつ高速に動作
  • 7. Webサーバ上のアクセス制御の概要 • Apache HTTP Serverの利用を想定 – 仮想ホスト方式で複数のユーザーでサーバ共有する状況 – 複数のユーザー領域のセキュリティを担保 • 本研究でのアクセス制御はBasic認証やIP制限等では無い • 基本的なWebサーバのアクセス制御のアーキテクチャ – 仮想ホストへのリクエストはユーザー権限で実行 – 他の仮想ホストへのアクセスを防ぐ – suEXECやmod_suid2、mod_ruid2等 単一のサーバプロセス Webサービス A × Webサービス B 単一のOS × × 仮想ホスト A × 仮想ホスト B それぞれにユーザー権限 を設定しアクセス制御
  • 8. 親サーバプロセス CGI実行方式 (owner : root) suEXECアーキテクチャ 子サーバプロセス (owner : apache) fork() execve() suexec-program ボトルネック CGI用 プロセス (owner : root) setuid(), setgid() execve() CGI用 プロセス (owner : user1) index.php terminate process (owner: user1)
  • 9. 親サーバプロセス DSO実行方式 (owner : root) mod_ruid2アーキテクチャ Set cap(Linux capability) 子サーバプロセス (owner : apache) ボトルネック Set capability setuid(), setgid() Unset cap × 子サーバプロセス execve() (owner : user1) Set capability index.php setuid(), setgid() terminate process (owner: user1) × Index.php経由で 権限変更が可能
  • 10. 提案するアクセス制御アーキテクチャ - mod_process_security - • スレッドを利用してボトルネックを低減 – 制御用スレッド単位で権限分離するアーキテクチャ • 動的コンテンツのリクエスト時にスレッド生成 • プロセスの生成・破棄は不要 • スレッドの生成・破棄により処理効率が上昇 – 実行方式で区別しない統一的アーキテクチャ • CGIやDSOに個別のソフトウェアを組み込む必要無し – Apacheモジュールで簡単に組み込み・設定可能 • 開発者が扱いやすい仕様
  • 11. 親サーバプロセス CGI実行方式 (owner : root) mod_process_security 子サーバプロセス (owner : apache) Create thread, set cap 制御用スレッド (owner : apache) setuid・setgid, unset cap CGIの仕様 制御用スレッド (owner : user1) execve() CGI用プロセス (owner : user1) index.php terminate process destroy thread (owner: user1)
  • 12. 親サーバプロセス DSO実行方式 (owner : root) mod_process_security 子サーバプロセス (owner : apache) Create thread, set cap 制御用スレッド (owner : apache) DSOの仕様 setuid・setgid, unset cap execve() 制御用スレッド (owner : user1) index.php (owner: user1) destroy thread
  • 13. 実験 • 1秒間に処理可能なレスポンス数を計測(response/sec) • クライアントからWebサーバに対して1秒間に複数リクエストを生成 • リクエスト数を変動させて、スループットが低下するか評価 • アクセス制御の適応有無でスループットに差がでるか評価 • phpinfo()を表示するプログラム(54KB)ベンチマークソフト(httperf 0.9.0) クライアント CPU Intel Core2Duo E8400 3.00GHz Memory 4GB NIC Realtek RTL8111/8168B 1Gbps OS CentOS 5.6 Webサーバ CPU Intel Xeon X5355 2.66GHz Memory 8GB NIC Broadcom BCM5708 1Gbps OS CentOS 5.6 Middle Ware Apache 2.2
  • 14. 導入方法 $ sudo cp mod_process_security.so /etc/httpd/modules/. $ cat /etc/httpd/conf.d/ps.conf LoadModule process_security_module modules/mod_process_security.so PSExtensions .php .cgi .py .pl .rb # 静的コンテンツも動的コンテンツも適応したい場合は以下 # PSExAll On $ sudo /etc/init.d/httpd restart
  • 15. スループット比較 3000 DSO(mod_process_security)は DSO(アクセス制御無し)と比較 2500 してスループット劣化は微小 DSO実行方式 Responses/sec 2000 CGIのアクセス制御のス 1500 ループット劣化は微小 1000 CGI実行方式 DSO(mod_ruid2)は全てのRequestに対し 500 (次スライドで拡大) て、5前後のResponse/secでありスルー プット劣化が大きい 0 Requests/sec DSO(mod_process_security) DSO(アクセス制御無し) DSO(mod_ruid2) CGI(アクセス制御無し) CGI(suEXEC) CGI(mod_process_security)
  • 16. CGIに関するスループット比較 200 180 Responses/sec 160 140 アクセス制御無し、 mod_process_secuiry、 120 suEXECの順に性能が高い。 100 100 200 300 400 500 600 700 800 900 1000 Requests/sec CGI(アクセス制御無し) CGI(suexec) CGI(mod_process_security)
  • 17. 考察 • mod_process_security採用によるスループット劣化は少ない – アクセス制御を組み込まない場合と比較 • CGI実行方式の場合はsuEXECよりもスループット劣化が少ない • DSO実行方式の場合はmod_ruid2よりもスループット劣化が少ない アクセス制御無しと 実行方式 アクセス制御手法 比較したスループット 低下率(平均) suEXEC 2.13% CGI mod_process_security 1.48% mod_ruid2やmod_suid2 99.9% DSO mod_process_security 0.19%
  • 18. まとめ • DSOの性能を生かした柔軟なアクセス制御手法 – OSレイヤーでの変更を必要としないアーキテクチャ – 柔軟なシステム設計に対応 • マルチテナント環境で高いパフォーマンスとセキュリティ – 仮想マシンや個別のデーモンでの分離が不要 – リソース効率が良い ⇒ 低価格化に繋がる – DSOの性能とセキュリティを担保 • 複数あったアクセス制御手法を統一 – CGIやDSO等区別しない – 導入方法もApacheモジュールで動作するため簡単 – 開発者が扱いやすい ⇒ マルチテナント環境やホスティングの低価格化を考慮した Webサービスの高度化に耐えうるセキュリティアーキテクチャ
  • 19. 今後の課題 • 今後の課題 – アクセス制御の導入を促していく • https://modules.apache.org/ で公開済み – Apacheの開発MLで標準機能とするかの議論 – Webサービスの高度化に耐えうる基盤設計 • セキュリティとパフォーマンス向上の一つの答え • 仮想ホスト単位でのリソース割当機能設計 • リソース割当の適応的決定の設計