第656回ではChromeベースのEPUBリーダーをsnapパッケージ化してみました。今回はsnapパッケージ作成における最大のハードルと言える
- ※1
- ここの
「完全に理解した」 は, あとで理解していないことに気づくほうの 「完全に理解した」 フェーズです。
snapパッケージにおけるセキュリティモデル
snapパッケージではアプリケーションを
- 古くから存在するディレクトリのパーミッションなどの任意アクセス制御
(DAC:Discretionary Access Controls) - AppArmorを活用した強制アクセス制御
(MAC:Mandatory Access Control) - seccompを利用したシステムコールの利用制限
- cgroupを利用したハードウェアリソースへのアクセス制御
つまりいわゆる
どれくらい隔離するかは,snapcraft.
に記述する
- devmode
-
パッケージの開発時にのみ利用する,
まったく隔離せずアクセスログのみを残すモード - strict
-
システムからは完全に隔離された状態で,
アクセスが必要な場合は個別に許可しなければならないモード - classic
-
従来のdebパッケージのように,
システムへのアクセスを許容するモード
このうちclassicは特殊なモードです。作ろうとしているsnapパッケージが,/media
にマウントされた)
つまりsnapパッケージを作るなら,
strictなパッケージが,
ネットワーク接続したいならnetworkインターフェース,
インターフェースは
- ※2
- snapパッケージ側が,
他のsnapパッケージ向けにSlotを用意するケースも存在します。
言い換えるとsnapシステムに存在しないスロットに対するプラグは作れません。もしスロットが存在しないリソースを使いたいなら,
「strictに対応する」