Raccogli i log di Cisco Identity Intelligence
Questo documento spiega come configurare Cisco Identity Intelligence per inviare log a Google Security Operations utilizzando i webhook.
Cisco Identity Intelligence (in precedenza Oort Security) è una piattaforma di rilevamento e risposta alle minacce all'identità che monitora continuamente il comportamento degli utenti, i pattern di autenticazione, l'utilizzo dei dispositivi e i privilegi di accesso nei vari provider di identità. Rileva minacce basate sull'identità, errori di configurazione e violazioni della conformità analizzando l'attività utente, i controlli di sicurezza non riusciti, i punteggi di attendibilità e i comportamenti rischiosi.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso privilegiato a un tenant Cisco Identity Intelligence
- Autorizzazioni amministrative per gestire le integrazioni in Cisco Identity Intelligence
- Accesso alla Google Cloud Console (per la creazione della chiave API)
Crea un feed webhook in Google SecOps
Creare il feed
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Nella pagina successiva, fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
Cisco Identity Intelligence Events). - Seleziona Webhook come Tipo di origine.
- Seleziona Cisco Identity Intelligence come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- Delimitatore di divisione (facoltativo): inserisci
\nper dividere gli eventi su più righe. - Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed
- Delimitatore di divisione (facoltativo): inserisci
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Genera e salva la chiave segreta
Dopo aver creato il feed, devi generare una chiave segreta per l'autenticazione:
- Nella pagina dei dettagli del feed, fai clic su Genera chiave segreta.
- Una finestra di dialogo mostra la chiave segreta.
- Copia e salva la chiave segreta in modo sicuro.
Recuperare l'URL dell'endpoint del feed
- Vai alla scheda Dettagli del feed.
- Nella sezione Endpoint Information (Informazioni sull'endpoint), copia l'URL dell'endpoint del feed.
Il formato dell'URL è:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateo
https://<REGION>-malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreateSalva questo URL per i passaggi successivi.
Fai clic su Fine.
Creare una chiave API Google Cloud
Chronicle richiede una chiave API per l'autenticazione. Crea una chiave API con limitazioni nella Google Cloud Console.
Creare la chiave API
- Vai alla pagina Credenziali della console Google Cloud.
- Seleziona il tuo progetto (quello associato alla tua istanza di Chronicle).
- Fai clic su Crea credenziali > Chiave API.
- Viene creata una chiave API e visualizzata in una finestra di dialogo.
- Fai clic su Modifica chiave API per limitare la chiave.
Limitare la chiave API
- Nella pagina delle impostazioni Chiave API:
- Nome: inserisci un nome descrittivo (ad esempio,
Chronicle Webhook API Key)
- Nome: inserisci un nome descrittivo (ad esempio,
- In Limitazioni API:
- Seleziona Limita chiave.
- Nel menu a discesa Seleziona API, cerca e seleziona API Google SecOps (o API Chronicle).
- Fai clic su Salva.
- Copia il valore della chiave API dal campo Chiave API nella parte superiore della pagina.
- Salva la chiave API in modo sicuro.
Configura il webhook Cisco Identity Intelligence
Costruisci l'URL webhook
Combina l'URL dell'endpoint Chronicle e la chiave API:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Esempio:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...
Sostituisci quanto segue:
<ENDPOINT_URL>: l'URL dell'endpoint del feed di Chronicle copiato in precedenza<API_KEY>: la chiave API Google Cloud creata in precedenza<SECRET_KEY>: La chiave segreta del webhook di Chronicle generata in precedenza
Crea una destinazione di notifica webhook in Cisco Identity Intelligence
- Accedi a Cisco Identity Intelligence.
- Vai a Integrazioni.
- Fai clic su Aggiungi integrazione.
- Scorri verso il basso fino alla sezione Webhook.
- Fai clic su Aggiungi target webhook.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio,
Chronicle SIEM Integration). - URL webhook: incolla l'URL dell'endpoint completo con la chiave API e la chiave segreta riportate sopra.
- Authorization Type (Tipo di autorizzazione): seleziona API Key (Chiave API).
- Nome chiave API: inserisci un nome per la chiave (ad esempio,
x-goog-chronicle-auth). - Valore chiave API: inserisci la chiave API Google Cloud.
- Nome: inserisci un nome descrittivo (ad esempio,
- Espandi la sezione Parametri HTTP di chiamata.
- Aggiungi i seguenti parametri con il tipo Intestazione:
- Chiave:
Content-Type, Valore:application/json - Chiave:
Accept, Valore:application/json
- Chiave:
- Nella sezione Utilizza questo target per, seleziona Controllo non riuscito per ricevere notifiche quando i controlli dell'identità rilevano risultati non riusciti.
Fai clic su Salva.
Testare la connessione webhook
- Nella pagina Integrazioni, trova la destinazione di notifica webhook che hai creato.
- Fai clic sul menu con tre puntini sul lato destro della riga.
- Seleziona Testa connettività.
- Verifica che il messaggio di test venga recapitato correttamente.
Attiva il webhook per i controlli dell'identità
Dopo aver creato la destinazione di notifica webhook, devi attivarla per i controlli dell'identità specifici che vuoi monitorare.
- Vai alla pagina dei dettagli del controllo che ti interessa in Cisco Identity Intelligence.
- Espandi il menu a discesa nell'angolo in alto a destra della pagina.
- Seleziona la casella di controllo relativa alla destinazione di notifica webhook che hai creato.
Ripeti l'operazione per ogni controllo che vuoi inviare a Google SecOps.
Per saperne di più, consulta la documentazione del webhook di Cisco Identity Intelligence.
Riferimento ai metodi di autenticazione
I feed webhook di Chronicle supportano più metodi di autenticazione. Scegli il metodo supportato dal tuo fornitore.
Metodo 1: intestazioni personalizzate (consigliato)
Se il tuo fornitore supporta le intestazioni HTTP personalizzate, utilizza questo metodo per una maggiore sicurezza.
Formato della richiesta:
POST <ENDPOINT_URL> HTTP/1.1 Content-Type: application/json x-goog-chronicle-auth: <API_KEY> x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Vantaggi:
- Chiave API e secret non visibili nell'URL
- Più sicuro (le intestazioni non vengono registrate nei log di accesso del server web)
- Metodo preferito quando il fornitore lo supporta
Metodo 2: parametri di query
Se il fornitore non supporta le intestazioni personalizzate, aggiungi le credenziali all'URL.
Formato dell'URL:
<ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY>Esempio:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...&secret=abcd1234...Formato della richiesta:
POST <ENDPOINT_URL>?key=<API_KEY>&secret=<SECRET_KEY> HTTP/1.1 Content-Type: application/json { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Svantaggi:
- Credenziali visibili nell'URL
- Potrebbe essere registrato nei log di accesso del server web
- Meno sicuri degli header
Metodo 3: ibrido (URL + intestazione)
Alcune configurazioni utilizzano la chiave API nell'URL e la chiave segreta nell'intestazione.
Formato della richiesta:
POST <ENDPOINT_URL>?key=<API_KEY> HTTP/1.1 Content-Type: application/json x-chronicle-auth: <SECRET_KEY> { "event": "data", "timestamp": "2025-01-15T10:30:00Z" }
Nomi delle intestazioni di autenticazione
Chronicle accetta i seguenti nomi di intestazione per l'autenticazione:
Per la chiave API:
x-goog-chronicle-auth(consigliata)X-Goog-Chronicle-Auth(senza distinzione tra maiuscole e minuscole)
Per la chiave segreta:
x-chronicle-auth(consigliata)X-Chronicle-Auth(senza distinzione tra maiuscole e minuscole)
Limiti e best practice per i webhook
Limiti per le richieste
| Limite | Valore |
|---|---|
| Dimensioni massime della richiesta | 4 MB |
| QPS max (query al secondo) | 15.000 |
| Timeout richieste | 30 secondi |
| Comportamento di ripetizione | Automatico con backoff esponenziale |
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
| account | account_label.value | Valore copiato direttamente |
| account | account_label.key | Impostato su "account" |
| account_label | security_result.detection_fields | Unito a detection_fields |
| additional_detaildescription.key | additional_detaildescription.key | Impostato su "descrizione dettagliata" |
| detaildescription | additional_detaildescription.value.list_value.values | Unito da detaildescription |
| additional_detaildescription | event.idm.read_only_udm.additional.fields | Unito a additional.fields |
| additional_recommendedaction.key | additional_recommendedaction.key | Impostato su "comportamento consigliato" |
| recommendedAction | additional_recommendedaction.value.list_value.values | Unito da recommendedAction |
| additional_recommendedaction | event.idm.read_only_udm.additional.fields | Unito a additional.fields |
| data1 | usersFailing_label | Valore copiato direttamente |
| data.login | login_label | Valore copiato direttamente |
| detail-type | security_result.summary | Valore copiato direttamente |
| detail.id | security_result.rule_id | Valore copiato direttamente |
| detail.title | security_result.rule_name | Valore copiato direttamente |
| detail.severity | security_result.severity | Valore di detail.severity se in [CRITICAL,ERROR,HIGH,INFORMATIONAL,LOW,MEDIUM], altrimenti MEDIUM se moderato |
| detaildescription | value_array.string_value | Valore copiato direttamente |
| detailsdata.key | add_label.value, add_label.key | Valore di detailsdata.value, chiave "loginDetails %{index} details %{detailindex} %{detailsdata.key}" se non failedSigninDetails o ips |
| detailsdata.value | add_label.value, add_label.key | |
| detailsdata.key | security_result.detection_fields | Unione di add_label se le condizioni sono soddisfatte |
| detailsdata.value | security_result.detection_fields | |
| field_.value | security_result.detection_fields | Uniti per vari campi nidificati in json_array (msg, ipInfo, asn, coordinates, first_event, second_event, locations) con chiavi come "%{index} %{detailindex} %{index1} %{key}" e così via, esclusi ipAddress, ip e così via. |
| field_.key | security_result.detection_fields | |
| id | metadata.product_log_id | Valore copiato direttamente |
| login_label | principal.user.email_addresses | Unito se corrisponde all'espressione regolare dell'email |
| msg.ipAddress | principal.ip | Unito se non vuoto |
| msg.first_event.ip_address | principal.ip | Unito se non vuoto |
| msg.second_event.ip_address | principal.ip | Unito se non vuoto |
| msg_travels_first_event_ip_address | principal.ip | Unito se non vuoto |
| msg_travels_second_event_ip_address | principal.ip | |
| recommendedAction | value_array.string_value | Valore copiato direttamente |
| security_result | event.idm.read_only_udm.security_result | Unito a security_result |
| origine | source_label.value | Valore copiato direttamente |
| origine | source_label.key | Impostato su "source" |
| source_label | event.idm.read_only_udm.src.labels | Unita a src.labels |
| tempo | @timestamp | Analizzato utilizzando il filtro data con ISO8601, RFC 3339, aaaa-MM-ggTHH:mm:ss.SSSSSSZ |
| usersFailing_label | principal.user.email_addresses | Unito se corrisponde all'espressione regolare dell'email |
| versione | metadata.product_version | Valore copiato direttamente |
| has_principal | event.idm.read_only_udm.metadata.event_type | Impostato su "STATUS_UPDATE" se has_principal è true, altrimenti "USER_UNCATEGORIZED" se has_user è true, altrimenti "GENERIC_EVENT" |
| has_user | event.idm.read_only_udm.metadata.event_type | |
| metadata.product_name | metadata.product_name | Impostato su "OORT" |
| metadata.vendor_name | metadata.vendor_name | Impostato su "OORT" |
detail.published |
event.idm.read_only_udm.metadata.collected_timestamp |
Mappato dal log delle modifiche |
detail.login |
event.idm.read_only_udm.principal.user.userid |
Mappato dal log delle modifiche |
detail.userTrustLevel |
event.idm.read_only_udm.principal.user.attribute.labels |
Mappato dal log delle modifiche |
detail.login |
event.idm.read_only_udm.principal.user.user_display_name |
Mappato dal log delle modifiche |
detail.checkTopics |
event.idm.read_only_udm.security_result.category_details |
Mappato dal log delle modifiche |
region |
event.idm.read_only_udm.additional.fields |
Mappato dal log delle modifiche |
detail.checkId |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
detail.checkScope |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
detail.frameworks |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
detail.explainabilityEventIds |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
data.value |
event.idm.read_only_udm.security_result.detection_fields |
Mappato dal log delle modifiche |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.