PGACE -その2-

SELinux以外のセキュアOSサポートを入れるためのフレームワークPGACEを作って、その上にSE-PostgreSQLを乗っけるという作業をしている。
正直なところ、機能面で何かが変わるというワケではなく、単に Trusted Solaris のお兄ちゃん達を味方に引き込むための作業なので、生産性は、あまりない。
アイデアは単純で、今まで sepgsqlXXXX(); なんてフックを呼び出していた箇所を、pgaceXXXX(); に置換する。
これらの関数は security/pgace.h で以下のように定義されていて、--enable-selinuxでコンフィグした時には security/sepgsql.h がインクルードされるのと等価である。

#ifdef HAVE_SELINUX
#include "security/sepgsql.h"
#elifdef HAVE_TSOLARIS
#include "security/tsolaris.h"
#else
static inline void pgaceInitialize(void) {
/* do nothing */
}
:
#endif

これらの機能が有効化されない場合は、PGACEは単なるスタブとなる。

フックの他にもう一つ、PGACEが提供するのはタプルとセキュリティ属性(文字列表現)を関連付ける機能。これはSELinuxだろうがTrusted Solarisだろうが共通ということで、全てのPGACEゲストが利用できるようにした。

    • disable-selinuxの時にちゃんと動くよう、もう少しデバッグをしなくちゃならんが、基本的にはこれでOKのはず。

それと、PostgreSQLサーバがクラッシュした時にWALから復旧した内容にセキュリティ属性が抜けている?ような現象を見つけた。要確認TODO