Mac OS X の Sandbox設計ガイド。
App Sandbox Design Guide: About App Sandbox
Sandbox化のポイント
- Sandbox内のファイルにしかアクセスできない(iOSと同じ)
- 証明書によるコード署名が必要(iOSアプリと同じだが開発でも必要?)
- アクセス可能なリソースを細かく設定できる(例えばファイルはOK、カメラはNG)
- アプリ毎にコンテナと呼ばれるディレクトリが用意される(これもiOSと同じ。ただ構成は異なる)
- Sandboxアプリとユーザ(インターフェイス)の間を取り持つ Powerbox と呼ばれるセキュリティ機構が存在する(APIでは無い)。
- Open and Save パネルの代わりに Powerbox が提供するパネルが表示される。またそのパネルや NSOpenPanel や NSSavePanel をプログラムから操作することはできない。
- Sandboxアプリはファインダからファイルをドラッグ&ドロップで受け取れる。
- XPCを使った権限の分離を推奨。
Sandboxの設定項目(Xcodeのターゲットの Summaryより)
ファイルやネットワーク、ハードウェアアクセス等様々なリソースに対する操作許可を設定することが出来る。デフォルトではすべてのアクセス権限が無い状態。
関連情報
Cocoaの日々: Mac App Store で Sandbox化が必須に
Cocoaの日々: [Mac] Lion から導入された XPC Services
- - - - -
アプリの種類によって Sandbox化にかかるコストは大分変わりそう。Officeのようなドキュメントの作成・閲覧といった利用がアプリ内で閉じているものは対応しやすい。一方、システムリソースや他アプリとの連携を前提としたツール系のアプリはそもそも Sandbox化は不可能か難しいと思われる。