soar について
soarは、ブルーチーム向けのセキュリティインシデント対応スキルです。複数段階のプレイブックと外部ツールを連携し、アラート処理、情報補完、対処を自動化します。
主な機能
- 01YAMLによる複数段階のプレイブック編成
- 02SIEM、ファイアウォール、脅威情報ツールとの接続
- 03インシデント情報の自動補完
- 04条件に応じた対応の実行
- 05実行結果のJSON出力
活用シーン
- 01不審なログインに関連するIPの遮断
- 02重大度の高いインシデントへの脅威情報付与
- 03アラート条件に応じた封じ込め手順の実行
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill soarインストール後、Claude Code で/soarを入力して読み込まれたか確認します。
詳細
soar
目的
このスキルは、ワークフローをオーケストレーションし、ツールを統合して、ブルーチームの運用でアクションを実行することで、セキュリティインシデント対応を自動化します。アラート、情報の充実化、修復などのタスクを処理し、インシデント対応を効率化します。
使用するタイミング
ログ内の異常の検出、脅威のエスカレーション、封じ込めの自動化など、迅速な対応が必要な進行中のセキュリティインシデントでこのスキルを使用します。アラートが大量に発生し、手動での介入が非効率な環境に最適です。
主な機能
- プレイブックのオーケストレーション:YAML 設定ファイルを使用して複数ステップのワークフローを定義し、実行します。たとえば、侵害されたホストを隔離するプレイブックを作成できます。
- ツールとの統合:API を介して SIEM、ファイアウォール、脅威インテリジェンスに接続し、REST や WebSockets などのプロトコルに対応します。
- インシデント情報の充実化:定義済みのコネクタを使用して、VirusTotal や内部データベースなどのソースからデータを自動的に取得します。
- 自動化ルール:アラートがシグネチャに一致した場合に対応を実行するなど、条件に基づくトリガーを設定します。
- レポート:実行したアクションと結果の概要を JSON 出力で生成します。
使用パターン
このスキルを使用するには、まず $SOAR_API_KEY などの環境変数を使って認証を設定します。次に、ファイルまたは API からプレイブックを読み込み、イベントに基づいて実行します。たとえば、監視ツールと統合し、アラート発生時に SOAR エンドポイントを呼び出します。本番環境に移行する前に、必ずステージング環境でプレイブックをテストしてください。一般的なパターンは、インシデントをポーリングし、条件を評価して、アクションを順番に実行することです。
一般的なコマンド/API
簡単なタスクには CLI を、プログラムからのアクセスには API を使用します。認証にはリクエスト内の $SOAR_API_KEY が必要です。
-
CLI コマンド:プレイブックを実行する
soar run --playbook-id 123 --params '{"ip": "192.168.1.1"}'
カスタムパラメーターを指定してプレイブック ID 123 を実行します。出力はステータスと結果を含む JSON です。 -
API エンドポイント:プレイブックを実行する
POST https://api.openclaw.com/soar/playbooks/{id}/run
ヘッダー:Authorization: Bearer $SOAR_API_KEY
本文:{"params": {"action": "isolate", "target": "host-01"}}
レスポンス:{"status": "success", "details": {...}}のような JSON を含む 200 OK。 -
CLI コマンド:インシデントを検索する
soar list-incidents --filter "status=active" --limit 10
ステータスでインシデントを絞り込みます。構造化データを取得するには--output jsonを使用します。 -
API エンドポイント:インシデントを取得する
GET https://api.openclaw.com/soar/incidents?status=active&limit=10
ヘッダー:Authorization: Bearer $SOAR_API_KEY
レスポンス:JSON 形式のインシデントオブジェクトの配列。
設定形式:プレイブックは YAML で定義します。例:
name: Isolate Host
steps:
- action: block-ip
params:
ip: "{{params.ip}}"
スニペットは 4 行未満に収め、詳細については完全なドキュメントを参照してください。
統合に関する注意
Webhook または API 呼び出しを設定して SOAR を統合します。たとえば、$SOAR_API_KEY をエクスポートしてスクリプトで使用します。
export SOAR_API_KEY=your_api_key_here
curl -X POST https://api.openclaw.com/soar/webhooks -H "Authorization: Bearer $SOAR_API_KEY" -d '{"event": "alert", "data": {...}}'
一般的な統合方法:HTTP エンドポイント経由で Splunk などの SIEM ツールに接続するか、情報の充実化のためにデータベースに接続します。すべての接続で TLS が有効になっていることを確認してください。カスタムコネクタでは、{"type": "rest", "endpoint": "https://example.com/api"} のような JSON 設定ファイルを指定します。
エラー処理
HTTP ステータスコードまたは CLI の終了コードを確認してエラーを処理します。よくあるエラーは、401 Unauthorized($SOAR_API_KEY を確認して修正)、404 Not Found(プレイブック ID を確認)、無効な YAML(soar validate --file playbook.yaml で検証)です。コード内では、API 呼び出しを try-catch ブロックで囲みます。
import requests
try:
response = requests.post('https://api.openclaw.com/soar/playbooks/123/run', headers={'Authorization': f'Bearer {os.environ["SOAR_API_KEY"]}'})
response.raise_for_status()
except requests.exceptions.HTTPError as e:
print(f"Error: {e.response.status_code} - {e.response.text}")
エラーをタイムスタンプとともに記録し、一時的な障害については最大 3 回まで再試行します。
具体的な使用例
-
不審なログインへのインシデント対応を自動化する:
まず、$SOAR_API_KEYを設定します。次に、以下を実行します。
soar run --playbook-id 456 --params '{"user": "admin", "ip": "10.0.0.1"}'
これにより、IP をブロックし、メールでチームに通知するプレイブックが実行されます。出力を監視して、成功したことを確認してください。 -
アラートの情報を充実化してエスカレーションする:
API を使用して検索し、対応します。curl -H "Authorization: Bearer $SOAR_API_KEY" https://api.openclaw.com/soar/incidents?severity=high # Parse response, then POST to run enrichment: curl -X POST https://api.openclaw.com/soar/playbooks/789/run -d '{"params": {"incident_id": "12345"}}'
これにより、重大度の高いインシデントを取得して情報を充実化します。たとえば、脅威フィードと照合します。
グラフの関係
- 関連先:ブルーチームのクラスター(入力データ向けの「threat-detection」や、フォローアップアクション向けの「incident-response」などのスキル)。
- 依存先:API キー用の認証サービス。
- 統合先:イベントトリガー用の SIEM システムなど、API 経由で連携する外部ツール。