システムデザイン

大規模クラウド・Webホスティングサービスから学ぶ実践的なLinuxのセキュリティと仮想化技術 Vol2. 本連載の流れと筆者の専門領域の紹介

AMBL株式会社 Security LABの技術顧問をしている松本亮介と申します。SNSなどではまつもとりーという名前で活動しています。
前回も簡単にご紹介しましたが、Security LABは2021年の10月に設立されたチームで、設立の経緯や活動については、「FinTech・金融業界のセキュリティ知識の普及とセキュリティ投資の適正化を目指すSecurity LABを設立」という記事や「Security LAB設立の背景セキュリティには翻訳が必要だ!」でも紹介されていますので、改めてそちらも御覧いただけると幸いです。

さて、本連載では、タイトルにある通り「大規模クラウドやWebホスティングサービスから学ぶ実践的なLinuxのセキュリティと仮想化技術」というタイトルで、Linuxのセキュリティやリソース制御、パフォーマンス、運用技術について解説していきます。

前回は第一回ということで、まずは本連載が何を目的にして、どのような情報を解説をしていきたいか、ということについてご説明しました。複数回に渡って解説が続きますので、どういうミッションやビジョンに基づいて解説しているかを、予め読者の皆さまにお伝えしておくことで、みなさまがより内容を理解をしやすくなると考えているからです。

今回は第二回ですので、この連載で具体的にどのような話題について解説していくかを紹介しつつ、筆者の自己紹介がてら専門領域の取り組みも紹介させてください。連載の話題と筆者のバックグラウンドを知ることで、より安心して連載を通読頂けるようになると幸いです。

■本連載の流れの紹介  

第一回では、連載の強みや想定読者を述べました。今回は、本連載で取り上げる話題について紹介します。本連載はSecurity LABが取り組む内容ということで、主に大規模クラウドやWebホスティングサービスにおけるセキュリティや運用技術、性能、リソース分離などの話題を中心に紹介していきます。特に、Linuxのセキュリティや仮想化技術を話題にすることからも、システム間というよりは、よりOSやミドルウェアに近いレイヤーでの話題を取り上げます。そのような解説を通じて、Linuxの要素技術についても理解を深めることができるようにしていきます。

では、以下に全体の連載で取り上げる話題について一覧で紹介します。

これらの話題をそれぞれ一度の記事で紹介すると非常に長くなってしまいますので、1から6の各話題について更に細かく分けて紹介していきます。

昨今Kubernetesやコンテナ技術、CI/CDやインフラのコード化など、これまで意識していた技術領域が抽象化されて、その抽象化領域をコードや設定で記述する手法が増えてきました。一方で、抽象化された領域の内部は、依然としてLinuxの要素技術で成り立っており、そういった要素技術を改めて学びなおすことが難しくなってきているとも言えます。

そこで、本連載では改めて、WebシステムがWebサーバやアプリケーションサーバ、HTTPを使った通信などで構成される中で、単一のホストOS上に複数のコンテナやサーバプロセス、バッチ処理のプロセスなどが動作する、所謂マルチテナント環境において、どのようなセキュリティに関連する要素技術があり、OS上でどのようなセキュリティを意識すべきかを解説します。その上で、各プロセスの処理の性能やシステムの運用技術をどのように追求していく必要があるかについても一緒に学んでいければ幸いです。

これらの要素技術を学ぶ中で、抽象化されたレイヤーにもしバグや障害の原因があった場合に、自分自身の知識と技術力でその問題を特定して解決したり、あるいは、抽象レイヤーをつかさどるオープンソースソフトウェアにパッチやバグ報告を送ったりできるようになれば、新しい技術を学んだり、ソフトウェアを書くことがもっと楽しくなっていくかもしれません。

■筆者の自己紹介と専門領域の概要  

