ケーパビリティベース
ケーパビリティベース(Capability-based)とは、情報セキュリティやコンピュータシステムの設計において、アクセス制御を行うための一つの手法です。 この手法では、ユーザーが利用できる機能やリソースについて、そのユーザーの「能力」に基づいてアクセス権限を設定します。つまり、ユーザーの役割や資格に応じて、アクセス権限を制御することができます。 ケーパビリティベースのアクセス制御は、ユーザーが特定の資格を持っている場合にのみ、リソースにアクセスできるようにするため、安全性が高いとされています。また、この手法は、システム全体を把握してアクセス制御を設定する必要がなく、個々のリソースごとにアクセス権限を設定できるため、柔軟性が高く、セキュリティ管理が容易になります。
ケーパビリティベースのOSフレームワーク
編集ケーパビリティベースのOSフレームワークは、セキュリティやプライバシーなどの要求事項に応えるために設計された、オペレーティングシステム(OS)のフレームワークです。
ケーパビリティベースのOSフレームワークでは、プログラムが必要とする権限を個別に付与することができます。これは、従来のUNIXなどのOSで使われているアクセス制御リスト(ACL)の代わりに、より柔軟性の高いアクセス制御方法を提供します。例えば、特定のファイルに対する読み取り権限だけを与えたり、ネットワークへのアクセス権限を制限することができます。
このフレームワークには、様々なOSがあります。代表的なものに、CapROS、Eros、Coyotosがあります。これらのOSは、セキュリティやプライバシーに特化しており、セキュリティの脆弱性を防ぐための機能が組み込まれています。また、ケーパビリティベースのOSフレームワークは、分散システムにも適しており、複数のマシン間での安全なデータの共有が可能です。
Capsicum
編集Capsicumは、セキュリティに関する機能を提供するためにFreeBSDなどのUNIXとその他のUNIX互換OSに実装されたケーパビリティベースのセキュリティフレームワークです。 Capsicumは、プロセスのシステムコールへのアクセスを制限し、最小限の特権でアプリケーションを実行することができます。 Capsicumを使用することで、システムの安全性が向上し、攻撃者が悪用できる潜在的な脆弱性を減らすことができます。 Capsicumは、プロセスの権限を細かく制御できるため、プログラマーがより安全にアプリケーションを構築できるようになります。 Capsicumは、ファイルシステム、ネットワーク、プロセス、スレッドなど、様々なシステムリソースに適用できます。また、Capsicumは、セキュリティの問題を解決するために他のセキュリティフレームワークと組み合わせて使用することができます。 Capsicumは、Googleが開発したオープンソースのフレームワークであり、現在はFreeBSDとLinuxでサポートされています。
Capsicum for FreeBSD
編集Robert WatsonとJonathan Andersonによって開発されたCapsicumのFreeBSD実装は、FreeBSD 10.0からリリースに含まれるようになりました(FreeBSD 9.0、9.1、および9.2ではオプションでコンパイルされた機能として提供されています)。FreeBSDのCapsicumは、Capsicum APIおよびセマンティクスのリファレンス実装であり、他のプラットフォーム向けのポートのための出発点となるソースコードも提供しています(例えば、Linux向けのCapsicumおよびDragonFlyBSD向けのCapsicum)。
実装状況
編集Capsicum for FreeBSDは、Robert WatsonとJonathan Andersonによって実装されました。Capsicumは、最初にFreeBSD 9.0で実験的な機能として、カーネルからデフォルトでコンパイルされました。FreeBSD 10.0では、Capsicumの能力モード、機能、およびプロセス記述子がデフォルトでカーネルにコンパイルされ、ベースシステムとサードパーティのアプリケーションの両方で使用できるようになりました。
FreeBSD 10.0では、実験的なアプリケーションやFreeBSDベースシステムでCapsicumを展開した数年間の経験に基づいて、重要なKPIおよびAPIの変更が行われました。FreeBSD 10.0では、tcpdump、auditdistd、hastd、dhclient、kdump、rwhod、ctld、iscsid、さらにはuniqなどのベースシステムアプリケーションがリリース配布物の時点でCapsicumを使用しています。