Fedora Core 5でのSELinuxの機能や使い方を,これまでSELinuxを使ったことがない人に向けて分かりやすく解説する。今回からいよいよリファレンス・ポリシーを解説する。まずは概要と作成法を一通り説明する。

 今回はこれまでにもたびたび登場した「リファレンス・ポリシー」について解説する。

 リファレンス・ポリシー(通称refpolicy)は,米Tresys社を中心に開発されているポリシー・ファイルの書式であり*1,Fedora Core 5で正式採用された。具体的には,Fedora Core 5のポリシーのソース・ファイル*2に使われている。ソース・ファイルを直接扱うためだけではなく,新しいドメインを作成したいときなどにも,リファレンス・ポリシーの知識は不可欠である。そこで今回と次回に分けて,リファレンス・ポリシーを詳しく説明する。

リファレンス・ポリシー登場の背景

 先に述べたようにリファレンス・ポリシーは,Fedora Core 5のSELinuxから採用された比較的新しいものである。従来から設定に使われていた「マクロ」を改善したものだ。そこで,最初に従来のマクロを説明する。

 SELinuxが有効になったシステムを動作させるためには,実に数万から数十万行もの設定が必要である。これを一行ずつ設定していくのは困難だ。この負担を軽減するために使われるのがマクロである。マクロを一口でいうと,「複数行の設定をまとめて行うための書式」となる。従来SELinuxの設定は,このマクロを使って書かれていた。

マクロの仕組みと問題点

 マクロの仕組みを図1に沿って見ていこう。(1)r_dir_file(foo_t, bar_t)は,foo_tドメインがbar_tタイプのファイルやディレクトリを読み込めるように設定している。r_dir_fileというマクロを使った設定であり,実際にはこの一行で複数の設定が行われる。(2)マクロはm4コマンドによって処理される。m4コマンドは,マクロ定義ファイル(後述)のルールに従い,文字列を置換する。(3)マクロ定義ファイルには,「r_dir_fileという文字列の置換ルール」が記述されている。この場合は,r_dir_fileが図中の下線部のような文字列に置換される。下線中の「$1」はfoo_tに置換され,「$2」は「bar_t」に置換される。(4)その結果,r_dir_file(foo_t, bar_t)は,(4)のような2つのallow設定に置換される。これが実際に反映される設定である。

図1●マクロの仕組み
図1●マクロの仕組み
[画像のクリックで拡大表示]

 マクロ定義ファイルに新たなマクロ定義を追加すれば,自分専用のマクロを作成できる。柔軟に設定できる半面,マクロの個数が無秩序に増える危険性もある。例えば,Fedora Core 5より前のSELinuxのポリシー・ファイルは,さまざまな個人や団体が別々に開発したマクロを寄せ集めたものだった。さまざまな開発者によるマクロが無秩序に増え続けた結果,ポリシー・ファイルを開発するときにはマクロの内容を理解する必要があるにもかかわらず,実際には理解不可能になっていた。

 さらに,Fedora Core 5では,ポリシー・モジュールなどの新機能が導入され,従来使われているマクロの機能では不十分になってきた。