OpenClawはSlack・WhatsApp・MatrixなどのメッセージングチャンネルとMCP(Model Context Protocol)を通じて外部ツールを操作できる強力なAIエージェントです。しかしその実行能力は、適切に設定しなければ深刻なセキュリティリスクをもたらします。本記事では、Ragateが本番運用で確立したクラウドエンジニア・セキュリティエンジニア向けの高度なセキュリティ設定・ノウハウを解説します。
OpenClawのセキュリティアーキテクチャを理解する
OpenClawのセキュリティを正しく設定するためには、まずそのアーキテクチャを理解することが不可欠です。OpenClawは「個人アシスタント型の信頼モデル」を前提としており、Gateway単位で1つの信頼されたオペレーター境界を持つシングルユーザー設計となっています。これは、Gateway認証を通過した呼び出し元はすべて「信頼されたオペレーター」として扱われることを意味します。
セキュリティは以下の3つのレイヤーで多層的に構成されています。
レイヤー | 機能 | 防御効果 |
|---|---|---|
LLMレイヤー | Claudeの安全アライメントによる危険コマンド拒否 | 攻撃の83%をブロック |
ツール実行レイヤー | ポリシーベースの操作制限 | 設定による決定的な制御 |
HITLレイヤー | Human-in-the-Loopによる承認ワークフロー | 総合防御率91.5%を実現 |

特に「プロンプトインジェクション」への注意が必要です。攻撃者はメッセージ送信者だけでなく、エージェントが処理するコンテンツそのもの(Webページ・メール・ドキュメント)にも悪意ある命令を埋め込めます。この認識が多層防御の出発点です。
Gatewayの安全な設定とネットワーク制御
OpenClawのGatewayは制御プレーンです。ここへの不正アクセスはエージェント全体の乗っ取りを意味します。Ragateでは以下の「60秒ハードニング設定」を全環境の基準としています。
// ~/.openclaw/openclaw.json(ベースライン設定)
{
gateway: {
mode: "local",
bind: "loopback", // ローカルループバックのみ(0.0.0.0は厳禁)
auth: {
mode: "token",
token: "your-long-random-token-here"
},
},
session: {
dmScope: "per-channel-peer",
},
tools: {
profile: "messaging",
deny: ["group:automation", "group:runtime", "group:fs"],
fs: { workspaceOnly: true },
exec: { security: "deny", ask: "always" },
elevated: { enabled: false },
},
logging: {
redactSensitive: "tools",
},
}また、設定ファイルのファイルシステムパーミッションも必ず確認してください。
chmod 700 ~/.openclaw
chmod 600 ~/.openclaw/openclaw.json
chmod 600 ~/.openclaw/credentials/*外部からGatewayにアクセスする場合も、直接インターネット公開は避け、TLS終端リバースプロキシかTailscaleなどのゼロトラストVPN経由を徹底しています。
設定項目 | 推奨値 | 禁止パターン |
|---|---|---|
gateway.bind | loopback / tailnet | 0.0.0.0(全公開) |
gateway.auth.mode | token | none(認証なし) |
channels.*.dmPolicy | pairing | open(無認証DM) |
session.dmScope | per-channel-peer | global(スコープなし) |
tools.exec.security | deny / allowlist | full + ask: "off"(YOLO mode) |
ツール・Exec実行権限の制御とアローリスト管理
OpenClawのExec実行権限は、~/.openclaw/exec-approvals.jsonで管理されます。セキュリティレベルは3段階あり、本番環境では最低でもallowlistモードを使用することをRagateでは推奨しています。
securityモード | 挙動 | 推奨用途 |
|---|---|---|
deny | すべてのexec実行を拒否 | シェル実行が不要な環境 |
allowlist | 許可リストのパターンのみ実行可能 | 本番環境の標準設定 |
full | 制限なし実行(YOLO mode) | 開発環境のみ・本番禁止 |
高リスクコマンド(rm・kill・docker等)には必ず明示的な承認を要求します。
// exec-approvals.json(Ragate標準設定)
{
"version": 1,
"defaults": {
"security": "allowlist",
"ask": "always",
"askFallback": "deny",
"autoAllowSkills": false
},
"agents": [
{
"id": "ops-agent",
"security": "allowlist",
"ask": "on-miss",
"allowlist": [
{ "pattern": "~/Projects/**/bin/rg" },
{ "pattern": "git status" },
{ "pattern": "git log --oneline -20" }
]
}
]
}設定はCLIから変更でき、openclaw approvals getで現在の設定を確認できます。スキルのインストール時には危険コードスキャンが自動実行され、criticalな検出があるとインストールがブロックされます。
MCPサーバー連携におけるセキュリティ対策
MCP(Model Context Protocol)はOpenClawの拡張性を高める一方で、重大なセキュリティリスクをもたらします。2025年現在、約1,000のMCPサーバーが認証なしでインターネット公開されており、サプライチェーン攻撃の温床になっています。
主要なMCPリスクと対策を以下の表にまとめます。
リスク種別 | 内容 | 対策 |
|---|---|---|
プロンプトインジェクション | MCPツールの出力に隠し命令が埋め込まれる | 出力のサニタイズ・信頼済みサーバーのみ使用 |
クレデンシャル漏洩 | MCPサーバーが複数サービスのトークンを保持 | スコープ最小化・短命トークンの使用 |
サプライチェーン攻撃 | 悪意あるMCPサーバーのインストール | アローリストによる管理・暗号的検証 |
過剰な権限スコープ | 広範な権限を要求するサーバー | 最小権限の原則・人的レビュー必須 |
Ragateでは、すべてのMCPサーバーを内部ネットワークに限定し、外部公開を原則禁止しています。stdioローカルトランスポートを優先的に使用することで、ネットワーク経由の攻撃面を最小化しています。
// MCPサーバーをlocal stdioに限定する設定例
{
"mcpServers": {
"internal-tool": {
"command": "npx",
"args": ["-y", "@ragate/internal-mcp-server"],
"env": { "TOKEN": "${INTERNAL_MCP_TOKEN}" }
}
}
}サードパーティMCPサーバーを導入する際は、OWASPのガイドラインに基づき、ソースコードの公開・監査可能性、要求権限スコープの最小性、SAST/SCAによるスキャン実施有無、開発元の信頼性と更新頻度を必ず確認します。
承認フロー・監査ログの活用による運用セキュリティ
OpenClawのHITL(Human-in-the-Loop)機能は、高リスク操作に対して人間の承認を必須とする仕組みです。Exec操作が発生するとエージェントは承認IDを返し、Slack・Matrix・Teams・Web UIから/approveコマンドで承認できます。監査ログは/tmp/openclaw/openclaw-YYYY-MM-DD.logに日次で保存されます。
RagateではCIに以下のコマンドを組み込み、毎日自動でセキュリティ監査を実行しています。
# 基本・詳細・自動修正
openclaw security audit
openclaw security audit --deep
openclaw security audit --fix
# CI向けJSON出力(criticalのみ抽出)
openclaw security audit --json | jq '.findings[] | select(.severity == "critical")'SlowMistが提唱する3層防御マトリクスも参考になります。事前(Pre-action)はブラックリストとSkillインストール審査、実行中(In-action)は権限最小化とPre-flight Checks、事後(Post-action)はナイトリー自動監査とBrain Git復旧の組み合わせです。

