AppArmorからの教訓

AppArmorを見ていると、「単純さ」について考えさせられる。
(AppArmorは、ちょっと単純過ぎるけど)
Simplified Policyは,「Simplified」と言っているけど
本当に単純さを追求しているのだろうか。

AppArmorをみて,Simplified Policyがわかりにくいと感じた点

これをどう解決する?

  • 1) globalドメインの廃止?
  • 2) デフォルトのポリシは、AppArmor並に軽いポリシに変更
  • 3) allow,allowonlyを一つに統一する。
  • 4),5) ネタ無し。。。

globalドメイン再考

simplified policyのglobalドメインはイマイチだと改めて思う。
もう少し考え直そう

  • 問題点は以下か。
    • 強制的に継承される
    • 結果,globalに変更を加えると、全ドメインに修正が必要になることがある。
    • コンパイラのロジックもちょっとだけ複雑になってしまう。
    • allow,deny,allowonlyの優先順位がわかりにくい
      • もともとは、LIDSのreadonlyみたいなのを実装したかったのだけど、

LIDSよりポリシの数が増えがちなので、わかりにくくなってしまった。

  • 代替案

AppArmorで見た「include」でいいのではないか。
継承にしてもいいけど、継承よりはincludeのほうが,
普通の人には,馴染みやすいはず。

deny/allowの意味合いを変える必要もある。
deny -> allowの場合 allowで上書きされる
allow -> denyの場合 denyで上書きされる
allow -> allowの場合 orを取る

include書式の実装

seedit-converterにプリプロセッサを追加。
include filename;
というのを見ると,filename部分が、そのまま挿入される。
とりあえず,ネストはサポートしないincludeを実装した。
includeのパスは「-I」で指定する。

実装手法は,apparmorのparserの(parser_include.c)が参考になりました。
さて、globalの本格的廃止を,実験してみなきゃな。