sandbox-guard について
sandbox-guard は、信頼できないスキルを実行するための Docker サンドボックス設定を生成する OpenClaw スキルです。読み取り専用、読み書き、ネットワーク利用の各権限に応じて設定し、権限とリソースを制限します。
主な機能
- 01権限別の3種類のサンドボックス設定
- 02Dockerfile と実行コマンドの生成
- 03docker-compose.yml の生成
- 04権限昇格とリソース使用の制限
- 05ファイル書き込み前の確認要求
活用シーン
- 01信頼できない読み取り専用スキルの隔離
- 02プロジェクトファイルを書き込むスキルの制限
- 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
出力
- Dockerfile — 最小限のベースイメージ、非 root ユーザー
- docker run コマンド — すべてのセキュリティフラグを指定
- docker-compose.yml — 繰り返し使用する場合
セキュリティフラグ(必ず含める)
| フラグ | 目的 |
|---|---|
--cap-drop ALL | すべての Linux ケイパビリティを削除 |
--security-opt no-new-privileges | 権限昇格を防止 |
--read-only | ファイルシステムを読み取り専用にする(fileWrite がない場合) |
--network none | ネットワークを無効にする(ネットワーク権限がない場合) |
--memory 512m | メモリ使用量を制限 |
--cpus 1 | CPU 使用量を制限 |
--pids-limit 100 | プロセス数を制限 |
--tmpfs /tmp:size=64m | 一時的な書き込み領域 |
USER openclaw | 非 root ユーザーとして実行 |
ルール
- 常に最も制限の厳しいプロファイルをデフォルトにします
--privilegedフラグを指定したサンドボックスは決して生成しません- Docker ソケット(
/var/run/docker.sock)は決してマウントしません - 機密性の高いホストディレクトリ(
~/.ssh、~/.aws、/etc)は決してマウントしません - 常に
--cap-drop ALLを使用します。個別のケイパビリティは、明確な理由がない限り付与しません - DoS を防ぐため、リソース制限(メモリ、CPU、pids)を含めます
- スキルに
shellが必要な場合は、ユーザーに警告し、サンドボックスの出力を監視するよう提案します - 生成したファイルは専用の出力フォルダー(例:
.openclaw/sandbox/)にのみ書き込みます。既存のプロジェクトファイルは決して上書きしません - ディスクにファイルを書き込む前に、必ずユーザーの確認を求めます。まず生成した内容を提示して確認してもらいます
コメント
Markdown 対応