筆者の専門領域を知っていただくことで、今後の連載の解説をそれほどおかしなことを説明していないと、安心して通読して頂ければと思います。まず筆者の自己紹介ですが、実際には実績ページに多くの取り組みについてまとめています。細かい取り組みについては実績ページを見るのがわかりやすいでしょう。本節では、これまでの活動を全体的に振り返ることで、どういう流れでエンジニアリングや研究開発を行ってきたかについて、その背景や取り組みを紹介します。

わたしは、大学生の頃にネットワーク・セキュリティの研究をしていました。その頃はパケットを解析しながら、パケットのヘッダ情報から特徴量を抽出して時系列解析を行い、異常な状態を検知するという研究でした。
そこから、自身の研究が本当に役に立つものなのか疑問に感じたため、修士課程には行かずに、クラウド・ホスティング企業に就職しました。就職の際にも、ある程度現場の技術を学んだ後には、数年後には改めて研究するために大学に戻ろうという気持ちがありました。

企業でのエンジニアリングは非常に楽しく、チーム一丸となって課題を解決したり、新しいプロダクトを開発したり、時には大きな障害が起きたときにも、みんなで協力しながら対応していくことにやりがいを感じていました。できればこのままずっと働いていたいと思うようになっていました。

そんな中、ずっと研究者になりたいと宣言していたのもあって、改めて自分がエンジニアリングを行いながら、企業、ひいては、業界においてエンジニアリングの現状の課題、将来的に必要される技術について、自分が研究開発することによってその領域にもっと貢献したいという思いが溢れてきました。

そして、当時勤めていた会社を退職し、博士課程に入学しました。その頃の気持ちを自分のブログエントリにまとめており、非常に多くの方から励ましの言葉を頂いたのを覚えています。また、新卒や学生に向けたこれまでの発表の中で、自己紹介としての取り組みを時系列でまとめた「まつもとりースタイル」というスライドも公開しておりますので、是非これからの進路やキャリアに悩んでいる方はご覧いただけると幸いです。

■博士課程での専門領域

博士課程では、現場での長期に渡る課題を解決するための技術を研究開発し、その貢献を論文というある種のフレームワークに従って言語化することによって、自分たちがやってきたエンジニアリングの価値とその新しさや有効性を整理することが、学術においても価値があると示す活動になっていきました。

最終的には、ジャーナル論文4本を「Webサーバの高集積マルチテナントアーキテクチャに関する研究」として博士論文にまとめ、博士の学位を取得しました。その頃の話をブログにもまとめていますので、是非ご覧ください。

最終的に、わたしの研究開発領域はインターネットサービスの基盤技術領域となりました。主に、OS・ミドルウェア・システム・アーキテクチャやそれらに付随するシステムプログラミングを得意としており、その中で運用技術やリソース管理、セキュリティ、パフォーマンス、分散処理など、互いにトレードオフになる要素を意識しながら、目的にあった最適な落とし所を見つける研究開発をしています。これらの背景から、本連載「大規模クラウド・Webホスティングサービスから学ぶ実践的なLinuxのセキュリティと仮想化技術」を執筆するに至りました。

プロトタイプ実装だけでなく、実際に研究した技術をプロダクトなどの実践領域で活用できるように、エンジニアが使いやすい実装を心がけています。わたしが開発したOSSで沢山使って頂いている代表作品としては、nginxの動作をRubyで拡張できるngx_mrubyが挙げられます。



Linux Capabilityやcgroupなど、今ではコンテナを構成する要素技術を活用して、クラウド・Webホスティングのようなマルチテナント環境において、各種Webサーバプロセスがエンドユーザの開発したアプリケーションに基づいて動作する中で、Webサーバプロセスがマルチテナント環境であっても相互に影響与えないように権限分離ができるmod_process_securityや、リソース管理ができるmod_mruby+mruby-cgroupmod_vhost_maxclientsなどのソフトウェアを研究開発してきました。


ソフトウェアの開発だけでなく、概念やモデルの整理なども積極的に行ってきました。コンテナを活用したシステム・アーキテクチャの研究開発において、コンテナは昨今、当たり前に認識され、プロダクト開発に活用されていますが、そもそもコンテナを活用したシステムはどういう役割の抽象レイヤーに分けることができるか等を検討したり、その上で、レイヤー単位で研究開発を行うことによって、各抽象レイヤーに新しい技術を入れ替えることができるようにするなど、様々な調査と整理を行ってきました。

