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

> Acquisisci i finding di Google Cloud Security Command Center in CaseBender tramite polling automatico (pull) o webhook di notifica (push).

## Panoramica

L'integrazione di Google Cloud Security Command Center (SCC) (**INT-009**) acquisisce i finding di
SCC in CaseBender e li trasforma in avvisi (ed eventualmente casi).

<CardGroup cols={2}>
  <Card title="Polling automatico (pull)" icon="arrow-right-to-bracket">
    CaseBender estrae nuovi finding direttamente da SCC in modo pianificato
    utilizzando un account di servizio — senza notifica Pub/Sub.
  </Card>

  <Card title="Webhook di notifica (push)" icon="bolt">
    In alternativa, una notifica SCC (tramite Pub/Sub + Cloud Function) inoltra i
    finding all'endpoint di acquisizione di CaseBender.
  </Card>
</CardGroup>

<Tip>
  **Consigliato: abilita il polling automatico.** Richiede solo un account di
  servizio in sola lettura e nessun endpoint in entrata. Vedi
  [Polling automatico](#entrata-polling-automatico).
</Tip>

<Note>
  Il polling utilizza l'**SDK Google Cloud ufficiale** (`@google-cloud/security-center`)
  per enumerare i finding tramite l'API v1 di SCC.
</Note>

## Funzionalità

| Funzionalità                    | Direzione | Descrizione                                                                               |
| ------------------------------- | --------- | ----------------------------------------------------------------------------------------- |
| **Polling dei finding (pull)**  | Entrata   | CaseBender interroga l'API di SCC in modo pianificato e acquisisce i nuovi finding ACTIVE |
| Acquisizione dei finding (push) | Entrata   | La notifica Pub/Sub inoltra i finding all'endpoint di acquisizione                        |
| Estrazione di osservabili       | Entrata   | IP e domini dagli indicatori del finding                                                  |
| Etichettatura per categoria     | Entrata   | La categoria, la classe e il tipo di risorsa del finding diventano tag                    |

## Prerequisiti

<Steps>
  <Step title="Crea un account di servizio">
    In IAM di Google Cloud, crea un account di servizio e scarica una **chiave JSON**. Concedigli il
    ruolo **Security Center Findings Viewer** (`roles/securitycenter.findingsViewer`) a livello di
    organizzazione o progetto.
  </Step>

  <Step title="Raccogli l'ID di organizzazione o progetto">
    Annota il tuo **ID organizzazione** numerico (consigliato) o un **ID progetto**.
  </Step>

  <Step title="Uscita di rete">
    Il poller di CaseBender deve raggiungere `securitycenter.googleapis.com` e
    `oauth2.googleapis.com`.
  </Step>
</Steps>

## Configurare l'integrazione in CaseBender

<Steps>
  <Step title="Apri il catalogo delle integrazioni">
    Vai su **Settings → Integrations → Create** e scegli **Google Cloud SCC** nella categoria
    **Cloud Security**.
  </Step>

  <Step title="Inserisci le credenziali GCP">
    | Campo                      | Descrizione                                                         |
    | -------------------------- | ------------------------------------------------------------------- |
    | Organization ID            | ID organizzazione GCP numerico                                      |
    | Project ID (facoltativo)   | Ripiega sui finding a livello di progetto se non c'è organizzazione |
    | Service Account Key (JSON) | Incolla la chiave JSON completa                                     |
  </Step>

  <Step title="Abilita il polling automatico (consigliato)">
    | Opzione                       | Effetto                                                                                   |
    | ----------------------------- | ----------------------------------------------------------------------------------------- |
    | `pollingEnabled`              | Attiva l'estrazione pianificata dei finding                                               |
    | `pollingIntervalMinutes`      | Frequenza di polling (predefinito `5`)                                                    |
    | `pollingInitialLookbackHours` | Alla prima esecuzione, importa i finding aggiornati in questa finestra (predefinito `24`) |
    | `pollMaxItemsPerRun`          | Limite di sicurezza di elementi per esecuzione (predefinito `500`)                        |
  </Step>

  <Step title="Configura la creazione automatica dei casi">
    | Opzione              | Effetto                                                         |
    | -------------------- | --------------------------------------------------------------- |
    | `autoCreateCases`    | Promuove ogni finding a **Caso** (deduplicato per nome finding) |
    | `minSeverityForCase` | Crea automaticamente casi solo a partire da questa gravità      |
  </Step>
</Steps>

## Entrata (polling automatico)

<Steps>
  <Step title="Estrazione pianificata">
    A ogni intervallo, CaseBender enumera i finding ACTIVE con `eventTime` pari o successivo
    all'ultimo cursore, ordinati per ora dell'evento. Alla prima esecuzione vengono importati i
    finding entro `pollingInitialLookbackHours`.
  </Step>

  <Step title="Cursore + deduplicazione">
    CaseBender avanza il cursore fino all'`eventTime` più recente. I finding vengono **deduplicati
    per nome finding**, quindi finestre sovrapposte non creano mai duplicati.
  </Step>

  <Step title="Normalizzazione">
    Ogni finding viene normalizzato in un avviso di CaseBender con osservabili e tag di categoria.
  </Step>
</Steps>

<Info>
  Il polling viene eseguito nel servizio di polling in background di CaseBender. Assicurati che
  possa raggiungere `securitycenter.googleapis.com` (direttamente o tramite il tuo proxy).
</Info>

## Entrata (webhook di notifica / push)

In alternativa, una configurazione di notifica SCC (Pub/Sub → Cloud Function) può eseguire un POST
dei finding verso:

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

Le richieste sono autenticate con l'**API key** di integrazione nell'intestazione `x-api-key`. È
prevista la forma di payload `{ "finding": { ... }, "resource": { ... } }`.

## Considerazioni sulla sicurezza

* **Privilegio minimo** — concedi solo **Security Center Findings Viewer**.
* **Gestione dei segreti** — la chiave JSON dell'account di servizio è memorizzata nelle
  impostazioni dell'integrazione; ruotala secondo la policy della tua organizzazione e preferisci un
  account di servizio di integrazione dedicato.
* **Rete** — limita l'uscita a `securitycenter.googleapis.com` e `oauth2.googleapis.com`.

## Risoluzione dei problemi

<AccordionGroup>
  <Accordion title="La chiave dell'account di servizio non è JSON valido">
    Incolla l'intero contenuto del file di chiave JSON, comprese le parentesi graffe che lo
    racchiudono.
  </Accordion>

  <Accordion title="Il polling è abilitato ma non appaiono finding">
    Conferma che l'account di servizio abbia il ruolo Findings Viewer sull'organizzazione/progetto
    configurato e che esistano finding ACTIVE più recenti del cursore. Alla prima esecuzione vengono
    importati solo i finding entro `pollingInitialLookbackHours`.

    **Assicurati che tutti i servizi di CaseBender siano in esecuzione** — con Docker,
    `docker compose ps` deve mostrare i servizi `worker` e `misp-processor` come `Up`.
  </Accordion>

  <Accordion title="Errori PermissionDenied">
    All'account di servizio manca `securitycenter.findings.list` sull'ambito richiesto, oppure l'ID
    di organizzazione/progetto è errato.
  </Accordion>
</AccordionGroup>

## Documentazione correlata

* [Panoramica delle integrazioni](./introduction.mdx)
* [Documentazione di Security Command Center](https://cloud.google.com/security-command-center/docs)
