TRUSTED PROCEDUREとドメイン遷移

SE-PostgreSQL向けのセキュリティポリシーを修正。

問題があったのは、TRUSTED PROCEDUREと呼んでいるドメイン遷移を引き起こすプロシジャ呼び出し。今までは range_transition を使って sepgsql_trusted_proc_t を呼び出した時には SystemHigh-SystemLow に遷移させていたが、process:{transition}権限をちゃんと評価すると、通常この遷移は認められない。
(※MCSではinit_tなどの例外を除き、権限を放棄する方向にしか遷移できない。)

つまり、ドメイン遷移でMCS/MLS的な権限昇格を起こすというのが、スタンダードなSELinuxの考え方とマッチしていなかったというわけだ。

で、これの解決策として、テーブル・カラム・タプルには一律に sepgsql_table_t と付けていた物を、sepgsql_table_tとsepgsql_secret_table_tと2種類に増やした。(デフォルトはsepgsql_table_t)
一般ユーザとしてDBにアクセスした場合、sepgsql_secret_table_tには触れないが、sepgsql_trusted_proc_tが付与されたプロシジャ呼び出しを経由することによってのみ参照することができるようになる。

ポリシーのSourceRPMはselinux-policy-2.4.6-23.sepgsql.src.rpmに置いておきました。まだ開発中で未実装の機能も盛り沢山ですが、試してみたい方はどうぞ。

※ TRUSTED PROCEDUREに関しては11/27の記事を参照