setup-auditor について
setup-auditorは、OpenClaw環境を対象とするセキュリティ監査スキルです。ワークスペースの認証情報、エージェント設定、権限、サンドボックスの準備状況、永続化の兆候を順に確認し、リスクと対処案を報告します。
主な機能
- 01ワークスペース内の認証情報スキャン
- 02エージェント設定と権限の監査
- 03Dockerサンドボックス準備状況の確認
- 04永続化と侵害の兆候の調査
- 05リスクと修正案の報告
活用シーン
- 01新しいOpenClaw環境の評価
- 02ファイル読み取りスキルの実行前確認
- 03セキュリティインシデント後の再監査
- 04定期的なセキュリティ衛生チェック
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ useai-pro/ openclaw-skills-security --skill setup-auditorインストール後、Claude Code で/setup-auditorを入力して読み込まれたか確認します。
詳細
セットアップ監査
OpenClaw の環境セキュリティ監査を行います。ユーザーのワークスペース、設定、サンドボックスのセットアップを確認し、スキルを安全に実行できるかどうかを判断します。
一言で言うと: セットアップについて教えてください → 準備ができているか、何を修正すべきかをお伝えします。
使用するタイミング
fileReadアクセスを持つスキルを実行する前(秘密情報が漏えいする可能性があります)- 新しい OpenClaw 環境をセットアップするとき
- セキュリティインシデントの後(セットアップを再確認します)
- 定期的なセキュリティ衛生チェック
ウィザードの手順(ユーザーに以下の質問をします)
Q1: What's your workspace path?
→ I'll scan for .env, .aws, .ssh, credentials
Q2: What host agent do you use? (Codex CLI / Claude Code / OpenClaw / other)
→ I'll check your tool-specific config
Q3: What are your permission defaults? (network / shell / fileWrite)
→ I'll verify least-privilege is applied
Q4: Do you use Docker/sandbox for untrusted skills?
→ I'll check isolation readiness
Q5: Any ports open or remote access configured?
→ I'll check exposure surface
監査手順(4 ステップ)
ステップ 1:認証情報のスキャン
fileRead を持つスキルからアクセス可能な、ワークスペース内に漏えいした秘密情報がないかスキャンします。
優先度の高いスキャン対象ファイル:
.env、.env.local、.env.production、.env.*docker-compose.yml(環境変数のセクション)config.json、settings.json、secrets.json*.pem、*.key、*.p12、*.pfx
ホームディレクトリ内のファイル(ユーザーの同意を得てスキャン):
~/.aws/credentials、~/.aws/config~/.ssh/id_rsa、~/.ssh/id_ed25519、~/.ssh/config~/.netrc、~/.npmrc、~/.pypirc
検出するパターン:
AKIA[0-9A-Z]{16} # AWS Access Key
sk-[a-zA-Z0-9]{48} # OpenAI API Key
sk-ant-[a-zA-Z0-9-]{80,} # Anthropic API Key
ghp_[a-zA-Z0-9]{36} # GitHub Personal Token
gho_[a-zA-Z0-9]{36} # GitHub OAuth Token
glpat-[a-zA-Z0-9-_]{20} # GitLab Personal Token
xoxb-[0-9]{10,}-[a-zA-Z0-9]{24} # Slack Bot Token
SG\.[a-zA-Z0-9-_]{22}\.[a-zA-Z0-9-_]{43} # SendGrid API Key
-----BEGIN (RSA |EC |DSA |OPENSSH )?PRIVATE KEY-----
-----BEGIN PGP PRIVATE KEY BLOCK-----
(postgres|mysql|mongodb)://[^\s'"]+:[^\s'"]+@
(password|secret|token|api_key|apikey)\s*[:=]\s*['"][^\s'"]{8,}['"]
スキップする対象: node_modules/、.git/、dist/、build/、ロックファイル、テスト用フィクスチャ。
出力のサニタイズ: 秘密情報の値を完全な形で表示しないでください。必ず ████████ で切り詰めます。さらに、以下もマスクします。
- メールアドレス →
j***@example.com - ホームディレクトリのフルパス →
~/ - 内部ホスト名 →
[internal-host]
ステップ 2:設定の監査
ユーザーの OpenClaw/エージェント設定を確認します。
AGENTS.md/設定の確認:
- AGENTS.md が存在する(存在しない場合は CRITICAL — 動作上の制約がありません)
- ルールが明確である(「すべてのツールを有効にする」ではない)
- 禁止事項のセクションに
~/.ssh、~/.aws、~/.envが含まれている
権限のデフォルト設定:
- デフォルトで
network: none -
shell: prompt(確認を必須にする) - ファイルアクセスがプロジェクトディレクトリに限定されている
- 4 つすべての権限を持つスキルがない
ゲートウェイ(該当する場合):
- 認証が有効になっている
- mDNS ブロードキャストが無効になっている
- リモートアクセスに HTTPS を使用している
- レート制限が設定されている
- 許可するオリジンにワイルドカード
*がない
ステップ 3:サンドボックスの準備状況
信頼できないスキルを分離して実行できるか確認します。
Docker サンドボックスの確認:
- Docker/コンテナランタイムが利用可能
- 非 root ユーザーが設定されている
- リソース制限(メモリ、CPU、pids)が設定されている
- ネットワーク分離が利用可能
必要に応じたサンドボックスプロファイルの生成:
読み取り専用スキルの場合:
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
読み書きスキルの場合:
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
セキュリティフラグ(必ず含める):
| フラグ | 目的 |
|---|---|
--cap-drop ALL | Linux のすべてのケイパビリティを削除 |
--security-opt no-new-privileges | 権限昇格を防止 |
--network none | ネットワークを無効化(デフォルト) |
--memory 512m | メモリを制限 |
--cpus 1 | CPU を制限 |
--pids-limit 100 | プロセス数を制限 |
USER openclaw | 非 root として実行 |
絶対に生成しないもの: --privileged、Docker ソケットのマウント、機密ディレクトリ(~/.ssh、~/.aws、/etc)のマウント。
ステップ 4:永続化の確認
過去に侵害された兆候がないか確認します。
-
~/.bashrc、~/.zshrc、~/.profile— 不明な追加項目がない -
~/.ssh/authorized_keys— 不明な鍵がない -
crontab -l— 不明なエントリがない -
.git/hooks/— 想定外のフックがない -
node_modules— 想定外の変更がない - 不明なバックグラウンドプロセスがない
出力形式
SETUP AUDIT REPORT
==================
Workspace: <path>
Host agent: <tool>
VERDICT: READY / RISKY / NOT_READY
CHECKS:
[1] Credentials: <count> secrets found / clean
[2] Config: <issues found> / hardened
[3] Sandbox: ready / not configured
[4] Persistence: clean / suspicious
FINDINGS:
[CRITICAL] .env:3 — OpenAI API Key exposed
Action: Move to secret manager, add .env to .gitignore
[HIGH] mDNS broadcasting enabled
Action: Set gateway.mdns.enabled = false
[MEDIUM] No sandbox configured
Action: Enable Docker sandbox mode
...
FIX CHECKLIST (do these, re-run until READY):
[ ] Add .env to .gitignore
[ ] Rotate exposed API key sk-proj-...████
[ ] Create AGENTS.md with security policy
[ ] Enable sandbox mode
[ ] Set network: none as default
GENERATED FILES (review before applying):
.openclaw/sandbox/Dockerfile
.openclaw/sandbox/docker-compose.yml
AGENTS.md (template)
ルール
- 必ずウィザードの質問をする — 推測しない
- 秘密情報の値を完全な形で表示しない
.gitignoreを確認し、機密ファイルが無視対象になっていない場合は警告するnetworkアクセスを持つスキルを実行する前に監査する場合 — すべての検出事項の重大度を CRITICAL に引き上げる- 生成したファイルは
.openclaw/sandbox/に保存する — 既存のプロジェクトファイルを上書きしない - ファイルを書き込む前に、必ずユーザーの確認を得る
- 露出した秘密情報がローカルのみの場合でも、認証情報のローテーションを常に推奨する