第3回 セキュアOS論争から見える「カジュアル」なセキュアOS


中村 雄一
日本SELinuxユーザ会

2007/8/8

 「カジュアル派」の妥協点

 カジュアル派のセキュアOSは、基本的に自由な発想で作られているのですが、共通して見られる特徴が2つあります。1つ目は、「パス名ベースのアクセス制御」、もう1つは「部分的にアクセス制御を適用」という特徴です。

●パス名ベースのアクセス制御

 ラベルには、先ほど説明したような問題点があり、使い勝手に影響を及ぼしていました。これに対し、カジュアル派のセキュアOSでは、パス名ベースのアクセス制御を採用しています。パス名ベースのアクセス制御では、ラベルを使わず、ファイル名を使ってアクセス制御を行います。

/usr/sbin/httpd {
/var/www/html/** r,
}
リスト1 AppArmor(パス名ベースのアクセス制御)のポリシー

・/usr/sbin/httpdに「httpd_t」ラベルを付与
 domain_auto_trans(initrc_t, httpd_exec_t, httpd_t)

・/var/www/htmlに「httpd_contents_t」ラベルを付与
 /var/www/html(/.*)? system_u:object_r:httpd_contents_t

・httpd_tにhttpd_contents_tの読み込み許可
 allow httpd_t httpd_contents_t:file read;
リスト2 SELinux(ラベルベースのアクセス制御)のポリシー

 例を見てみましょう。リスト1は、AppArmorのポリシーの抜粋です。AppArmorは、パス名ベースのアクセス制御を実装しています。Apache Webサーバに対するポリシーを設定しています(AppArmorの用語ではプロファイルと呼びます)。アプリケーションの実行ファイル、そして、アクセスできるファイル/ディレクトリ名を指定しています。見てのとおり、直感的に分かりやすいです。

 一方、ラベルベースのセキュアOSであるSELinuxで同様の設定をしようとするとリスト2のようになります。プロセス、ファイルにラベルを付与し、ラベルを使ってアクセスを許可しています。ラベルを付与する分だけ手間がかかっています。さらに、前ページで説明したように、ラベルの情報が失われることがあるため、 ラベルの点検・維持の手間がかかります。

 パス名ベースでは、ラベルを維持するような手間はかかりません。ファイルが消去・再生成されてもファイル名が同じだからです。

【注】
LIDSでは、設定はパス名で行えますが、内部的にはiノードで管理しているため、ラベルと同様の問題が起こります。

●部分的にアクセス制御を適用

  カジュアル派のもう1つの特徴が、部分的にアクセス制御を適用することです。これがなぜ特徴なのかを見るために、「強制アクセス制御」という用語の解釈について見てみます。

  セキュアOSの基本機能である「強制アクセス制御」という用語は、「rootでも逆らえないアクセス制御」的な意味で使われることが多いです。しかし、SELinuxの主要開発者が、Linuxカーネルメーリングリストに投稿した発言を引用すると、

“Mandatory access control as historically understood has always meant system-wide.”

――強制アクセス制御は、システム全体を制御するものだ、
と歴史的には理解されている。

Linuxカーネルメーリングリストより引用)

とのことです。さらには、システム全体を保護しないAppArmorに対して、

“Then yours isn't mandatory access control.”

――そういう意味では、AppArmorは強制アクセス制御ではない。

Linuxカーネルメーリングリストより引用)

と発言し、軽々しく「強制アクセス制御」という言葉を使うことに苦言を呈しています。

 これから、セキュリティ至上主義の思想では、システム全体を守ることが重要と考えていることがうかがえます。つまり、システムで動作しているすべてのプロセス、リソースにアクセス制御をすることが重要と考えているようです。実際に、SELinuxでは、すべてのプロセス・リソースにラベルを付与し、アクセス制御を適用しています。

 ただし、システム全体を守ることを目指してしまうと、すべてのアプリケーションに対して、それを動作させるポリシー設定を書く必要があります。そのため、設定も膨大になりがちです。

 そこで、カジュアル派では、伝統的な強制アクセス制御にはとらわれず「一部のアプリケーションのみにアクセス制御をかける」「一部のファイルのみにアクセス制御をかける」といったように、部分的にアクセス制御をかける考え方を採用することが多いです。こうしておけば、セキュリティの強度は落ちてしまうものの、必要な設定は少なくてすみます。

 例えばAppArmorでは、設定を用意したアプリケーションだけがAppArmorのアクセス制御を受けるようになります。そのほかのアプリケーションは、AppArmorの制御を受けません。LIDSでは、「/etcは全プロセスからread only」のように、保護したいファイルだけにアクセス制御をかけることができます。

2/3

Index
セキュアOS論争から見える「カジュアル」なセキュアOS
  Page1
セキュリティを数学的に証明できるラベル、実は使いづらい?
もうちょっと手軽にしてもいいんじゃない?
Page2
「カジュアル派」の妥協点
  Page3
「至上主義」と「カジュアル派」は統合できるか?
論争がいい物を育てると信じて
息抜きコラム:第3回「最小特権」


Security&Trust記事一覧


Security&Trust フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Security & Trust 記事ランキング

本日 月間