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

> Ingiera los hallazgos de Google Cloud Security Command Center en CaseBender mediante sondeo automático (pull) o webhook de notificación (push).

## Descripción general

La integración de Google Cloud Security Command Center (SCC) (**INT-009**) ingiere los hallazgos
de SCC en CaseBender y los convierte en alertas (y opcionalmente casos).

<CardGroup cols={2}>
  <Card title="Sondeo automático (pull)" icon="arrow-right-to-bracket">
    CaseBender extrae nuevos hallazgos directamente de SCC de forma programada
    usando una cuenta de servicio — sin notificación de Pub/Sub.
  </Card>

  <Card title="Webhook de notificación (push)" icon="bolt">
    Como alternativa, una notificación de SCC (vía Pub/Sub + Cloud Function)
    reenvía los hallazgos al endpoint de ingesta de CaseBender.
  </Card>
</CardGroup>

<Tip>
  **Recomendado: active el sondeo automático.** Solo requiere una cuenta de
  servicio de solo lectura y ningún endpoint entrante. Véase
  [Sondeo automático](#entrada-sondeo-automatico-recomendado).
</Tip>

<Note>
  El sondeo usa el **SDK oficial de Google Cloud** (`@google-cloud/security-center`) para
  enumerar hallazgos mediante la API v1 de SCC.
</Note>

## Capacidades

| Capacidad                      | Dirección | Descripción                                                                             |
| ------------------------------ | --------- | --------------------------------------------------------------------------------------- |
| **Sondeo de hallazgos (pull)** | Entrante  | CaseBender consulta la API de SCC de forma programada e ingiere nuevos hallazgos ACTIVE |
| Ingesta de hallazgos (push)    | Entrante  | La notificación de Pub/Sub reenvía los hallazgos al endpoint de ingesta                 |
| Extracción de observables      | Entrante  | IP y dominios de los indicadores del hallazgo                                           |
| Etiquetado por categoría       | Entrante  | La categoría, la clase y el tipo de recurso del hallazgo se convierten en etiquetas     |

## Requisitos previos

<Steps>
  <Step title="Crear una cuenta de servicio">
    En IAM de Google Cloud, cree una cuenta de servicio y descargue una **clave JSON**. Otórguele
    el rol **Security Center Findings Viewer** (`roles/securitycenter.findingsViewer`) a nivel de
    organización o proyecto.
  </Step>

  <Step title="Recopilar el ID de organización o proyecto">
    Anote su **ID de organización** numérico (recomendado) o un **ID de proyecto**.
  </Step>

  <Step title="Salida de red">
    El sondeador de CaseBender debe alcanzar `securitycenter.googleapis.com` y
    `oauth2.googleapis.com`.
  </Step>
</Steps>

## Configurar la integración en CaseBender

<Steps>
  <Step title="Abrir el catálogo de integraciones">
    Vaya a **Settings → Integrations → Create** y elija **Google Cloud SCC** en la categoría
    **Cloud Security**.
  </Step>

  <Step title="Introducir las credenciales de GCP">
    | Campo                      | Descripción                                                    |
    | -------------------------- | -------------------------------------------------------------- |
    | Organization ID            | ID de organización numérico de GCP                             |
    | Project ID (opcional)      | Recurre a hallazgos a nivel de proyecto si no hay organización |
    | Service Account Key (JSON) | Pegue la clave JSON completa                                   |
  </Step>

  <Step title="Activar el sondeo automático (recomendado)">
    | Opción                        | Efecto                                                                                            |
    | ----------------------------- | ------------------------------------------------------------------------------------------------- |
    | `pollingEnabled`              | Activa la extracción programada de hallazgos                                                      |
    | `pollingIntervalMinutes`      | Frecuencia de sondeo (por defecto `5`)                                                            |
    | `pollingInitialLookbackHours` | En la primera ejecución, importa hallazgos actualizados dentro de esta ventana (por defecto `24`) |
    | `pollMaxItemsPerRun`          | Límite de seguridad de elementos por ejecución (por defecto `500`)                                |
  </Step>

  <Step title="Configurar la creación automática de casos">
    | Opción               | Efecto                                                                    |
    | -------------------- | ------------------------------------------------------------------------- |
    | `autoCreateCases`    | Promueve cada hallazgo a un **Caso** (deduplicado por nombre de hallazgo) |
    | `minSeverityForCase` | Solo crea casos automáticamente a partir de esta severidad                |
  </Step>
</Steps>

## Entrada (sondeo automático, recomendado)

<Steps>
  <Step title="Extracción programada">
    En cada intervalo, CaseBender enumera los hallazgos ACTIVE con `eventTime` igual o posterior
    al último cursor, ordenados por hora de evento. En la primera ejecución se importan los
    hallazgos dentro de `pollingInitialLookbackHours`.
  </Step>

  <Step title="Cursor + deduplicación">
    CaseBender avanza el cursor hasta el `eventTime` más reciente. Los hallazgos se **deduplican
    por nombre de hallazgo**, por lo que las ventanas superpuestas nunca crean duplicados.
  </Step>

  <Step title="Normalización">
    Cada hallazgo se normaliza como una alerta de CaseBender con observables y etiquetas de
    categoría.
  </Step>
</Steps>

<Info>
  El sondeo se ejecuta en el servicio de sondeo en segundo plano de CaseBender. Asegúrese de que
  pueda alcanzar `securitycenter.googleapis.com` (directamente o a través de su proxy).
</Info>

## Entrada (webhook de notificación / push)

Como alternativa, una configuración de notificación de SCC (Pub/Sub → Cloud Function) puede
hacer POST de los hallazgos a:

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

Las solicitudes se autentican con la **API key** de integración en el encabezado `x-api-key`. Se
espera la forma de carga `{ "finding": { ... }, "resource": { ... } }`.

## Consideraciones de seguridad

* **Privilegio mínimo** — otorgue solo **Security Center Findings Viewer**.
* **Manejo de secretos** — la clave JSON de la cuenta de servicio se almacena en la configuración
  de la integración; rótela según la política de su organización y prefiera una cuenta de
  servicio de integración dedicada.
* **Red** — restrinja la salida a `securitycenter.googleapis.com` y `oauth2.googleapis.com`.

## Solución de problemas

<AccordionGroup>
  <Accordion title="La clave de la cuenta de servicio no es JSON válido">
    Pegue el contenido completo del archivo de clave JSON, incluidas las llaves que lo rodean.
  </Accordion>

  <Accordion title="El sondeo está activado pero no aparecen hallazgos">
    Confirme que la cuenta de servicio tiene el rol Findings Viewer en la organización/proyecto
    que configuró y que existen hallazgos ACTIVE más nuevos que el cursor. En la primera ejecución
    solo se importan hallazgos dentro de `pollingInitialLookbackHours`.

    **Asegúrese de que todos los servicios de CaseBender estén en ejecución** — con Docker,
    `docker compose ps` debe mostrar los servicios `worker` y `misp-processor` como `Up`.
  </Accordion>

  <Accordion title="Errores PermissionDenied">
    La cuenta de servicio carece de `securitycenter.findings.list` en el ámbito solicitado, o el
    ID de organización/proyecto es incorrecto.
  </Accordion>
</AccordionGroup>

## Documentación relacionada

* [Descripción general de integraciones](./introduction.mdx)
* [Documentación de Security Command Center](https://cloud.google.com/security-command-center/docs)
