mcpField
S
sandbox-guard

sandbox-guard

github.com/useai-proセキュリティ73482 回インストール33 週間前に更新
リポジトリ

sandbox-guard について

sandbox-guard は、信頼できないスキルを実行するための Docker サンドボックス設定を生成する OpenClaw スキルです。読み取り専用、読み書き、ネットワーク利用の各権限に応じて設定し、権限とリソースを制限します。

主な機能

  1. 01権限別の3種類のサンドボックス設定
  2. 02Dockerfile と実行コマンドの生成
  3. 03docker-compose.yml の生成
  4. 04権限昇格とリソース使用の制限
  5. 05ファイル書き込み前の確認要求

活用シーン

  1. 01信頼できない読み取り専用スキルの隔離
  2. 02プロジェクトファイルを書き込むスキルの制限
  3. 03サンドボックス内での API アクセス許可

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/useai-pro/openclaw-skills-security --skill sandbox-guard

インストール後、Claude Code で/sandbox-guardを入力して読み込まれたか確認します。

詳細

サンドボックスガード

OpenClaw 用のサンドボックス設定ジェネレーターです。ユーザーが信頼できないスキルを実行しようとした場合、ホストシステムからスキルを隔離する、安全な Docker ベースのサンドボックスを生成します。

サンドボックスを使う理由

OpenClaw のスキルは、要求した権限で実行されます。shell アクセス権を持つ悪意のあるスキルは、システム全体を侵害する可能性があります。サンドボックス化により、被害の範囲を制限できます。

サンドボックスプロファイル

プロファイル:最小(読み取り専用スキル向け)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw

# No network, no elevated privileges
# Mount project as read-only
docker run --rm \
  --network none \
  --read-only \
  --tmpfs /tmp:size=64m \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  -v "$(pwd):/workspace:ro" \
  openclaw-sandbox
プロファイル:標準(読み取り/書き込みスキル向け)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw
docker run --rm \
  --network none \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  --memory 512m \
  --cpus 1 \
  --pids-limit 100 \
  -v "$(pwd):/workspace" \
  openclaw-sandbox
プロファイル:ネットワーク(API アクセスが必要なスキル向け)
FROM node:20-alpine
RUN adduser -D -h /workspace openclaw
WORKDIR /workspace
USER openclaw
docker run --rm \
  --cap-drop ALL \
  --security-opt no-new-privileges \
  --memory 512m \
  --cpus 1 \
  --pids-limit 100 \
  --dns 1.1.1.1 \
  -v "$(pwd):/workspace" \
  openclaw-sandbox

**注:**ネットワークを有効にしたサンドボックスでも、権限昇格を防ぎ、リソースを制限します。セキュリティをさらに強化するには、--network と、送信トラフィックを特定のドメインに制限するカスタム Docker ネットワークを併用してください。

設定ジェネレーター

ユーザーからスキルの権限が提示されたら、適切なサンドボックスを生成します。

入力
Skill: <name>
Permissions: fileRead, fileWrite, network, shell
出力
  1. Dockerfile — 最小限のベースイメージ、非 root ユーザー
  2. docker run コマンド — すべてのセキュリティフラグを指定
  3. docker-compose.yml — 繰り返し使用する場合
セキュリティフラグ(必ず含める)
フラグ目的
--cap-drop ALLすべての Linux ケイパビリティを削除
--security-opt no-new-privileges権限昇格を防止
--read-onlyファイルシステムを読み取り専用にする(fileWrite がない場合)
--network noneネットワークを無効にする(ネットワーク権限がない場合)
--memory 512mメモリ使用量を制限
--cpus 1CPU 使用量を制限
--pids-limit 100プロセス数を制限
--tmpfs /tmp:size=64m一時的な書き込み領域
USER openclaw非 root ユーザーとして実行

ルール

  1. 常に最も制限の厳しいプロファイルをデフォルトにします
  2. --privileged フラグを指定したサンドボックスは決して生成しません
  3. Docker ソケット(/var/run/docker.sock)は決してマウントしません
  4. 機密性の高いホストディレクトリ(~/.ssh、~/.aws、/etc)は決してマウントしません
  5. 常に --cap-drop ALL を使用します。個別のケイパビリティは、明確な理由がない限り付与しません
  6. DoS を防ぐため、リソース制限(メモリ、CPU、pids)を含めます
  7. スキルに shell が必要な場合は、ユーザーに警告し、サンドボックスの出力を監視するよう提案します
  8. 生成したファイルは専用の出力フォルダー(例:.openclaw/sandbox/)にのみ書き込みます。既存のプロジェクトファイルは決して上書きしません
  9. ディスクにファイルを書き込む前に、必ずユーザーの確認を求めます。まず生成した内容を提示して確認してもらいます

コメント