日本発世界へ
TOMOYO Linux カーネルマージまでの道のり
「カーネル開発は誰がやっているのか、どうすればいいのかまったく分からない状況から始まった」――日本発のLinux向けセキュリティ強化拡張、TOMOYO LinuxがLinuxカーネルのメインラインにマージされたが、当初はまったくの手探りから始まったという。その経緯を聞いた。(編集部) |
高橋 睦美
@IT編集部
2009/6/16
日本で産まれたあるプロジェクトの成果が、Linuxカーネル本体に統合された。Linuxのセキュリティを強化する「TOMOYO Linux」が、2009年6月10日にLinuxカーネル 2.6.30(Change Log)に入り、メインライン(=Linuxカーネルの標準ソースコード)化したのだ。
ただ、ここに至るまでにはさまざまな紆余曲折があった。TOMOYO Linux開発陣とカーネル開発者コミュニティとのやり取りは、ほぼ手探り状態だったという。同プロジェクトを進めてきた原田季栄氏(NTTデータ)と半田哲夫氏(NTTデータ先端技術)、武田健太郎氏(NTTデータ)に、その道のりを聞いた。
関連記事: | |
2つの日本発プロジェクトがマージ、Linuxカーネル2.6.30(@ITNews) | |
日本のセキュアOSを支える5つのプロジェクト(@IT Security&Trust) |
そもそもTOMOYO Linuxとは何か
そもそもTOMOYO Linuxとはいかなるものなのか。「たまに勘違いする人がいるのですが、TOMOYO Linuxはディストリビューションではありません。Linuxのセキュリティを強化するための拡張の一種です」(原田氏)
Linuxも含めた汎用的なOSでは、root権限さえ持っていれば、たとえアクセス制御を設定していてもそれを無視してあらゆるファイルにアクセスし、上書きや削除といった操作を行えてしまう。また、プロセスが乗っ取られてしまうと、システム全体に大きな被害が及ぶ可能性がある。
TOMOYO Linuxプロジェクトの原田季栄氏(NTTデータ) |
これに対し、たとえroot権限を持っていたとしてもアクセスに制限を加える「強制アクセス制御(MAC:Mandatory Access Control)」と呼ばれる機構を備えることで、セキュリティを強化する仕組みが登場してきた。いわゆる「セキュアOS」だ。セキュアOSはまた、ユーザーやプロセスに対しすべての特権を一度に与えるのではなく、必要な特権を少しずつ与える「最小特権」という仕組みも備えている。
TOMOYO Linuxは、そうしたセキュアOSの機能をLinuxに実装するための拡張の1つだ。より正確には、Linuxに強制アクセス制御機構を実装するための拡張であり、2003年より開発が開始され、2005年11月にはGPLライセンスの下、オープンソースとして公開されている。
強制アクセス制御の方式は大きく、ラベルを定義、付与してコントロールを行う「ラベル派」と、ファイル名を使ってより簡単にアクセス制御を行えるようにした「パス名派」に分けることができる。この2つの違いは、過去の関連記事で「セキュリティ至上派」と「カジュアル派」とも表現している。
関連記事: | |
セキュアOSの思想 第3回 セキュアOS論争から見える「カジュアル」なセキュアOS(@IT Security&Trust) |
SELinuxに代表されるラベル派は、ラベルを付与し、それに基づく制御を採用することでセキュリティを厳密に保証しているが、それは同時に、ラベルの定義や維持の手間を増やし、ユーザーの使い勝手を損なうことになっていた。これに対しパス名派では、より柔軟な運用が可能だ。ただ、セキュリティを数学的に証明し、保証することは困難になる。この両派にはそれぞれメリット、デメリットがあり、一概にどちらが優れているということはいえない。
TOMOYO Linuxはパス名派に属しており、Linuxの管理者ならば誰でも使いこなせることを目指して開発された。必要な機能を操作することにより、それに対応する設定ファイル(ポリシー)を生成する自動学習機能を備えていることが特徴で、短時間で自分のシステム用のポリシーを生成できる。また、設定ファイルの内容やエラーメッセージも、人間が見て分かりやすい形式としている。
メインライン化を目指した理由
このTOMOYO LinuxがLinuxメインラインへの統合を目指した理由の1つは、コミュニティからの「外圧」だ。
原田氏らはTOMOYO Linuxをオープンソースとして公開した後、家電や携帯電話などの組み込み向けLinuxをテーマとしたカンファレンス「CE Linux Forum Japan Technical Jamboree12」(2006年12月)やYLUGの「カーネル読書会」(2007年2月)でその概要を紹介した。その場で、「メインライン化に挑戦すべきだ」という強力な勧めを受けたという。
これを機にTOMOYO Linuxはメインライン化を目指すことになり、Linux Security Module(LSM)対応版のパッチ作成やLKML(Linux Kernel Mailing List)への投稿準備を開始した。同時に、国内外のさまざまな機会をとらえては講演・紹介する日々が始まった。
メインライン入りを果たしたいまになって振り返ってみると、メインライン化に挑戦していなければ、TOMOYO Linuxというプロジェクトの将来はなかったといえるという。
「標準カーネルに入っていないもの、いわゆる『野良拡張』では、利用者が少なく、信用していいのか分からない。ビジネス的な視点からは、それを使って商売をしようとか、それを組み込もうということは思わない」(原田氏)。
メインラインに入っていなければ、LinuxがバージョンアップするたびにTOMOYO Linuxを追随させていく必要がある。カーネル開発者コミュニティからの理解を得られない状態のままだと、追随が不可能になる修正が突然行われてしまう危険性がある。
また、TOMOYO Linuxプロジェクトではプログラム(パッチ)本体の修正だけでなく、RedHat、Ubuntu、Debianなど主要なディストリビューション用パッケージも提供しているため、その負荷という問題もあった。
「そこまでやっても使ってくれるのは、セキュリティに興味があって技術力のある層に限られる。ビジネス層には相手にしてもらえなかった」(原田氏)。
そのように考えていくと「カーネルの拡張を行う場合、メインラインに入らないものはいつか自然に消滅する。実はメインラインに入る以外に出口がないということに、あとになってから気が付いた」(原田氏)。
メインラインに加えられることにより、カーネルに関する何らかの修正が入る際にも、「TOMOYOとしては問題ないか?」と意見を聞いてもらえるし、自明な変更はほかの開発者が行ってくれることもある。「メインライン化されたことにより、今後は、プロジェクト以外の開発者による機能の追加も期待している」(原田氏)。
マージまでの道のり
しかし原田氏と半田氏にはLinuxカーネルの開発経験がまったくなかった。そのため、TOMOYO Linuxのメインライン化を目指すことになったのはいいけれど、Linuxカーネル自体がどうやって作られているかもよく知らなかったという。
開発を中心となって進めた半田哲夫氏(NTTデータ先端技術) |
「メインライン化のために具体的に何をするかというと、パッチを作って、メーリングリストに投稿して承認してもらい、メンテナから推薦してもらう。ただそれだけなのですが、承認をもらうのがすごく難しいわけです」(原田氏)。
重要なのは、いかに「空気を読む」かだという。「LKMLを読まずに、いきなりパッチを作って投げても、まず無理でしょう」と原田氏は振り返る。LKMLには1日に何百通ものメールが投稿されている。そんな中にいきなりパッチを投げても、見落とされる確率が高い。議論の対象となる前に、まず「読んでもらう」ことが必要だ。
武田氏も「一般論だけれど、作る前にLKMLにデビューしておかなきゃいけないと思いました。作り込んでからデビューしても遅かった」と述べた。TOMOYO Linuxのアイデアの段階からLKMLやコミュニティにデビューしておいた方が、後々ラクだったろうなと振り返る。「作り込んでから出しても、大きすぎてまずレビューできないんですね。小さい本当にコアな機能だけにして出せばよかった」(同氏)。
パッチそのもの以外に、そのパッチに対する「熱意」がどのくらいあるのかをじっと見られていたように感じたという。
「メインライン化については、確かにパッチが判断の基準に違いありませんが、それがすべてとは思えません。実際、パッチのレビューについても、必ずしもすべてのコードが詳細に吟味されるわけではないのです。では何が重要かというと、情熱や熱意といった目に見えないものが『試されている』と感じた」(原田氏)。
マージに至る道のりの中で何がつらかったかというと、「入る保証がない、入る見込みがないけれど、ずっと挑戦し続けること」だったという。投稿回数を含め、「こうすれば採用される」という保証は一切ない。SELinux陣営からの反論などもあり、何回投稿してもはじかれてばかり、という時期もあった。それにめげず、挑戦し続けた開発陣の姿勢も、LKMLの参加者に見られていたのではないかという。
「何度も提案を重ねて分かったことは。カーネルの考え方やコメントに従えないものは採用されないということです」(原田氏)。
「カーネルに入れるのだから、その流儀に従うのは当たり前といえば当たり前ですが、実際にはそこが難しい。自分が作り込んで、いいと思っているものを変えるのには、書いた人じゃないとわからないつらさ、抵抗があるんじゃないでしょうか」(武田氏)。
1/2 |
|
||||
|
Linux Square全記事インデックス |
Linux Squareフォーラム 仮想化技術関連記事 |
連載:実践! Xenで実現するサーバ統合 有力な仮想化技術として注目を集めるようになった「Xen」。このXenを活用してサーバ統合を実践していく手順を具体的に紹介します |
|
特集:サーバの仮想化技術とビジネス展開の可能性 jailからUML/VMwareまで 1台のマシンで複数のサーバを動かす「仮想化技術」。VMwareやUMLの登場により、WebサイトだけでなくOS自体を仮想化できるようになった |
|
特集:仮想化技術のアプローチと実装 VMwareから要注目技術Xenまで 1台のサーバで複数の仮想マシンを実行する仮想化技術は、空間コストを引き下げる可能性を持つ。最新の仮想化技術を概観してみよう |
|
特集:仮想OS「User Mode Linux」活用法 技術解説からカーネルカスタマイズまで Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
特集:仮想化技術の大本命「Xen」を使ってみよう インストール & Debian環境構築編 高いパフォーマンスで本命の1つとなった仮想マシンモニタ「Xen」。日本語による情報が少ないXenを、実際に動かしてみよう |
|
特集:仮想化技術の大本命「Xen」を使ってみよう Xen対応カスタムカーネル構築編 Xen環境およびその上で動作する仮想マシン用カーネルを自分で構築しよう。これにより、自由にカスタマイズしたカーネルを利用できる |
|
特集:IPv6、UML、セキュリティ機能の統合 全貌を現したLinuxカーネル2.6[第4章] 今回は、これまでに紹介し切れなかった機能を一気に紹介する。これを読めば、カーネル2.6の正式リリースが楽しみになるだろう |
|
Linux Squareプロダクトレビュー VMware Workstation 4 PC/AT互換機エミュレータとして不動の地位を築いたVMware。その新バージョンがリリースされた。新機能を早速試してみよう |
|
古くて新しい「サーバ仮想化技術」の行方 サーバ仮想化を実現するための技術がソフトウェア、ハードウェアの両面で出そろってきた。ハイパーバイザーのさらなる高速化に向けた動きを紹介する |
|
Linux Squareフォーラム全記事インデックス |
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|