strix-cloud-api について
strix-cloud-apiは、DockerやLLMをローカルで実行せずに使える、チームやCI環境向けのStrixクラウド侵入テストスキルです。APIでアセット、スキャン、脆弱性対応、継続テストを管理し、結果をチームダッシュボードで追跡します。
主な機能
- 01ドメインとリポジトリの登録
- 02侵入テストの作成と追跡
- 03脆弱性ステータスの確認と更新
- 04スキャン結果のSARIF出力
- 05PRセキュリティレビューの開始
- 06定期スキャンとWebhookの設定
活用シーン
- 01CIでスキャンを開始・監視
- 02検証済みドメインの外部テスト
- 03リポジトリやプルリクエストの確認
- 04Webhookによるスキャンイベントの配信
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ usestrix/ strix --skill strix-cloud-apiインストール後、Claude Code で/strix-cloud-apiを入力して読み込まれたか確認します。
詳細
Strix Cloud API(マネージド型、ローカルインフラ不要)
Docker や LLM を自分で実行せずに Strix の自律型ペネトレーションテストを行う場合に使用します。スキャンは Strix のインフラ上で実行され、結果はチームのダッシュボードで追跡できます。サンドボックス化/ホスト型のエージェント環境や CI 環境、チームでの利用、スケジュール実行/継続的なテストには、この方法が適しています(ダウンロード可能な PDF/DOCX レポートは Enterprise プランの機能です)。完全にローカルでの実行、無料での実行、エアギャップ環境での実行、または BYO-LLM での実行には、代わりに strix-pentest スキルのオープンソース CLI を使用してください。どちらも同じエンジンと SARIF 出力を共有しているため、組み合わせて使用できます。
完全なリファレンス:docs.app.strix.ai · OpenAPI:https://docs.app.strix.ai/openapi.json
セットアップ
-
ベース URL:
https://app.strix.ai/api/v1 -
認証: すべてのリクエストで
Authorization: Bearer <token>を送信します。トークンは組織単位です。 -
トークンの取得: ユーザーがダッシュボード(app.strix.ai)の Settings → API Access で作成します。ユーザーにトークンを依頼してください。ハードコード、ログへの記録、コミットは絶対にしないでください。環境変数または CI のシークレットストアに保存します。
-
スコープ(最小権限): インテグレーションに必要なスコープのみを割り当て、定期的にローテーションします。
スコープ 許可される操作 scans:read/scans:writeスキャンの一覧表示/読み取り/レポート取得 · スキャンの作成/再実行/キャンセル vulnerabilities:read/:write検出結果の読み取り · ステータスとメモの更新 assets:read/:writeドメイン/リポジトリの読み取り · 登録/更新 schedules:read/:writeスケジュールの読み取り · 定期スキャンの作成/実行 pr_reviews:writePR セキュリティレビューの実行 webhooks:read/:writeWebhook サブスクリプションの管理 tokens:writeAPI トークンの作成/失効
export STRIX_API_TOKEN="<token>"
BASE=https://app.strix.ai/api/v1
auth=(-H "Authorization: Bearer $STRIX_API_TOKEN")
すべての例では JSON の解析に jq を使用します。HTTP エラーを処理してください。401 はトークンが無効または期限切れ、402 はクレジット不足、403 はスコープ/プランの制限、422 は検証エラーです。
1. ターゲットをアセットとして登録する
スキャンは生の URL ではなく、登録済みのアセットを対象に実行されます。一度登録したら、返された UUID を再利用してください。
# Domain (black-box / live target). Requires domain verification before external scanning.
# asset_type must be one of: web_app | api | attack_surface.
curl -sS "$BASE/domains" "${auth[@]}" -H "Content-Type: application/json" \
-d '{"domain":"staging.example.com","asset_type":"web_app"}' | jq '{id:.domain.id, status, reachable, verification}'
# Repository (white-box / code review). `full_name` is "owner/name".
# Send one repository object, or a bare JSON array for several — not an object
# wrapping a "repositories" key (that is rejected with 400).
curl -sS "$BASE/repositories" "${auth[@]}" -H "Content-Type: application/json" \
-d '[{"full_name":"org/app","provider":"github"}]' | jq '.repositories[] | {id, full_name}'
既存のアセットがある場合は、再登録せずに検索してください:GET /domains、GET /repositories(どちらも assets:read が必要で、?page=&limit= によるページネーションに対応しています)。
2. スキャンを開始する
POST /scans(scans:write)。domain_ids、repository_ids、internal_targets のいずれかを指定して、少なくとも 1 つのターゲットを設定します(内部インフラにはネットワークコネクタが必要です。詳細はドキュメントを参照してください)。
scan_id=$(curl -sS "$BASE/scans" "${auth[@]}" -H "Content-Type: application/json" -d '{
"engagement_type": "live_test",
"domain_ids": ["<domain-uuid>"],
"focus": "IDOR, auth bypass, SSRF",
"context": "Staging. Test account creds are configured as a test user.",
"notify_on_completion": true
}' | jq -r .scan_id)
echo "$scan_id"
CreateScanRequest の主なフィールド:
| フィールド | 用途 |
|---|---|
engagement_type | live_test(デフォルト)、code_review、internal_infra、compliance_pentest |
domain_ids / repository_ids / internal_targets | ターゲット(少なくとも 1 つ必要) |
domain_paths / repository_branches | 特定のパス/ブランチに対象を絞る |
credentials | 認証付きスキャン。mfa_method(totp/email_otp/…)および totp_secret を含みます |
headers | ターゲットに送信する追加の HTTP ヘッダー(API キーなど) |
focus / concerns / context | エージェントの動作を誘導する |
upload_ids | ホワイトボックスのコンテキストとして、アップロード済みのソース/ドキュメントのアーカイブを添付する |
notify_on_completion / notification_emails | 完了時にメールで通知する |
レスポンスは { scan_id, title, status } で、status は pending です。
3. 完了までポーリングする
GET /scans/{scanId}(scans:read)。ステータスの遷移:pending → running → completed(または failed/cancelled)。一定間隔でポーリングしてください。スキャンには数分から数時間かかるため、完了まで処理をブロックしないでください。
while :; do
s=$(curl -sS "$BASE/scans/$scan_id" "${auth[@]}" | jq -r .status)
echo "status=$s"; [[ "$s" =~ ^(completed|failed|cancelled)$ ]] && break
sleep 60
done
4. 検出結果の確認
スキャン詳細のレスポンスには、executive_summary、methodology、recommendations、重要度別の集計結果である findings、および vulnerabilities[] 配列が含まれます。各脆弱性には、title, severity, status, cvss, cwe, endpoint, method, impact, technical_analysis, poc_description, poc_script_code が含まれます。また、コードに関する検出結果の場合は、code_file/code_diff/code_before/code_after も含まれます。
curl -sS "$BASE/scans/$scan_id" "${auth[@]}" \
| jq '["critical","high","medium","low","info"] as $order
| .vulnerabilities
| sort_by(.severity as $s | $order | index($s))
| .[] | {title, severity, endpoint, cwe}'
クラウドの重要度は critical | high | medium | low、ステータスは open | in_progress | fixed | ignored です。sort_by(.severity) はアルファベット順(critical、high、low、medium)で並べ替えるため、明示的な重要度順で並べ替えてください。
複数のスキャンを対象に組織全体でトリアージするには、GET /vulnerabilities を使用します(vulnerabilities:read。重要度/ステータスでフィルタリングできます)。トリアージ状態は vulnerabilities の :write エンドポイントで更新します。修正するには、strix-fix-findings スキルに引き継いでください。
5. エクスポートとレポート
# SARIF 2.1.0 for GitHub code scanning / ASPM ingestion
curl -sS "$BASE/scans/$scan_id/sarif" "${auth[@]}" -o findings.sarif
# Report. The format and file type are query params (`Accept` is ignored):
# format=technical (default) | retest | attestation | executive_summary
# type=pdf (default) | docx
# Any report download requires the Enterprise plan; formats beyond `technical`,
# DOCX, and white-label branding are Enterprise-only too. Scan must be completed.
curl -sS "$BASE/scans/$scan_id/report?format=technical&type=pdf" "${auth[@]}" -o strix-report.pdf
6. PR レビュー
プルリクエストの自動セキュリティレビューを実行します(pr_reviews:write)。結果は PR コメントとダッシュボードに表示されます。
curl -sS "$BASE/pr-reviews/start" "${auth[@]}" -H "Content-Type: application/json" \
-d '{"repository_full_name":"org/app","pr_number":123}'
GET /pr-reviews と GET /pr-reviews/{id} で一覧表示/詳細確認できます。リポジトリ単位の PR レビューの動作は、リポジトリ設定エンドポイントで設定します。
7. 継続的テスト(スケジュールと Webhook)
- スケジュール(
schedules:write、Pro プラン):定期スキャンを作成し、必要に応じて実行します。cron で CLI を繰り返し実行する方法と同等のマネージド機能です。 - Webhook(
webhooks:write):ペンテスト/脆弱性のライフサイクルイベント(例:scan.completed、vulnerability.created)を購読し、ポーリングの代わりに Slack、チケット管理システム、または独自のパイプラインに結果をプッシュします。
ペイロードについては、docs.app.strix.ai のスケジュールと Webhook のセクションを参照してください。
安全性
ユーザーの組織が所有する、またはテストを許可されているアセットのみをスキャンしてください。外部ドメインのスキャンには検証(DNS/ファイル/メタタグ)が必要で、これはプラットフォームによって適用されます。回避を試みないでください。