Inherited Type Definition

非常に懐かしいネタだが、Karl MacMillan がこのアイデアを再び墓場から掘り出そうとしている。

http://marc.info/?l=selinux&m=118961442411429&w=2

2年半ほど前にこのアイデアについて議論したとき、彼の主張は、同様の事は Reference Policy の interface / template を用いて実現可能であるというものだった。結局、このアイデアは陽の目を見ることなく葬られたわけだが。

だが、今回のスレッドでの Karl の主張によると、やはりタイプの継承というアイデアを用いたほうが洗練された書き方ができる場合があると言っている。
例えば、以下のようなラベル付けがある時

/var/log/messages -> var_log_t
/var/log/secure -> var_log_t
/var/log/spooler -> var_log_t
/var/log/maillog -> var_log_t
他の全てのドメインがこれらのログファイルにアクセス可能である状態を保ちつつ、/var/log/messageのみにアクセスするドメインを新たに定義する場合。
var_log_message_tがvar_log_tを継承し、さらに新しいドメインはvar_log_message_tのみに対してアクセス可能であれば良い。継承が無い場合、それまでvar_log_tにアクセスしていたドメインを全て列挙可能でなければポリシーを記述することはできない。
彼はこれをタイプのsplittingと呼んでいる。

もう一つ、"似た"ドメインを作成するための機能。
guest_tドメインとxguest_tドメインの関係に言及しているが、現状では、数多くのテンプレートを駆使することで一般ユーザ向けのドメインを定義しており、これは問題だと言う。
但し、"似た"ドメインと言う時に、『ちょっとだけ権限の強い』場合なら特に問題はない。派生タイプに権限を追加すれば良いからだ。一方、deny構文を持たないSELinuxにとっては、継承タイプを用いても『ちょっとだけ権限の弱い』場合を記述することは困難となる。Karl はこれに対して何か良いアイデアがないか、意見を求めている。

また、私は特に問題とは考えていないが、既存タイプの継承が即ち、派生元のドメイン/タイプに対する十分な理解を要求しており、本来の"継承"の概念とは異なってしまっているとのこと。

今更ながら、面白い問題提起だけに私もちと考え中。
ちなみに、モジュール化ポリシーが入ったことで、タイプ継承の実装は格段に難しくなった(汗