例えば、2017年には、以下のようにコンテナ時代のWebサービス基盤モデルを整理しました。この基盤モデルにおけるストラテジー層において、FastContainerという概念を提唱し、その実装やプロダクトへの活用にも取り組んできました。



さらに、2019年には、以下のように上記の基盤モデルのコンテナランタイムのレイヤーを更に深堀りして、コンテナランタイムの領域にもモデル化が存在することや、そのモデル化の各種レイヤーの役割やレイヤー単位でどのような実装を検討するべきかを言語化していきました。



以下のモデルも、コンテナを活用したシステムのレイヤーモデルにおいて、レイヤーごとにどういうモデルがあるかを整理しています。



また、以下のように、コンテナ周辺の基本レイヤーの各モデルに該当する実装はなにか、についてもまとめました。


2022年になって、わたしの研究をありがたいことに参照していただきながら、改めて「CloudNativeな時代に求められるWebサービス基盤モデルの再考」というタイトルで @nwiizo さんがモデル整理をしてくれており、大変素晴らしい内容になっています。
このように次に取り組む方に参照していただいて、そこに更に体系化された知見を重ねていけるように、エンジニアとの連携を強く意識した研究を行っています。

実績ページにもあるように、エンジニアとして取り組んできた開発を、論文というフレームワークを介して研究に昇華してきました。論文のフレームワークを活用したり、アカデミアでの活動をしながら、エンジニアとしての取り組みを言語化して議論していくことによって、改めて開発した技術の有効性や課題、独創性などが見えてきます。その都度、課題に対応しながらさらに実装としても論文としても改善していくことで、継続的に研究開発をすすめることができました。それらの取り組みによって、わたしが執筆した多くの論文の実装が、様々な企業のプロダクトやソフトウェア上で動作しています。そのような経験を元に理論と実践の両輪から、前述した6項目を本連載で解説していきます。

■まとめ

本連載の第二回は、今後の連載で取り上げる内容と筆者の自己紹介がてら研究開発の取り組み概要についてご説明しました。
今後連載で取り上げる内容は以下の通りです。

  • 1.Webサーバのセキュリティと運用技術の背景
  • 2.WebサーバとWebホスティングシステムの基礎知識
  • 3.セキュリティとリソース分離
  • 4.セキュリティと性能
  • 5.セキュリティと運用技術
  • 6.大規模WebサーバのTLS証明書管理


連載を通じてLinuxの要素技術やセキュリティを学ぶとともに、ご不明な点があればお気軽にTwitterの @matsumotory にご連絡頂いて、関連する技術や知見の意見交換ができれば幸いです。

次回は、いよいよクラウド・Webホスティングに関する技術の背景や、関連するセキュリティや運用技術について紹介していければと思います。
ぜひ、このエントリで興味を持っていただいた方は、次回以降も御覧いただけると幸いです。


■Security LAB情報提供ホワイトペーパー第1弾

「システムのフェーズ別リスク項目と効果的な対策案」
以下のURLから無償でダウンロードしていただけます。
URL:https://balconia.co.jp/service/securitylab/download/

■Security LABに関するお問い合わせ
Security LAB問い合わせメールアドレス:securitylab@balconia.co.jp

ABOUT ME
まつもとりー
Security LAB 技術顧問。京都大学博士(情報学)、さくらインターネット研究所上級研究員、情報処理学会各種委員、ITRC各種委員、松本亮介事務所所長、その他複数社の技術顧問。2018年11月より現職のさくらインターネット研究所で上級研究員を務める。第9回日本OSS奨励賞や2014年度情報処理学会山下記念研究賞など、その他受賞多数。2016年に情報処理学会IPSJ-ONEにおいて時流に乗る日本の若手トップ研究者19名に選出される。