前提条件
前提条件
スキャンを実行するには、次の条件を満たしている必要があります。
- スキャン対象のリポジトリに、あなたの組織がアクセスできる必要があります。
- Devin セッションの利用が許可されている必要があります。
- コードスキャンを利用する 権限が必要です。
- 自動スキャンのスケジュールを設定するには、コードスキャンを管理する と、自動化を管理する権限も必要です。
最初のスキャンを実行する
- 左側のサイドバーでセキュリティを開き、Start scanをクリックします。
- Single repoで、スキャン対象のリポジトリを選択します。
- 必要に応じてスキャンプロファイルとスキャンの実行度合いを選択します。プロファイルを空欄のままにすると、Security Swarm に組み込まれたセキュリティスキャンが利用されます。
- Interactive modeが有効になっていることを確認します。
- Run Scanをクリックします。
- 提案された脅威モデルの準備ができたら内容を確認し、Looks good, start scanningをクリックするか、フィードバックを送信します。
- 検出事項が表示されたら、証拠を確認し、対応が必要な検出事項に対処します。
findings を確認して対応する
- Open — 対応が必要です。
- Reviewed — レビュー済みで、追加の対応は不要です。
- Dismissed — 誤検知または重複と判断されました。
検出結果に含まれる内容
- 重大度、ステータス、悪用可能性、確信度、カテゴリ。
- 影響を受けるファイルパスとコードスニペット。
- 問題の説明と修復の推奨事項。
- サンドボックス検証結果、裏付けとなる証拠、および検証アーティファクト。
- 関連するプルリクエストと、それらのオープン、マージ済み、またはクローズ済みの状態。
- 利用可能な場合は、コードオーナーとメモ。
検出結果に対応する
- Devin に割り当て
- フィードバック
- 調整
- ステータスメニュー
問題を修正してプルリクエストを作成するための Devin セッションを開始します。セッションと作成されたプルリクエストは、この検出結果に紐づけて追跡されます。
スキャンプロファイル
プロファイルを作成する
- Devin で生成 — アプリケーション、脅威、スコープ、除外事項、重大度の基準を自然言語で記述します。Devin がプロファイルのドラフトを作成します。
- 手動で作成 — プロファイルの各入力項目を自分で入力します。
基本情報
- プロファイル名 — スキャンを実行するチーム名ではなく、アプリケーションの対象領域や脅威カテゴリを表す名前にします。例:
Multi-tenant API authorization. - 説明 — プロファイルの対象範囲とセキュリティ上の目的を簡潔にまとめます。例:
Find authentication, authorization, and tenant-isolation vulnerabilities in the public API.
脅威モデル
調査ガイダンス
トリアージの指針
サンドボックス検証
レポート
修正ガイダンス
詳細入力
- Include globs — マッチするファイルのみにスキャンを限定します。たとえば、
apps/api/**やpackages/auth/**です。 - Exclude globs — 選択した対象範囲から無関係なファイルを除外します。たとえば、
**/generated/**、**/vendor/**、**/fixtures/**です。 - Batch size — シグナルがあるファイルを、各調査バッチにいくつずつまとめるかを設定します。スキャンの挙動を意図的に調整するのでなければ、デフォルトのままにしてください。設定可能な範囲は 1~500 で、デフォルトは 5 です。
Ingestion プロファイル
- Ingestion source — 既存の検出結果がどこにあり、Devin がどのように取得すべきか。例えば、GitHub code scanning の REST API 経由で open な alert を取得する、
reports/semgrep.jsonに commit された Semgrep レポートを読み取る、といった指定です。認証情報は token を直接貼り付けず、組織の secret 名で参照してください。 - Post-ingestion triage — 取り込んだ検出結果を Devin がどのように triage すべきか。何を dismiss し、何の優先度を見直し、何を重複として扱うかを指定します。例えば、テストフィクスチャ内の検出結果を dismiss し、rule ID とファイルが同じ検出結果を重複として扱う、といった内容です。
組織プロファイルとEnterpriseプロファイル
インタラクティブモード
- Looks good, start scanning — 脅威モデルを承認して調査を開始します。
- Provide feedback on the threat model — 追加・削除したい点や、特に重視したい点を指定し、修正後のモデルを確認します。
サンドボックス検証を設定する
スキャンを拡張する
スキャンモードを選択する
インタラクティブモードは、single-repo および multi-repo のセキュリティスキャンで利用できます。組織でまだスキャンを実行したことがない場合、single-repo スキャンではデフォルトで有効になります。
スキャンの実行レベル
- Normal (デフォルト) — 調査バッチのサイズが大きく、より高速なスキャンです。
- Deep — 各検出結果をコードベース内でさらに深く追跡し、網羅性を最大限に高めます。その分コストが高く、実行時間も長くなります。
組織を一括スキャンする
- 必要に応じてリポジトリ名フィルターを入力します。
- 必要に応じてスキャンプロファイルを選択します。
- 選択したプロファイルですでにスキャンされているリポジトリを除外するには、すでにスキャン済みのリポジトリをスキップを有効のままにします。
- プレビューをクリックします。
- 条件に一致したリポジトリを確認し、スキャンしたくないものは選択を解除して確定します。
既存の検出結果を取り込む
- 検出結果が属するリポジトリを 1 つ以上選択します。
- 取り込みプロファイルを選択します。プロファイルによって、検出結果の所在と、取り込み後のトリアージ方法が Devin に伝わります。
- 任意で、Devin が検出結果を読み取るためのレポートやエクスポートファイル(SARIF、CSV、PDF など)を最大 10 件までアタッチできます。プロファイルの取り込みソースがすでに API やリポジトリ内のファイルを指している場合、アタッチメントは不要です。
- 任意で インタラクティブモード を有効にします。取り込み後に Devin が一時停止するため、重複の可能性を含めて取り込み内容を確認し、続行前に修正を依頼できます。
- スキャン強度を選択し、Run Scan をクリックします。
アタッチメントのアップロードは attachments API を経由するため、アップロードしたファイルからの取り込みにも Use Devin sessions が必要です。取り込みスキャンは API からも開始できます。
自動スキャン
- 単一リポジトリのスキャンを開始するときに、日次、週次、月次、またはカスタムのスケジュールを選択する。
- 既存のスキャンで、スケジュールを追加、編集、無効化する、または 今すぐスキャン をクリックしてすぐに実行する。
自動スキャンは、自動化が組織で有効になっている場合にのみ利用できます。設定するには、コードスキャンの管理権限と、自動化を管理する権限の両方が必要です。
自動スキャンは増分方式です。各実行では、前回完了したスキャン以降に追加されたコミットのみを調査します。代わりに スキャンを開始 をクリックすると、既定ではリポジトリ全体をフルスキャンします。
新しいコミットをスキャンする
自動化からスキャンを開始する
- Start code scan — 自動化が発生するたびに、設定されたリポジトリ、スキャンタイプ、プロファイル、スキャンの実行レベルで新しいスキャンを開始します。
- 新しいコミットをスキャンする — 既存のスキャンを拡張し、直前の完了した実行以降に追加されたコミットを対象とする増分実行を行います。対象のスキャンには完了済みの実行が必要です。
/scan コマンドでスキャンを開始することもできます。パフォーマンス、テストカバレッジ、デッドコードなど、セキュリティ以外のスキャンについてはCode Scansを参照してください。
スキャンの管理と監視
- レポート — スキャン用に生成されたレポートをダウンロードします。
- 使用量 — 消費したACU、セッション数、スキャン時間、PRの統計を閲覧します。
- セッション — スキャンを実行したメインのDevinセッションを開きます。
- スキャン履歴 — スキャンの各実行を閲覧します。スキャン履歴を参照してください。
- プロファイルの変更 — 今後の実行で使用するプロファイルを切り替えます。スキャンのプロファイルを変更するを参照してください。
- CSVとしてエクスポート — スキャンの検出結果をエクスポートします。
- アーカイブ または アーカイブ解除 — スキャンをデフォルトの一覧から非表示にするか、一覧に戻します。
- 新しいコミットをスキャン — 増分スキャンを開始します。
スキャン履歴
スキャンのプロファイルを変更する
セキュリティダッシュボード
- プルリクエストの統計 — 作成、マージ、オープン、クローズされたプルリクエスト数と、マージ率。
- 検出事項の推移 — 選択した期間内の検出事項を重要度別に表示します。
アクセスと権限
スキャンの開始、フィードバックの送信、検出結果のDevinへの割り当てには、Devinセッションを利用する権限も必要です。さらに、自動スキャンには自動化を管理する権限が必要です。
デフォルトでは、メンバーにはコードスキャン権限は付与されません。オーナーはすべての権限を持ち、管理者はカスタムロールを通じてメンバーに権限を付与できます。
同じコードスキャン権限によって、Code Scans APIへのアクセスも制御されます (APIコールでは追加のセッション権限は不要です。ただし、取り込みスキャン用のスキャナーレポートのアップロードはattachments API経由で行われ、Devinセッションを利用する権限が必要です) 。コードスキャンを利用する権限を持つサービスユーザーまたはパーソナルアクセストークンは、スキャンを開始、取り込みスキャンを開始、および検出結果を修復できます。コードスキャンを閲覧する権限では、スキャンの一覧表示、プロファイルとそのガイダンス、検出結果、およびメトリクスを利用できます。エンドツーエンドのフローについては、Devin APIを介したコードスキャンのトリガーを参照してください。
Security Swarm を別のスキャナーと比較する
よくある質問
Security Swarm はどのように誤検知を減らしますか?
Security Swarm はどのように誤検知を減らしますか?
Security Swarm は、危険なパターンを個別に報告するのではなく、リポジトリの前提情報に照らして潜在的な脆弱性を調査します。Devin は関連するデータフローを追跡し、検証や認可の制御を確認したうえで、その問題に具体的なセキュリティ上の影響があるかどうかを評価します。各検出結果には、確信度レベルと裏付けとなる証拠が含まれます。特に、検出結果がサンドボックスで検証されていない場合は、対応する前にその証拠を確認してください。
検出結果ではどのような証拠を確認すべきですか?
検出結果ではどのような証拠を確認すべきですか?
影響を受けるコード、エントリーポイント、データフロー、既存の緩和策、記載された影響、確信度、悪用可能性を確認してください。サンドボックス検証が有効な場合は、検証結果とそれを裏付ける成果物も確認してください。証拠で制御が見落とされていたり、裏付けのない影響が示されていたりする場合は、Feedback を利用して、今後のスキャンに向けて不足している前提情報を与えてください。
サンドボックス検証では何が追加されますか?
サンドボックス検証では何が追加されますか?
サンドボックス検証では、隔離された環境でアプリケーションをビルドして実行し、検出結果の再現を試みます。検証が成功すると悪用可能性についてより強い証拠が得られ、検証が成功しなかった場合は、追加の確認が必要な前提や環境上の制約を特定できます。サンドボックス検証は任意であり、Devin がアプリケーションを安全にビルド、実行、シード、認証できるようにするための十分な 検証ガイダンス が必要です。
Security Swarm は複数のファイルにまたがる脆弱性をどのように見つけますか?
Security Swarm は複数のファイルにまたがる脆弱性をどのように見つけますか?
Security Swarm はリポジトリの各部分を並列に分析し、その結果をリポジトリ全体の観点に統合します。これにより、あるエンドポイントが別のエンドポイントを悪用するために必要な識別子を公開している、といったコンポーネント間の関係を特定できます。その結果として得られる連鎖的な検出結果でも、関連するコードパスを特定し、個々の条件がどのように組み合わさって具体的な影響につながるのかを説明する必要があります。
スキャンごとに結果が異なるのはなぜですか?
スキャンごとに結果が異なるのはなぜですか?
Security Swarm はエージェント型の分析を利用しているため、別々のスキャンで同一の検出結果や表現になるとは限りません。対象範囲を絞り込み、脅威モデルを明示し、重大度の基準を明確にし、具体的な調査ガイダンスを与えることで、カバレッジの一貫性を保ちやすくなります。これらの要件を再利用可能な スキャンプロファイル に記録し、インタラクティブモード を利用して提案された脅威モデルを確認し、結果が重要な前提情報を見落としている場合は Feedback を与えてください。
スキャンが完了したということは、リポジトリに他の脆弱性はないという意味ですか?
スキャンが完了したということは、リポジトリに他の脆弱性はないという意味ですか?
いいえ。完全なカバレッジを保証できるセキュリティスキャナーはありません。結果は、選択したスコープ、profile のガイダンス、利用可能なリポジトリの前提情報、そして設定された環境で検出結果を検証できるかどうかに左右されます。攻撃者モデルや脅威カテゴリごとに個別のスキャンを実行し、アプリケーションの変更に合わせて profiles を最新の状態に保ち、既存のセキュリティレビューやテストの実践とあわせて Security Swarm を利用してください。

