> ## 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.

# Google Cloud SCC

> 自動ポーリング（pull）または通知 Webhook（push）で Google Cloud Security Command Center の検出結果を CaseBender に取り込みます。

## 概要

Google Cloud Security Command Center（SCC）統合（**INT-009**）は、SCC の検出結果（findings）を
CaseBender に取り込み、アラート（および任意でケース）に変換します。

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

  <Card title="通知 Webhook（push）" icon="bolt">
    代替として、SCC 通知（Pub/Sub + Cloud Function 経由）が検出結果を CaseBender の
    取り込みエンドポイントへ転送します。
  </Card>
</CardGroup>

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

<Note>
  ポーリングは **公式 Google Cloud SDK**（`@google-cloud/security-center`）を使用して
  SCC v1 API で検出結果を列挙します。
</Note>

## 機能

| 機能                   | 方向     | 説明                                                          |
| -------------------- | ------ | ----------------------------------------------------------- |
| **検出結果のポーリング（pull）** | インバウンド | CaseBender がスケジュールに基づき SCC API を照会し、新しい ACTIVE な検出結果を取り込みます |
| 検出結果の取り込み（push）      | インバウンド | Pub/Sub 通知が検出結果を取り込みエンドポイントへ転送します                           |
| 観測対象の抽出              | インバウンド | 検出結果のインジケーターからの IP とドメイン                                    |
| カテゴリによるタグ付け          | インバウンド | 検出結果のカテゴリ、クラス、リソースタイプがタグになります                               |

## 前提条件

<Steps>
  <Step title="サービスアカウントを作成">
    Google Cloud IAM でサービスアカウントを作成し、**JSON キー** をダウンロードします。組織または
    プロジェクトレベルで **Security Center Findings Viewer** ロール
    （`roles/securitycenter.findingsViewer`）を付与します。
  </Step>

  <Step title="組織またはプロジェクト ID を収集">
    数値の **組織 ID**（推奨）または **プロジェクト ID** をメモします。
  </Step>

  <Step title="ネットワーク送信">
    CaseBender のポーラーが `securitycenter.googleapis.com` と `oauth2.googleapis.com` に到達できる
    必要があります。
  </Step>
</Steps>

## CaseBender で統合を構成

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

  <Step title="GCP 認証情報を入力">
    | フィールド                      | 説明                             |
    | -------------------------- | ------------------------------ |
    | Organization ID            | 数値の GCP 組織 ID                  |
    | Project ID（任意）             | 組織がない場合はプロジェクトレベルの検出結果にフォールバック |
    | Service Account Key (JSON) | 完全な JSON キーを貼り付け               |
  </Step>

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

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

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

<Steps>
  <Step title="スケジュール取得">
    各間隔で、CaseBender は `eventTime` が前回のカーソル以降の ACTIVE な検出結果をイベント時刻順で
    列挙します。初回実行時は `pollingInitialLookbackHours` 以内の検出結果が取り込まれます。
  </Step>

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

  <Step title="正規化">
    各検出結果は、観測対象とカテゴリタグを含む CaseBender のアラートに正規化されます。
  </Step>
</Steps>

<Info>
  ポーリングは CaseBender のバックグラウンドポーリングサービスで実行されます。`securitycenter.googleapis.com`
  に（直接またはプロキシ経由で）到達できることを確認してください。
</Info>

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

代替として、SCC 通知の構成（Pub/Sub → Cloud Function）が検出結果を次へ POST できます。

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

リクエストは `x-api-key` ヘッダー内の統合 **API キー** で認証されます。ペイロード形式は
`{ "finding": { ... }, "resource": { ... } }` を想定しています。

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

* **最小権限** — **Security Center Findings Viewer** のみを付与してください。
* **シークレットの取り扱い** — サービスアカウントの JSON キーは統合設定に保存されます。組織の
  ポリシーに従ってローテーションし、専用の統合サービスアカウントを使用してください。
* **ネットワーク** — 送信を `securitycenter.googleapis.com` と `oauth2.googleapis.com` に制限して
  ください。

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

<AccordionGroup>
  <Accordion title="サービスアカウントキーが有効な JSON ではない">
    JSON キーファイルの内容全体を、囲む波括弧を含めて貼り付けてください。
  </Accordion>

  <Accordion title="ポーリングは有効だが検出結果が表示されない">
    サービスアカウントが構成した組織/プロジェクトに対して Findings Viewer ロールを持ち、カーソルより
    新しい ACTIVE な検出結果が存在することを確認してください。初回実行時は `pollingInitialLookbackHours`
    以内の検出結果のみが取り込まれます。

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

  <Accordion title="PermissionDenied エラー">
    サービスアカウントに要求されたスコープでの `securitycenter.findings.list` がないか、組織/プロジェクト
    ID が正しくありません。
  </Accordion>
</AccordionGroup>

## 関連ドキュメント

* [統合の概要](./introduction.mdx)
* [Security Command Center ドキュメント](https://cloud.google.com/security-command-center/docs)
