# 診断手法の選び方 {#choosing-an-assessment-method}

Takumi で診断を作成するときは、グレーボックス診断、ホワイトボックス診断、ブラックボックス診断の 3 つの診断手法から 1 つを選びます。このページでは、用意できるものに応じてどの診断手法を選ぶべきかと、各手法の違いを説明します。

## 推奨する診断手法 {#recommendation}

:::tip[推奨する診断手法]
ソースコードと動作環境の両方を用意できる場合は、**グレーボックス診断**を選択してください。
:::

グレーボックス診断は、ソースコードの解析によって脆弱性の候補を効率よく洗い出し、稼働中のアプリケーションで再現を確認できたものだけを報告します。脆弱性発見の効率と報告内容の正確さを両立できるため、Takumi が最も推奨する診断手法です。

## 診断手法を選ぶ流れ {#flowchart}

次の図は、用意できるものに応じて選ぶべき診断手法を示しています。最初にソースコードを提供できるかを確認し、次に動作環境を用意できるかを確認してください。

```mermaid
flowchart TD
    Q1{ソースコードを<br/>提供できるか}
    Q1 -->|はい| Q2{動作環境を<br/>用意できるか}
    Q1 -->|いいえ| BB[ブラックボックス診断]
    Q2 -->|はい| GB[グレーボックス診断]
    Q2 -->|いいえ| WB[ホワイトボックス診断]
    GB -.->|結果を引き継ぐ| PT[ペネトレーションテスト]
    BB -.->|結果を引き継ぐ| PT
```

なお、グレーボックス診断とブラックボックス診断の後には、診断結果を引き継いだ[ペネトレーションテスト](/docs/ja/t/assessment/features/pentest.md#follow-up)の実施を推奨します。診断で検出されなかった脆弱性を調査したり、検出された脆弱性を組み合わせてより深刻な被害に至るかを検証したりできます。ホワイトボックス診断は動作環境を使わないため、その結果を引き継いだペネトレーションテストは開始できません。

## 診断手法の比較 {#comparison}

3 つの診断手法の違いを次の表にまとめます。各手法の詳細は、[グレーボックス診断](/docs/ja/t/assessment/features/graybox-assessment.md)、[ホワイトボックス診断](/docs/ja/t/assessment/features/whitebox-assessment.md)、[ブラックボックス診断](/docs/ja/t/assessment/features/blackbox-assessment.md)の各ページをご覧ください。

|                                        | グレーボックス診断                 | ホワイトボックス診断             | ブラックボックス診断                       |
| -------------------------------------- | ---------------------------------- | -------------------------------- | ------------------------------------------ |
| 必要なもの                             | ソースコードと動作環境             | ソースコード                     | 動作環境                                   |
| 脆弱性の探し方                         | ソースコードを解析する             | ソースコードを解析する           | 稼働中のアプリケーションを擬似的に攻撃する |
| 報告される指摘事項                     | 動作環境で再現を確認できたものだけ | ソースコードの解析で検出したもの | 擬似攻撃で検出したもの                     |
| 対象環境への影響                       | あり                               | なし                             | あり                                       |
| 結果を引き継いだペネトレーションテスト | 実施できる                         | 実施できない                     | 実施できる                                 |
