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

# AWS GuardDuty

> 自動ポーリング（pull）または EventBridge Webhook（push）で AWS GuardDuty の検出結果を CaseBender に取り込みます。

## 概要

AWS GuardDuty 統合（**INT-023**）は、GuardDuty の検出結果（findings）を CaseBender に取り込み、
MITRE ATT\&CK マッピングと攻撃分類で強化し、アラート（および任意でケース）に変換します。

<CardGroup cols={2}>
  <Card title="自動ポーリング（pull）" icon="arrow-right-to-bracket">
    CaseBender は IAM 認証情報を使用してスケジュールに基づき、AWS アカウントから直接
    新しい検出結果をプルします。EventBridge ルールは不要です。
  </Card>

  <Card title="EventBridge Webhook（push）" icon="bolt">
    代替として、EventBridge ルールが検出結果を CaseBender の取り込みエンドポイントへ
    転送します。
  </Card>
</CardGroup>

<Tip>
  **推奨: 自動ポーリングを有効にしてください。** 読み取り専用の IAM キーのみで、
  インバウンドエンドポイントは不要です。[自動ポーリング](#インバウンド自動ポーリング) を
  参照してください。
</Tip>

<Note>
  ポーリングは **公式 AWS SDK** を使用して GuardDuty API（`ListDetectors`、
  `ListFindings`、`GetFindings`）を呼び出します。
</Note>

## 機能

| 機能                   | 方向     | 説明                                                       |
| -------------------- | ------ | -------------------------------------------------------- |
| **検出結果のポーリング（pull）** | インバウンド | CaseBender がスケジュールに基づき GuardDuty API を照会し、新しい検出結果を取り込みます |
| 検出結果の取り込み（push）      | インバウンド | EventBridge が検出結果を取り込みエンドポイントへ転送します                      |
| 観測対象の抽出              | インバウンド | IP、ドメイン、アクセスキー、S3 バケット、インスタンス IP                         |
| MITRE ATT\&CK 相関     | インバウンド | 検出結果タイプがタクティク/テクニックにマッピングされます                            |
| 攻撃分類                 | インバウンド | 検出結果が分類され、修復ガイダンスが付与されます                                 |

## 前提条件

<Steps>
  <Step title="GuardDuty を有効化">
    監視したい AWS リージョンで GuardDuty を有効にする必要があります。
  </Step>

  <Step title="IAM ユーザー / アクセスキーを作成">
    `guardduty:ListDetectors`、`guardduty:ListFindings`、`guardduty:GetFindings` を許可するポリシーを
    持つ IAM プリンシパルを作成します。access key ID + secret を生成します。
  </Step>

  <Step title="ネットワーク送信">
    CaseBender のポーラーがリージョンの GuardDuty API エンドポイント
    （`guardduty.<region>.amazonaws.com`）に到達できる必要があります。
  </Step>
</Steps>

## CaseBender で統合を構成

<Steps>
  <Step title="統合カタログを開く">
    **Settings → Integrations → Create** に移動し、**Cloud Security** カテゴリの **AWS GuardDuty**
    を選択します。
  </Step>

  <Step title="AWS 認証情報を入力">
    | フィールド                 | 説明                                     |
    | --------------------- | -------------------------------------- |
    | AWS Access Key ID     | IAM の access key ID                    |
    | AWS Secret Access Key | IAM の secret access key                |
    | AWS Region            | GuardDuty が有効なリージョン（例: `us-east-1`）    |
    | Detector ID（任意）       | 空欄の場合はリージョンから自動検出                      |
    | Minimum severity（任意）  | GuardDuty 深刻度 1–8.9。この値以上の検出結果のみプルされます |
  </Step>

  <Step title="自動ポーリングを有効にする（推奨）">
    | オプション                         | 効果                                  |
    | ----------------------------- | ----------------------------------- |
    | `pollingEnabled`              | 検出結果のスケジュール取得を有効化                   |
    | `pollingIntervalMinutes`      | ポーリング間隔（既定 `5`）                     |
    | `pollingInitialLookbackHours` | 初回実行時、この範囲内に更新された検出結果を取り込む（既定 `24`） |
    | `pollMaxItemsPerRun`          | 実行あたりの取り込み件数の安全上限（既定 `500`）         |
  </Step>

  <Step title="ケースの自動作成を構成">
    | オプション                | 効果                                |
    | -------------------- | --------------------------------- |
    | `autoCreateCases`    | 各検出結果を **ケース** に昇格（検出結果 ID で重複排除） |
    | `minSeverityForCase` | この深刻度以上の場合のみケースを自動作成              |
  </Step>
</Steps>

## インバウンド（自動ポーリング）

<Steps>
  <Step title="スケジュール取得">
    各間隔で、CaseBender は前回のカーソル以降に更新された検出結果 ID を列挙し（任意で最小深刻度で
    フィルタリング）、完全な検出結果を取得します。初回実行時は `pollingInitialLookbackHours` 以内に
    更新された検出結果が取り込まれます。
  </Step>

  <Step title="カーソル + 重複排除">
    CaseBender はカーソルを最新の `updatedAt` まで進めます。検出結果は **検出結果 ID で重複排除**
    されるため、ウィンドウが重なっても重複は作成されません。
  </Step>

  <Step title="正規化">
    各検出結果は、観測対象、MITRE タクティク、攻撃カテゴリ、修復ガイダンスを含む CaseBender の
    アラートに正規化されます。
  </Step>
</Steps>

<Info>
  ポーリングは CaseBender のバックグラウンドポーリングサービスで実行されます。マルチリージョンの
  カバレッジには、リージョンごとに GuardDuty 統合を作成してください。
</Info>

## インバウンド（EventBridge Webhook / プッシュ）

代替として、EventBridge ルール（API 送信先付き）が検出結果を次へ POST できます。

```
POST https://<your-casebender-domain>/api/v1/ingest/guardduty
```

リクエストは `x-api-key` ヘッダー内の統合 **API キー** で認証されます。生の検出結果と EventBridge
ラッパー `{ "detail": { ... } }` の両方を受け付けます。

## セキュリティ上の考慮事項

* **最小権限** — 上記の 3 つの読み取り専用 GuardDuty アクションのみを付与してください。
* **シークレットの取り扱い** — 組織のポリシーに従って IAM アクセスキーをローテーションし、専用の
  統合ユーザーに割り当てたキーを使用してください。
* **ネットワーク** — 送信をリージョンの GuardDuty エンドポイントに制限してください。

## トラブルシューティング

<AccordionGroup>
  <Accordion title="検出器（detector）が見つからない">
    構成したリージョンで GuardDuty が有効であることを確認するか、Detector ID を明示的に設定して
    ください。
  </Accordion>

  <Accordion title="ポーリングは有効だが検出結果が表示されない">
    IAM キーに `ListDetectors`、`ListFindings`、`GetFindings` があることを確認してください。リージョン
    と、カーソルより新しい検出結果の有無を確認します。初回実行時は `pollingInitialLookbackHours`
    以内の検出結果のみが取り込まれます。

    **CaseBender のすべてのサービスが稼働していることを確認してください** — Docker では
    `docker compose ps` で `worker` と `misp-processor` サービスが `Up` である必要があります。
  </Accordion>

  <Accordion title="AccessDenied エラー">
    IAM ポリシーに必要なアクションのいずれかが欠けているか、キーが想定と異なるアカウント/リージョン
    に属しています。
  </Accordion>
</AccordionGroup>

## 関連ドキュメント

* [統合の概要](./introduction.mdx)
* [AWS GuardDuty ドキュメント](https://docs.aws.amazon.com/guardduty/)
