夏休み終わった!

10日間の夏休みも今日まで。

ヒキコモって作業を進めるとした割には意外と進んでないのだが、今のところ表(Table)・行(Column)に対してセキュリティコンテキストを付与できるところまではできている。
簡単な行マスク機能まで作れればと思ったが、他にも色々やるべき事項があった後回しになっている。

・フックを入れる箇所
PostgreSQLSELinux対応のフックを入れる場合に、どこに入れるべきかを決めるのが難しい。これは技術的に難しいというわけではなく、私のPostgreSQLのハック経験が浅いのが原因なので、もっとソースを読み込めばOK
この辺は、どういった振る舞いをさせるかでも変わってくる。

SELinux用セキュリティポリシの修正
TEの大部分はBinary Policy Moduleとして実装できるが、select, insertなどのpermissionを定義するdatabaseクラスの宣言や、MLS/MCSでのdatabaseクラスの制約の追加はBase Policyで行う必要がある。
なので、これは当然叩き台ができたらコミュニティに投げる必要アリ。

・適切なBehaviorの決定
例えば、列に対するアクセスが拒否された場合に、'permission denied'としてトランザクションをアボートさせるか、0racleのようにNULLで埋めてしまうかは判断が難しい。
前者の場合、行に対するアクセス制御は単に情報がマスクされるだけなので、列に対して'permission denied'でエラーを返すのは統一性に欠ける気がする。
一方、後者は行のアクセス制御と同様に情報のマスクとして考えられるが、仮に非NULL制約のかかった列に対してNULLを返した場合にはアプリ側が発狂する可能性がある。
他にも、create tableやinsert時の初期セキュリティコンテキストをどのように設定するか(多分これはファイルタイプ遷移と同様か)とか。

まぁ、あくせくせずにじっくりと設計について考えられたので善しとしよう。