テック技報最新号へ →
インフラ

nono: Seatbelt / Landlock でコマンドを OS サンドボックス実行する

nono run -- <command> で、macOS は Seatbelt、Linux は Landlock によるカーネル強制の capability 制限をかけてコマンドを実行する。ユーザー空間だけのラッパより逃げにくい。

@zaru · 2026-10-10
#infra#sandbox#security#landlock#seatbelt#agents

どんなときに使う?

  • エージェントや不審なスクリプトに、特定パス以外を触らせたくない
  • Docker / microVM までは重いが、プロセス単位の隔離は欲しい
  • 「一度かけたら広げられない」サンドボックスが欲しい(escape hatch なし)

やり方

bash
nono run -- <command>

ポリシー(読めるパス、ネットワーク可否など)は CLI のフラグ / プロファイルで指定する(詳細は公式 docs)。

仕組みの要点

  • macOS: Seatbelt プロファイルを生成し sandbox_init()。制限は永続で子プロセスにも継承
  • Linux: Landlock ruleset を作り restrict_self()。ABI によってネットワーク制御の可否が変わる(TCP フィルタは比較的新しいカーネル)

注意点

  • Landlock が無効なカーネルでは動かない / 部分適用になる。CONFIG_SECURITY_LANDLOCK や boot の lsm= を確認
  • macOS で Terminal に Full Disk Access が無いと、TCC と合わせて意図より狭くなることがある
  • Docker Sandboxes(sbx)のようなフル VM 隔離とは層が違う。必要なら併用や使い分け

出典

X の元の投稿を開く