9月末または10月のリリースが予定されているFreeBSD 9.
保護ドメインやアクセス制御リストなどの保護機構に慣れていると、
- Capsicum is DAC and MAC Hybrid model
FreeBSDのデフォルトのセキュリティポリシーは任意アクセス制御
(DAC - Discretionary Access Control) です。FreeBSDに限らず、 ほとんどのOSは任意アクセス制御をデフォルトに採用しています。これはユーザ自身が保護機構におけるアクセス設定を変更できる、 というものです。chmod(1)やsetfacl(1)でパーミッションやアクセス制御リストを設定できるというのは、 このDACに該当します。 一方、
FreeBSDはDACとは反対のポリシーとなる強制アクセス制御 (MAC - Mandatory Access Control) にも対応しています。強制アクセス制御においては、 ユーザが保護に関する設定を変更することができなくなります。より高いセキュリティが求められる場合に活用される機能です。PCで作業したりサーバを運用する場合、 MACは規制がきつすぎてあまり扱いやすいセキュリティポリシーとはいえないところがあります。高い機密が求められる場合などに使われる機能です。 「Capsicum」 はDACとMACの双方の特徴を備えている、 という面で興味深いところがあります。敢えて言ってしまうと、 DACに相当するのがcap_ new()、 MACに相当するのがcap_ enter()実行後、 ということになります。 「Capsicum」 ではcap_ new()を使ってディスクリプタに対して操作の許可を設定することができます(注意: 設定するのではなく、 実際にはその許可を持った新しい特別なファイルディスクリプタ(ケーパビリティ)を生成しているので、 DACと考えるのは若干違うといえば、 違うともいえます)。自由に設定できることからDACに近いポリシーにあるといえます。一方、 cap_ enter()を実行したあとには、 さまざまなリソースへのアクセスは制限されます。MACのようにかなり厳しい状況になるというわけです。起動時はDACな状況にあるものの、 必要なディスクリプタを取得し設定をしたあとは、 cap_ enter()を実行してMACのように変更がほとんど許可されない状況に入る。DACの扱いやすさとMACのセキュリティの高さの双方を兼ね備えたような動きをするわけです。