Ragateが実践する本番運用のセキュリティノウハウ
Ragateでは複数のAIエージェント・30以上のMCPサーバーをOpenClaw上で運用しています。その中で確立した実践的なセキュリティノウハウを共有します。
1. エージェントごとのサンドボックス分離
権限スコープをエージェントごとに分離することで、侵害時の横展開を防止します。
// エージェント別サンドボックス設定
{
"agents": { "list": [
{
"id": "readonly-agent",
"sandbox": { "mode": "all", "workspaceAccess": "ro" },
"tools": { "allow": ["read", "web-fetch"], "deny": ["write", "exec"] }
},
{
"id": "ops-agent",
"sandbox": { "mode": "all", "workspaceAccess": "rw" },
"tools": { "allow": ["read", "write", "exec"], "deny": ["elevated"] }
}
]}
}2. クレデンシャル管理の徹底
ssh-agent経由でSSHキーを保護し、APIトークンはスコープを絞った短命トークンを使用します。シークレットはエージェントのワークスペース外に配置します。
3. OSレベルサンドボックスの活用
macOS環境ではSeatbelt、Linux環境ではLandlock + Seccompでシステムコールを制限します。Dockerコンテナ単体はカーネルを共有するため単独では不十分です。
4. インシデント対応プレイブック
# 1. ゲートウェイ停止
openclaw gateway stop
# 2. バインドをループバックに変更
openclaw config set gateway.bind loopback
# 3. DM/グループを無効化
openclaw config set channels.slack.dmPolicy disabled
# 4. トークンをローテーション
openclaw config set gateway.auth.token "$(openssl rand -hex 32)"
# 5. 深層監査を実行
openclaw security audit --deep5. 定期セキュリティレビューの仕組み化
周期 | 実施内容 |
|---|---|
毎日(自動) | openclaw security audit --jsonの実行・アラート通知 |
週次 | Exec承認ログのレビュー・不審なパターンの確認 |
月次 | MCPサーバーの権限スコープ見直し・不要サーバーの削除 |
設定変更時 | openclaw security audit --deepの即時実行 |
OpenClawは「完全に安全な設定は存在しない」とドキュメントで明示しています。それでも、多層防御・最小権限の原則・定期監査を組み合わせることで、リスクを実用的なレベルまで低減することができます。Ragateでは本記事で紹介した設定を基盤として、安全にAIエージェントの力を業務に活用し続けています。
















