KaiGai Kohei
kaiga****@kaiga*****
2008年 10月 25日 (土) 00:18:05 JST
海外です。 > SELinuxのアクセス制御をアプリケーションに適用する場合の > 何か良い資料って無いものでしょうか? > もしあったらお教えください。 そういった資料は見た事がないです。ただ、そんなに難しい話ではないのです。 SELinuxのアクセス制御というのは、最終的には、セキュリティポリシーが 『誰が(Subject)、何に(Object)、何をできる(Action)』の組み合わせを、 許可しているか否かという点に落ち着きます。 従って、SELinuxのアクセス制御をアプリに適用する場合には、アプリ側から カーネルに『"○○が□□に△△したい"と言ってるんだがどうよ?』的な 問い合わせを行い、その返事に基づいて、プログラムの実行を制御してやれば 良いわけです。 そのための API が libselinux に定義されていまして、 int security_compute_av(security_context_t scon, <- 誰が(Subject) security_context_t tcon, <- 何に(Object) security_class_t tclass, <- 何をする(Action) access_vector_t requested, struct av_decision *avd); <- カーネルからの回答 これを使って、カーネル側に問い合わせを行います。 で、返り値の avd->allowed に目的のパーミッションのビットが立っているか 否かを検査します。 SE-PostgreSQLなんかは、この仕組みのお化けみたいなもんですね。 > 付記:libvirt-MLでJames Morrisが > "thread/child-domain assignmentも対応しないと" > と言っていたわりには、今回のパッチには入っていないし こちらは、アプリ側から使う API は変更なしなので、どちらかというと、 カーネル (v2.6.28待ち) と、セキュリティポリシーの対応待ちといった 具合ではないでしょうか。 この辺は、来週のセキュアOS塾でもお話しする予定です。お楽しみに。 では -- KaiGai Kohei <kaiga****@kaiga*****>