> ## Documentation Index
> Fetch the complete documentation index at: https://docs.devin.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Security Swarm

> Devin Security Swarm を使用して、コードスキャンと自動修正によりリポジトリ全体のセキュリティ脆弱性を検出、トリアージ、修復します

Security Swarm は、Devin のセキュリティスキャンと修復のためのプロダクトです。コードに合わせて最適化された脅威モデルを構築し、潜在的な脆弱性を調査・検証したうえで、プルリクエストを通じて検出結果の修正を支援します。リモートコード実行 (RCE) 、SQL インジェクション、パストラバーサル、サーバーサイドリクエストフォージェリ (SSRF) 、認可バイパス、メモリ安全性の不具合、サービス拒否脆弱性などを特定できます。複数のファイルにまたがる連鎖的な攻撃も特定可能です。

Security Swarm は、私たちが [Agentic MapReduce](https://devin.ai/blog/agentic-map-reduce) と呼ぶ、複数の Devin を組み合わせたカスタムオーケストレーションです。リポジトリを並列の Devin に分割することで、コストを抑えながら広いカバレッジと深い調査を実現し、大規模なコードベースも費用対効果よくスキャンできます。また、GitHub Advisory Database で公開されている脆弱性の正解データセットを用いて、[Security Swarm のベンチマークも実施しました](https://devin.ai/blog/security-swarm-eval)。

<Accordion title="前提条件">
  スキャンを実行するには、次の条件を満たしている必要があります。

  * スキャン対象のリポジトリに、あなたの組織がアクセスできる必要があります。
  * Devin セッションの利用が許可されている必要があります。
  * **コードスキャンを利用する** 権限が必要です。
  * 自動スキャンのスケジュールを設定するには、**コードスキャンを管理する** と、自動化を管理する権限も必要です。

  サイドバーに **セキュリティ** が表示されない場合やスキャンを開始できない場合は、管理者にロールを確認してもらってください。詳細は [アクセスと権限](#access-and-permissions) を参照してください。
</Accordion>

<div id="run-your-first-scan">
  ## 最初のスキャンを実行する
</div>

1. 左側のサイドバーで**セキュリティ**を開き、**Start scan**をクリックします。
2. **Single repo**で、スキャン対象のリポジトリを選択します。
3. 必要に応じて[スキャンプロファイル](#scan-profiles)と[スキャンの実行度合い](#scan-effort)を選択します。プロファイルを空欄のままにすると、Security Swarm に組み込まれたセキュリティスキャンが利用されます。
4. **Interactive mode**が有効になっていることを確認します。
5. **Run Scan**をクリックします。
6. 提案された[脅威モデル](#interactive-mode)の準備ができたら内容を確認し、**Looks good, start scanning**をクリックするか、フィードバックを送信します。
7. 検出事項が表示されたら、証拠を確認し、対応が必要な[検出事項に対処](#act-on-a-finding)します。

New Scan シートでは、複数のリポジトリを一度にスキャンしたり、既存のスキャナーから検出結果を取り込んだりするための他の[スキャンモード](#choose-a-scan-mode)も利用できます。

<video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/sec-first-scan.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=aa95cbde2c0e4f2a2cedbc451d3ebbe4" data-path="images/work-with-devin/security-swarm/sec-first-scan.mp4" />

<Tip>繰り返し実行するスキャンには、対象範囲、脅威モデル、重大度の基準、検証手順、修正時の制約をまとめたプロファイルを作成してください。</Tip>

<div id="review-and-act-on-findings">
  ## findings を確認して対応する
</div>

スキャンを開くと、その findings を確認できます。ページには、左側に重大度ごとにグループ化された findings の一覧が表示され、右側には選択した finding の詳細が表示されます。

ステータスタブには、リアルタイムの件数が表示されます。

* **Open** — 対応が必要です。
* **Reviewed** — レビュー済みで、追加の対応は不要です。
* **Dismissed** — 誤検知または重複と判断されました。

スキャンの実行中は、findings が届くたびにページが自動的に更新されます。

<Warning>**Reviewed** はワークフロー上のステータスであり、対処法がマージされたことを示すものではありません。finding は手動で Reviewed にすることも、後続のスキャンで存在しなくなったと判断された場合に Reviewed になることもあります。</Warning>

<div id="whats-in-a-finding">
  ### 検出結果に含まれる内容
</div>

検出結果には、次の内容が含まれます。

* **重大度、ステータス、悪用可能性、確信度、カテゴリ**。
* 影響を受ける**ファイルパスとコードスニペット**。
* 問題の**説明**と**修復の推奨事項**。
* **サンドボックス検証結果**、裏付けとなる証拠、および検証アーティファクト。
* 関連する**プルリクエスト**と、それらのオープン、マージ済み、またはクローズ済みの状態。
* 利用可能な場合は、**コードオーナー**とメモ。

<Tip>リスクのあるコードパターンは、脆弱性の証拠ではなく手がかりとして扱ってください。検出結果が、攻撃者が制御可能な入力から到達可能な経路を追跡していること、入力検証や認可の制御を適切に考慮していること、そして具体的なセキュリティへの影響を説明していることを確認してください。</Tip>

<video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/finding.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=9d5b6ed3cf8d9e3d79d5e35c98fd4bcb" data-path="images/work-with-devin/security-swarm/finding.mp4" />

<div id="act-on-a-finding">
  ### 検出結果に対応する
</div>

<Tabs>
  <Tab title="Devin に割り当て">
    問題を修正してプルリクエストを作成するための Devin セッションを開始します。セッションと作成されたプルリクエストは、この検出結果に紐づけて追跡されます。

    <video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/assign.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=3c37a01979322039c16867599f3b8226" data-path="images/work-with-devin/security-swarm/assign.mp4" />
  </Tab>

  <Tab title="フィードバック">
    今後のスキャンに向けてスキャンプロファイルを改善するフィードバック セッションに前提情報を送信します。たとえば、報告されたデータフローは内部ゲートウェイで保護されていることを説明しておくと、今後のスキャンでその対策を考慮できるようになります。

    <video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/feedback.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=86a64989d96e51d70697179e7048ffce" data-path="images/work-with-devin/security-swarm/feedback.mp4" />
  </Tab>

  <Tab title="調整">
    必要に応じて Devin 向けの前提情報を添えて、検出結果の重大度を変更します。たとえば、悪用に特権を持つ内部アクセスが必要な場合は重大度を下げ、その制約を前提情報として含めます。

    <video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/adjust.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=a1251a7b14f850457de066a44260844e" data-path="images/work-with-devin/security-swarm/adjust.mp4" />
  </Tab>

  <Tab title="ステータスメニュー">
    検出結果を Open、Reviewed、または Dismissed に設定します。対応が必要な間は Open のままにし、トリアージ後は Reviewed にし、誤検知または重複の場合は Dismissed にします。

    <video autoPlay muted loop playsInline className="w-full aspect-video" src="https://mintcdn.com/cognitionai/U_A1KOkv4qhKbspx/images/work-with-devin/security-swarm/status.mp4?fit=max&auto=format&n=U_A1KOkv4qhKbspx&q=85&s=15f941bb61ffbbe793a143f1e7b1c1cb" data-path="images/work-with-devin/security-swarm/status.mp4" />
  </Tab>
</Tabs>

<div id="scan-profiles">
  ## スキャンプロファイル
</div>

スキャンプロファイルは、スキャンの対象範囲を定め、スキャンの各段階に指針を与えます。各スキャンで利用できるプロファイルは1つだけです。複数の攻撃者ペルソナや脅威カテゴリに対してリポジトリを評価するには、異なるプロファイルで個別にスキャンを実行します。

<Tip>具体的な脅威モデルは、スキャン間でカバレッジの一貫性を保つための最も効果的な方法の1つです。攻撃者、機密資産、信頼境界、重要な侵入経路、明示的な除外事項を定義してください。</Tip>

プロファイルは、セキュリティページの**Profiles**タブから管理できます。

<div id="create-a-profile">
  ### プロファイルを作成する
</div>

プロファイルは、次の2つの方法で作成できます。

* **Devin で生成** — アプリケーション、脅威、スコープ、除外事項、重大度の基準を自然言語で記述します。Devin がプロファイルのドラフトを作成します。
* **手動で作成** — プロファイルの各入力項目を自分で入力します。

Devin で生成する方法は便利な出発点ですが、プロファイルを利用する前に、生成された各項目を必ず確認してください。任意のガイダンス項目を空欄のままにすると、その段階では Security Swarm の標準的な動作が適用されます。

<div id="basic-information">
  ### 基本情報
</div>

* **プロファイル名** — スキャンを実行するチーム名ではなく、アプリケーションの対象領域や脅威カテゴリを表す名前にします。例: `Multi-tenant API authorization`.
* **説明** — プロファイルの対象範囲とセキュリティ上の目的を簡潔にまとめます。例: `Find authentication, authorization, and tenant-isolation vulnerabilities in the public API.`

以下の使用例は、マルチテナント API 向けの単一のプロファイルにまとめたものです。対象範囲、コマンド、重大度の基準は、アプリケーションに合わせて調整してください。

<div id="threat-model">
  ### 脅威モデル
</div>

攻撃者、機密資産、信頼境界、重要な侵入経路、明示的に対象外とする項目を記述します。この指針は、調査開始前に Devin が生成するルールの内容に反映されます。

```text theme={null}
Assume an unauthenticated internet attacker or an authenticated user in one tenant.
Focus on public HTTP handlers, OAuth callbacks, API tokens, administrative actions,
and accesses to tenant-owned data. Treat internal development scripts and local-only
tools as out of scope. Prioritize authentication bypasses, cross-tenant access, token
leakage, injection, and SSRF.
```

<div id="investigation-guidance">
  ### 調査ガイダンス
</div>

Devinが潜在的な問題をどのように調査し、どのような証拠を収集すべきかを定義します。既存の緩和策を考慮し、実際に到達可能な脆弱性と理論上の懸念を区別するよう指示してください。

```text theme={null}
Trace untrusted input from the route through middleware and service layers to the
sensitive operation. Check authentication, authorization, tenant scoping, validation,
and escaping at every boundary. Identify the exact reachable path and cite the relevant
files and lines. Do not report a theoretical issue when an effective mitigation blocks
the path.
```

<div id="triage-guidance">
  ### トリアージの指針
</div>

Devin が検出事項の重複をどのように排除し、どのように優先順位を付けるかを定義します。結果が組織の基準に沿うよう、重大度の判定基準も含めてください。

```text theme={null}
同じroot causeを持つfindingsをグループ化してください。未認証のリモートコード実行とcross-tenantの書き込みアクセスはcriticalとして扱ってください。cross-tenantの読み取りアクセスとcredentialの漏洩はhighとして扱ってください。単一ユーザーの可用性の問題は、共有インフラストラクチャに影響を及ぼす可能性がない限りmediumとして扱ってください。多層防御の推奨事項はlowとしてラベル付けしてください。
```

<div id="sandbox-validation">
  ### サンドボックス検証
</div>

Devinが安全にアプリケーションをビルドして実行できる場合は、サンドボックス検証を有効にしてください。アプリケーションの起動方法、テストデータの作成方法、認証方法、想定されるセキュリティ境界の示し方を説明してください。

**Validate severities** を利用して、Devin がサンドボックスで検証する重大度の下限を選択します。検証セッションが開始されるのは、その重大度以上の検出結果のみです。デフォルトでは、critical、high、medium の検出結果が検証されます。しきい値を critical または high に引き上げれば、最も重要な検出結果だけに検証リソースを集中できます。

```text theme={null}
リポジトリのドキュメントに記載された開発セットアップを利用する。APIを起動し、テストユーザーを1人ずつ含む非本番テナントを2つ作成する。別のテナントのユーザーとして問題のリクエストを試み、HTTPレスポンスと永続化されたデータの両方を確認する。
本番サービスを呼び出したり、本番データを変更したりしないこと。
```

<Tip>検証が成功しなかったからといって、必ずしも検出結果が誤りだとは限りません。検証結果とアーティファクトを確認し、有効な緩和策によって悪用が防がれたのか、あるいは設定された環境のために Devin がテストを完了できなかったのかを判断してください。</Tip>

サンドボックス検証では、検出結果ごとに個別の Devin セッションが開始されます。環境に関するガイダンスについては、[サンドボックス検証を設定する](#configure-sandbox-validation)を参照してください。

<div id="report">
  ### レポート
</div>

スキャン後に要約レポートが必要な場合は、レポートを有効にします。想定読者と、レポートで特に強調すべき情報を指定してください。

```text theme={null}
セキュリティおよびエンジニアリングリード向けのエグゼクティブサマリーを作成してください。確認済みのクリティカルおよび高リスクのfindingsを最初に列挙し、続いて未検証のfindingsを記載してください。影響を受けるコンポーネント、検証status、PRのstatus、および優先順位付きのremediationプランを含めてください。
```

<div id="remediation-guidance">
  ### 修正ガイダンス
</div>

修正のために検出事項をDevinに割り当てる際は、Devinが従うべき制約を指定します。テストに関する要件、互換性の要件、避けるべきプラクティスを含めてください。

```text theme={null}
最小限の安全な変更を優先し、既存の公開APIの動作を維持してください。修正前に失敗し、修正後にパスするリグレッションテストを追加してください。影響を受けるパッケージのlintおよびテストコマンドを実行してください。メジャーな依存関係のアップグレードなしでは脆弱性を安全に修正できない場合を除き、アップグレードは避けてください。
```

<div id="advanced-inputs">
  ### 詳細入力
</div>

**Advanced** を開くと、ファイルの対象範囲と調査バッチを設定できます。

* **Include globs** — マッチするファイルのみにスキャンを限定します。たとえば、`apps/api/**` や `packages/auth/**` です。
* **Exclude globs** — 選択した対象範囲から無関係なファイルを除外します。たとえば、`**/generated/**`、`**/vendor/**`、`**/fixtures/**` です。
* **Batch size** — シグナルがあるファイルを、各調査バッチにいくつずつまとめるかを設定します。スキャンの挙動を意図的に調整するのでなければ、デフォルトのままにしてください。設定可能な範囲は 1～500 で、デフォルトは 5 です。

<Warning>除外範囲が広すぎると、脆弱なコードを見落としたり、データフローを理解するために必要な前提情報が失われたりするおそれがあります。プロファイルに無関係であると確信できるファイルだけを除外してください。</Warning>

<div id="ingestion-profiles">
  ### Ingestion プロファイル
</div>

プロファイルの mode は作成時に決定され、後から変更できません。**Discover** プロファイル (デフォルト) はコードを解析して新しい issue を検出し、上記の guidance フィールドを利用します。**Ingest** プロファイルは、別の scanner やレポートですでに得られている検出結果を取り込み、scope と threat model の入力を次の 2 つの guidance フィールドに置き換えます。

* **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 とファイルが同じ検出結果を重複として扱う、といった内容です。

ingestion プロファイルで scan を run する方法については、[既存の検出結果を取り込む](#ingest-existing-findings)を参照してください。**Profiles** tab は scan type と mode (Discover または Ingest) で絞り込めます。

<div id="organization-and-enterprise-profiles">
  ### 組織プロファイルとEnterpriseプロファイル
</div>

新しいプロファイルは組織スコープです。Enterprise管理者は後からプロファイルの公開範囲を**Enterprise**に変更でき、Enterprise全体で利用できるようにできます。

Enterpriseプロファイルを編集またはアーカイブできるのは、Enterprise管理者のみです。Securityにアクセスできるその他のユーザーは、これらのプロファイルを閲覧して利用できますが、変更はできません。

<div id="interactive-mode">
  ### インタラクティブモード
</div>

**インタラクティブモード** を有効にすると、Devin は脅威モデルの案を作成し、調査を開始する前に一時停止します。スキャンページには提案されたルールが表示され、次の操作を行えます。

* **Looks good, start scanning** — 脅威モデルを承認して調査を開始します。
* **Provide feedback on the threat model** — 追加・削除したい点や、特に重視したい点を指定し、修正後のモデルを確認します。

リポジトリを初めてスキャンするときや、リスク範囲またはプロファイルが大きく変わったときは、インタラクティブモードを利用してください。承認済みのガイダンスがプロファイルに反映されたら、以降の通常のスキャンは一時停止なしで実行できます。

<div id="configure-sandbox-validation">
  ### サンドボックス検証を設定する
</div>

サンドボックス検証は、選択したプロファイルでサンドボックス検証が有効になっており、かつ検証ガイダンスが含まれている場合にのみ実行されます。Devin がサンドボックス内でアプリケーションをビルド、実行、シード、認証できるよう、十分な情報を与えてください。

リポジトリに[宣言的設定](/ja/onboard-devin/environment/blueprints)がある場合、Devin はそのビルドおよびインストール設定を再利用できます。ない場合は、必要なセットアップコマンドをプロファイルの検証ガイダンスに追加してください。

<Warning>本番用の認証情報やシークレット値をプロファイルのガイダンスに直接記載しないでください。組織の環境構成ですでに提供されている非本番のテストアカウントと認証情報を利用してください。</Warning>

<div id="scale-scanning">
  ## スキャンを拡張する
</div>

<div id="choose-a-scan-mode">
  ### スキャンモードを選択する
</div>

New Scan シートでは、次の4つのスキャンモードを利用できます。

| モード                 | 動作                                     | 最適な用途                                                                                     |
| ------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------- |
| **Single repo**     | 1つのリポジトリを1回スキャンします。                    | 1つのコードベースに絞ったスキャン。                                                                        |
| **Multi-repo**      | 最大200のリポジトリを1回のスキャンでまとめて Devin が分析します。 | マイクロサービスや相互に呼び出し合うリポジトリ。Devin がリポジトリの境界をまたぐ問題を検出できます。検出結果はリポジトリごとに絞り込めます。                 |
| **Bulk scan**       | 条件に一致するリポジトリごとに、独立した個別のスキャンを実行します。     | 組織全体を一度にカバーする場合。リポジトリはまとめて分析されません。                                                        |
| **Ingest findings** | 新たに検出するのではなく、既存のツールやレポートから検出結果を取り込みます。 | 別のスキャナーの結果を Devin に取り込んでトリアージと修正を行う場合。[既存の検出結果を取り込む](#ingest-existing-findings)を参照してください。 |

インタラクティブモードは、single-repo および multi-repo のセキュリティスキャンで利用できます。組織でまだスキャンを実行したことがない場合、single-repo スキャンではデフォルトで有効になります。

<div id="scan-effort">
  ### スキャンの実行レベル
</div>

スキャンは必ず2つの実行レベルのいずれかで実行され、開始時に**Scan effort**で選択します。

* **Normal** (デフォルト) — 調査バッチのサイズが大きく、より高速なスキャンです。
* **Deep** — 各検出結果をコードベース内でさらに深く追跡し、網羅性を最大限に高めます。その分コストが高く、実行時間も長くなります。

日常的なスキャンや差分スキャンにはNormalを、リスクの高いコードベースの初回スキャンや定期的な詳細レビューにはDeepを利用してください。完了したスキャンの実行レベルは、そのヘッダーで確認できます。

<div id="bulk-scan-an-organization">
  ### 組織を一括スキャンする
</div>

条件に一致するすべてのリポジトリについて個別のスキャンをキューに追加するには、New Scanシートの**一括スキャン**を利用します。

1. 必要に応じて**リポジトリ名フィルター**を入力します。
2. 必要に応じてスキャンプロファイルを選択します。
3. 選択したプロファイルですでにスキャンされているリポジトリを除外するには、**すでにスキャン済みのリポジトリをスキップ**を有効のままにします。
4. **プレビュー**をクリックします。
5. 条件に一致したリポジトリを確認し、スキャンしたくないものは選択を解除して確定します。

このプレビューはドライランです。フィルター、プロファイル、またはスキップ設定を変更するとプレビューは無効になるため、古い一覧は確定できません。

<div id="ingest-existing-findings">
  ### 既存の検出結果を取り込む
</div>

**Ingest findings** を利用すると、他のスキャナーの結果を Security Swarm に取り込み、Devin 自身の検出結果と併せてトリアージ・検証・修復できます。

1. 検出結果が属するリポジトリを 1 つ以上選択します。
2. [取り込みプロファイル](#ingestion-profiles)を選択します。プロファイルによって、検出結果の所在と、取り込み後のトリアージ方法が Devin に伝わります。
3. 任意で、Devin が検出結果を読み取るためのレポートやエクスポートファイル(SARIF、CSV、PDF など)を最大 10 件までアタッチできます。プロファイルの取り込みソースがすでに API やリポジトリ内のファイルを指している場合、アタッチメントは不要です。
4. 任意で **インタラクティブモード** を有効にします。取り込み後に Devin が一時停止するため、重複の可能性を含めて取り込み内容を確認し、続行前に修正を依頼できます。
5. [スキャン強度](#scan-effort)を選択し、**Run Scan** をクリックします。

取り込まれた検出結果は、他の検出結果と同様にスキャンページに表示され、Devin への割り当て、内容の調整、ステータスの変更が可能です。スキャンの一覧はモードでフィルタリングでき、**Discover** のみ、または **Ingest** のみのスキャンを表示できます。

<Note>アタッチメントのアップロードは attachments API を経由するため、アップロードしたファイルからの取り込みにも **Use Devin sessions** が必要です。取り込みスキャンは [API](/ja/api-reference/v3/code-scans/organizations-code-scans-start-ingestion) からも開始できます。</Note>

<div id="auto-scan">
  ### 自動スキャン
</div>

自動スキャンは、前回完了したスキャン以降に追加されたコミットを定期的にスキャンします。設定方法は次のとおりです。

* 単一リポジトリのスキャンを開始するときに、日次、週次、月次、またはカスタムのスケジュールを選択する。
* 既存のスキャンで、スケジュールを追加、編集、無効化する、または **今すぐスキャン** をクリックしてすぐに実行する。

スケジュールの時刻は、お使いのローカルタイムゾーンで表示されます。

<Note>自動スキャンは、[自動化](/ja/product-guides/automations)が組織で有効になっている場合にのみ利用できます。設定するには、**コードスキャンの管理**権限と、自動化を管理する権限の両方が必要です。</Note>

<Note>自動スキャンは増分方式です。各実行では、前回完了したスキャン以降に追加されたコミットのみを調査します。代わりに **スキャンを開始** をクリックすると、既定ではリポジトリ全体をフルスキャンします。</Note>

<div id="scan-new-commits">
  ### 新しいコミットをスキャンする
</div>

完了済みのスキャンで **新しいコミットをスキャンする** をクリックすると、そのスキャンで最後にスキャンされたコミット以降に追加されたコミットを調査できます。Auto Scan も同じ増分方式を利用するため、以降のスキャンはリポジトリ全体を繰り返しスキャンするよりも低コストです。

フルスキャンと増分スキャンのいずれの実行も、そのスキャンの [スキャン履歴](#scan-history) に記録されます。

<div id="start-scans-from-automations">
  ### 自動化からスキャンを開始する
</div>

[自動化](/ja/product-guides/automations)には、スケジュールに従って、またはイベントに応じて実行するスキャン向けに **コードスキャン** エージェントタイプが用意されています。プロンプトでDevinセッションを開始するのではなく、自動化が直接スキャンを開始します。次の2つのアクションのいずれかを選択してください:

* **Start code scan** — 自動化が発生するたびに、設定されたリポジトリ、スキャンタイプ、プロファイル、スキャンの実行レベルで新しいスキャンを開始します。
* **新しいコミットをスキャンする** — 既存のスキャンを拡張し、直前の完了した実行以降に追加されたコミットを対象とする増分実行を行います。対象のスキャンには完了済みの実行が必要です。

自動スキャンは、後者をあらかじめ設定した自動化です。Webhookなど他のトリガーを利用したい場合や、スケジュールされたスキャンを一箇所でまとめて管理したい場合は、自動化ページを利用してください。

セッションのコンポーザーから `/scan` コマンドでスキャンを開始することもできます。パフォーマンス、テストカバレッジ、デッドコードなど、セキュリティ以外のスキャンについては[Code Scans](/ja/work-with-devin/code-scans)を参照してください。

<div id="manage-and-monitor-scans">
  ## スキャンの管理と監視
</div>

スキャンとそのプロファイルによっては、スキャンのヘッダーに次の項目が表示されます。

* **レポート** — スキャン用に生成されたレポートをダウンロードします。
* **使用量** — 消費したACU、セッション数、スキャン時間、PRの統計を閲覧します。
* **セッション** — スキャンを実行したメインのDevinセッションを開きます。
* **スキャン履歴** — スキャンの各実行を閲覧します。[スキャン履歴](#scan-history)を参照してください。
* **プロファイルの変更** — 今後の実行で使用するプロファイルを切り替えます。[スキャンのプロファイルを変更する](#change-a-scans-profile)を参照してください。
* **CSVとしてエクスポート** — スキャンの検出結果をエクスポートします。
* **アーカイブ** または **アーカイブ解除** — スキャンをデフォルトの一覧から非表示にするか、一覧に戻します。
* **新しいコミットをスキャン** — 増分スキャンを開始します。

スキャンはDevinセッションとして実行され、[ACUs](/ja/admin/billing/usage)を消費します。セキュリティページのスキャン一覧は、ステータス、PRの状態、スキャンのモード (DiscoverまたはIngest) で絞り込めます。

<div id="scan-history">
  ### スキャン履歴
</div>

スキャンの **Scan history** を開くと、これまでの実行履歴が新しい順に表示されます。各実行では、**Full scan** と **Incremental** のどちらであったか、ステータス、使用された effort と profile、消費した ACU、対応する Devin セッションへのリンクを確認できます。自動スキャンがスケジュールどおりに実行されているかの確認や、フルスキャンと増分スキャンのコスト比較に利用してください。

<div id="change-a-scans-profile">
  ### スキャンのプロファイルを変更する
</div>

完了したスキャンで **Change profile** をクリックすると、別のプロファイルを選択できます。新しいプロファイルは、自動スキャンや **Scan new commits** を含む以降のスキャン実行に適用されます。完了済みの実行とその検出結果は影響を受けません。スキャンの実行中はプロファイルを変更できません。プロファイルの変更には **コードスキャンを利用する** 権限が必要です。

<div id="security-dashboard">
  ### セキュリティダッシュボード
</div>

組織で最初のスキャンが完了すると、セキュリティページに、過去7日間、30日間、または90日間の組織全体のダッシュボードが表示されます。

* **プルリクエストの統計** — 作成、マージ、オープン、クローズされたプルリクエスト数と、マージ率。
* **検出事項の推移** — 選択した期間内の検出事項を重要度別に表示します。

<div id="access-and-permissions">
  ## アクセスと権限
</div>

セキュリティへのアクセスは、ロールエディタ内のコードスキャン権限によって制御されます。

| Permission             | What it unlocks                                                                  | Default roles    |
| ---------------------- | -------------------------------------------------------------------------------- | ---------------- |
| **コードスキャンを閲覧する**       | スキャン、プロファイル、検出結果、および関連するスキャンセッションを閲覧できます。                                        | Admin            |
| **コードスキャンを利用する**       | スキャンの開始、組織プロファイルの作成、検出結果へのフィードバックの送信、検出結果の調整、検出結果のステータス変更、検出結果のDevinへの割り当てを行えます。 | Admin            |
| **コードスキャンを管理する**       | スキャンのアーカイブまたはアーカイブ解除と、自動スキャンスケジュールの設定を行えます。                                      | Admin            |
| **アカウントのコードスキャンを管理する** | 組織プロファイルをEnterpriseスコープに昇格し、Enterpriseプロファイルを編集またはアーカイブできます。                     | Enterprise admin |

スキャンの開始、フィードバックの送信、検出結果のDevinへの割り当てには、Devinセッションを利用する権限も必要です。さらに、自動スキャンには自動化を管理する権限が必要です。

デフォルトでは、メンバーにはコードスキャン権限は付与されません。オーナーはすべての権限を持ち、管理者は[カスタムロール](/ja/enterprise/security-access/custom-roles)を通じてメンバーに権限を付与できます。

同じコードスキャン権限によって、Code Scans APIへのアクセスも制御されます (APIコールでは追加のセッション権限は不要です。ただし、取り込みスキャン用のスキャナーレポートのアップロードはattachments API経由で行われ、**Devinセッションを利用する**権限が必要です) 。**コードスキャンを利用する**権限を持つサービスユーザーまたはパーソナルアクセストークンは、[スキャンを開始](/ja/api-reference/v3/code-scans/organizations-code-scans-start)、[取り込みスキャンを開始](/ja/api-reference/v3/code-scans/organizations-code-scans-start-ingestion)、および[検出結果を修復](/ja/api-reference/v3/code-scans/organizations-code-scans-remediate)できます。**コードスキャンを閲覧する**権限では、[スキャンの一覧表示](/ja/api-reference/v3/code-scans/organizations-code-scans-list)、[プロファイル](/ja/api-reference/v3/code-scans/organizations-code-scans-profiles)と[そのガイダンス](/ja/api-reference/v3/code-scans/organizations-code-scans-profile)、[検出結果](/ja/api-reference/v3/code-scans/organizations-code-scans-findings)、および[メトリクス](/ja/api-reference/v3/code-scans/organizations-code-scans-metrics)を利用できます。エンドツーエンドのフローについては、[Devin APIを介したコードスキャンのトリガー](/ja/api-reference/v3/code-scans/triggering-code-scans)を参照してください。

<div id="compare-security-swarm-with-another-scanner">
  ## Security Swarm を別のスキャナーと比較する
</div>

有意義な比較を行うには、両方のスキャナーに同じスコープ、脅威モデル、重大度の基準、検証に求める水準を設定してください。そうしないと、設定の違いによって、本来の能力差が見えにくくなることがあります。

プロファイルを利用して比較基準を定義し、インタラクティブモードで生成された脅威モデルを確認し、サンドボックス検証を利用して報告された検出結果に同じ証拠基準を適用してください。

<div id="faq">
  ## よくある質問
</div>

<AccordionGroup>
  <Accordion title="Security Swarm はどのように誤検知を減らしますか？">
    Security Swarm は、危険なパターンを個別に報告するのではなく、リポジトリの前提情報に照らして潜在的な脆弱性を調査します。Devin は関連するデータフローを追跡し、検証や認可の制御を確認したうえで、その問題に具体的なセキュリティ上の影響があるかどうかを評価します。

    各検出結果には、確信度レベルと裏付けとなる証拠が含まれます。特に、検出結果がサンドボックスで検証されていない場合は、対応する前にその証拠を確認してください。
  </Accordion>

  <Accordion title="検出結果ではどのような証拠を確認すべきですか？">
    影響を受けるコード、エントリーポイント、データフロー、既存の緩和策、記載された影響、確信度、悪用可能性を確認してください。サンドボックス検証が有効な場合は、検証結果とそれを裏付ける成果物も確認してください。

    証拠で制御が見落とされていたり、裏付けのない影響が示されていたりする場合は、[Feedback](#act-on-a-finding) を利用して、今後のスキャンに向けて不足している前提情報を与えてください。
  </Accordion>

  <Accordion title="サンドボックス検証では何が追加されますか？">
    サンドボックス検証では、隔離された環境でアプリケーションをビルドして実行し、検出結果の再現を試みます。検証が成功すると悪用可能性についてより強い証拠が得られ、検証が成功しなかった場合は、追加の確認が必要な前提や環境上の制約を特定できます。

    サンドボックス検証は任意であり、Devin がアプリケーションを安全にビルド、実行、シード、認証できるようにするための十分な [検証ガイダンス](#configure-sandbox-validation) が必要です。
  </Accordion>

  <Accordion title="Security Swarm は複数のファイルにまたがる脆弱性をどのように見つけますか？">
    Security Swarm はリポジトリの各部分を並列に分析し、その結果をリポジトリ全体の観点に統合します。これにより、あるエンドポイントが別のエンドポイントを悪用するために必要な識別子を公開している、といったコンポーネント間の関係を特定できます。

    その結果として得られる連鎖的な検出結果でも、関連するコードパスを特定し、個々の条件がどのように組み合わさって具体的な影響につながるのかを説明する必要があります。
  </Accordion>

  <Accordion title="スキャンごとに結果が異なるのはなぜですか？">
    Security Swarm はエージェント型の分析を利用しているため、別々のスキャンで同一の検出結果や表現になるとは限りません。対象範囲を絞り込み、脅威モデルを明示し、重大度の基準を明確にし、具体的な調査ガイダンスを与えることで、カバレッジの一貫性を保ちやすくなります。

    これらの要件を再利用可能な [スキャンプロファイル](#scan-profiles) に記録し、[インタラクティブモード](#interactive-mode) を利用して提案された脅威モデルを確認し、結果が重要な前提情報を見落としている場合は Feedback を与えてください。
  </Accordion>

  <Accordion title="スキャンが完了したということは、リポジトリに他の脆弱性はないという意味ですか？">
    いいえ。完全なカバレッジを保証できるセキュリティスキャナーはありません。結果は、選択したスコープ、profile のガイダンス、利用可能なリポジトリの前提情報、そして設定された環境で検出結果を検証できるかどうかに左右されます。

    攻撃者モデルや脅威カテゴリごとに個別のスキャンを実行し、アプリケーションの変更に合わせて profiles を最新の状態に保ち、既存のセキュリティレビューやテストの実践とあわせて Security Swarm を利用してください。
  </Accordion>
</AccordionGroup>
