Raccogli gli audit log di Tanium
Questo documento spiega come importare gli audit log di Tanium in Google Security Operations utilizzando Amazon S3 con la funzionalità di esportazione S3 nativa di Tanium Connect. Il parser estrae i log, cancellando inizialmente numerosi campi predefiniti. Quindi, analizza il messaggio di log utilizzando grok e il filtro json, estraendo campi come timestamp, IP del dispositivo e dettagli di controllo. Il parser mappa questi campi estratti all'UDM, gestendo vari tipi di dati e logica condizionale per compilare i campi UDM appropriati in base alla presenza e ai valori di attributi specifici dell'audit log di Tanium.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Accesso privilegiato a Tanium Connect e Tanium Console
- Accesso privilegiato ad AWS (S3, IAM)
Crea un bucket Amazon S3
- Apri la console Amazon S3.
- Se necessario, puoi modificare la Regione.
- Nella barra di navigazione, seleziona la Regione in cui vuoi che risiedano gli audit log di Tanium.
- Fai clic su Crea bucket.
- Nome bucket: inserisci un nome significativo per il bucket (ad esempio
tanium-audit-logs). - Regione: seleziona la regione che preferisci (ad esempio
us-east-1). - Fai clic su Crea.
- Nome bucket: inserisci un nome significativo per il bucket (ad esempio
Crea un utente IAM con accesso completo ad Amazon S3
- Apri la console IAM.
- Fai clic su Utenti > Aggiungi utente.
- Inserisci un nome utente (ad esempio
tanium-connect-s3-user). - Seleziona Accesso programmatico e/o Accesso alla Console di gestione AWS in base alle tue esigenze.
- Seleziona Password generata automaticamente o Password personalizzata.
- Fai clic su Avanti: Autorizzazioni.
- Scegli Collega direttamente i criteri esistenti.
- Cerca e seleziona la policy AmazonS3FullAccess per l'utente.
- Fai clic su Avanti: Tag.
- Fai clic su Successivo: esamina.
- Fai clic su Crea utente.
- Copia e salva l'ID della chiave di accesso e la chiave di accesso segreta per riferimento futuro.
Configura le autorizzazioni sul bucket Amazon S3
- Nella console Amazon S3, scegli il bucket che hai creato in precedenza.
- Fai clic su Autorizzazioni > Policy del bucket.
Nell'Editor policy bucket, aggiungi la seguente policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::YOUR_ACCOUNT_ID:user/tanium-connect-s3-user" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::tanium-audit-logs", "arn:aws:s3:::tanium-audit-logs/*" ] } ] }Sostituisci le seguenti variabili:
- Sostituisci
YOUR_ACCOUNT_IDcon l'ID account AWS. - Sostituisci
tanium-audit-logscon il nome effettivo del bucket, se diverso. - Sostituisci
tanium-connect-s3-usercon il tuo nome utente IAM effettivo, se diverso.
- Sostituisci
Fai clic su Salva.
Configura Tanium Connect per l'esportazione in S3
Crea una connessione AWS S3 in Tanium Connect
- Accedi alla Console Tanium come amministratore.
- Vai a Tanium Connect > Connections.
- Fai clic su Crea connessione.
- Nella sezione Informazioni generali, fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome descrittivo (ad esempio
Tanium Audit to S3). - Descrizione: inserisci una descrizione significativa (ad esempio,
Export Tanium audit logs to S3 for Google SecOps ingestion). - Attiva: seleziona questa opzione per attivare la connessione.
- Log Level (Livello di log): seleziona Information (Informazioni) (impostazione predefinita) o modifica in base alle esigenze.
- Nome: inserisci un nome descrittivo (ad esempio
Configura l'origine della connessione
- Nella sezione Configurazione, per Origine, seleziona Tanium Audit.
- Configura le impostazioni dell'origine di controllo:
- Days of History Retrieved (Giorni di cronologia recuperati): inserisci il numero di giorni di dati di controllo storici da recuperare (ad esempio,
7per una settimana). - Tipi di controllo: seleziona i tipi di controllo che vuoi esportare. Scegli tra:
- Cronologia azioni: azioni eseguite dagli operatori della console.
- Autenticazione: eventi di autenticazione utente.
- Contenuti: modifiche ai contenuti.
- Gruppi: modifiche ai gruppi di computer.
- Pacchetti: attività relative ai pacchetti.
- Sensori: modifiche ai sensori.
- Impostazioni di sistema: modifiche alla configurazione del sistema.
- Utenti: attività di gestione degli utenti.
- Days of History Retrieved (Giorni di cronologia recuperati): inserisci il numero di giorni di dati di controllo storici da recuperare (ad esempio,
Configura la destinazione AWS S3
- In Destinazione, seleziona AWS S3.
- Fornisci i seguenti dettagli di configurazione:
- Nome destinazione: inserisci un nome (ad esempio
Google SecOps S3 Bucket). - AWS Access Key (Chiave di accesso AWS): inserisci l'ID chiave di accesso dell'utente IAM creato in precedenza.
- AWS Secret Key (Chiave segreta AWS): inserisci la chiave di accesso segreta dell'utente IAM creato in precedenza.
- Nome bucket: inserisci il nome del bucket S3 (ad esempio
tanium-audit-logs). - Percorso del bucket: facoltativo. Inserisci un prefisso del percorso (ad esempio
tanium/audit/). - Regione: seleziona la regione AWS in cui si trova il bucket (ad esempio
us-east-1).
- Nome destinazione: inserisci un nome (ad esempio
Configura il formato e la pianificazione
- Nella sezione Formato, configura il formato di output:
- Tipo di formato: seleziona JSON.
- Includi intestazioni di colonna: seleziona questa opzione se vuoi includere le intestazioni di colonna.
- Genera documento: deseleziona questa opzione per inviare dati JSON non elaborati.
- Nella sezione Pianificazione, configura quando viene eseguita la connessione:
- Tipo di pianificazione: seleziona Cron.
- Espressione cron: inserisci un'espressione cron per le esportazioni regolari (ad esempio,
0 */1 * * *per le esportazioni orarie). - Data di inizio: imposta la data di inizio della pianificazione.
- Fai clic su Salva modifiche.
Testa ed esegui la connessione
- Nella pagina Panoramica di Connect, vai a Connessioni.
- Fai clic sulla connessione che hai creato (Tanium Audit to S3).
- Fai clic su Esegui ora per testare la connessione.
- Conferma di voler eseguire la connessione.
- Monitora lo stato della connessione e verifica che gli audit log vengano esportati nel tuo bucket S3.
(Facoltativo) Crea un utente e chiavi IAM di sola lettura per Google SecOps
- Vai a AWS Console > IAM > Users > Add users.
- Fai clic su Add users (Aggiungi utenti).
- Fornisci i seguenti dettagli di configurazione:
- Utente: inserisci
secops-reader. - Tipo di accesso: seleziona Chiave di accesso - Accesso programmatico.
- Utente: inserisci
- Fai clic su Crea utente.
- Collega la criterio per la lettura minima (personalizzata): Utenti > secops-reader > Autorizzazioni > Aggiungi autorizzazioni > Collega direttamente le policy > Crea policy.
Nell'editor JSON, inserisci la seguente policy:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::tanium-audit-logs/*" }, { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": "arn:aws:s3:::tanium-audit-logs" } ] }Imposta il nome su
secops-reader-policy.Vai a Crea policy > cerca/seleziona > Avanti > Aggiungi autorizzazioni.
Vai a Credenziali di sicurezza > Chiavi di accesso > Crea chiave di accesso.
Scarica il file CSV (questi valori vengono inseriti nel feed).
Configura un feed in Google SecOps per importare gli audit log di Tanium
- Vai a Impostazioni > Gestione dei dati > Feed. Se utilizzi una piattaforma solo SIEM, vai a Impostazioni > Feed.
- Fai clic su + Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad es.
Tanium Audit logs). - Seleziona Amazon S3 V2 come Tipo di origine.
- Seleziona Tanium Audit come Tipo di log.
- Fai clic su Avanti.
- Specifica i valori per i seguenti parametri di input:
- URI S3:
s3://tanium-audit-logs/tanium/audit/(modifica il percorso se hai utilizzato un nome o un percorso del bucket diverso). - Opzioni di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze.
- Età massima del file: includi i file modificati negli ultimi giorni. Il valore predefinito è 180 giorni.
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3 (dell'utente con autorizzazione di sola lettura creato in precedenza).
- Secret Access Key: chiave segreta dell'utente con accesso al bucket S3 (dell'utente con autorizzazione di sola lettura creato in precedenza).
- Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
- Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
- URI S3:
- Fai clic su Avanti.
- Controlla la nuova configurazione del feed di notizie nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
ActionId |
metadata.product_log_id |
Mappato direttamente dal campo ActionId. |
ActionName |
security_result.action_details |
Mappato direttamente dal campo ActionName. |
Approver |
additional.fields[Approver].value.string_value |
Mappato direttamente dal campo Approver. |
Approver |
principal.user.userid |
Mappato dal campo Approver se Issuer non è presente. |
audit_name |
metadata.description |
Mappato direttamente dal campo audit_name. |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
Mappato direttamente dal campo audit_row_id. |
audit_type |
additional.fields[audit_type].value.string_value |
Mappato direttamente dal campo audit_type. |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
Mappato direttamente dal campo authentication_type estratto dal campo details. |
Command |
principal.process.command_line |
Mappato direttamente dal campo Command dopo la decodifica dell'URL. |
creation_time |
target.resource.attribute.creation_time |
Mappato direttamente dal campo creation_time. |
details |
network.session_id |
Estratto dal campo details utilizzando l'analisi delle coppie chiave-valore. |
details |
principal.user.attribute.labels[authentication_type].value |
Estratto dal campo details utilizzando l'analisi delle coppie chiave-valore. |
details |
principal.asset.ip, principal.ip |
L'indirizzo IP viene estratto dal campo details utilizzando l'analisi delle coppie chiave-valore e mappato sia a principal.asset.ip sia a principal.ip. |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
Mappato direttamente dal campo DistributeOver. |
dvc_ip |
intermediary.hostname |
Mappato direttamente dal campo dvc_ip estratto dal messaggio syslog. |
dvc_ip |
observer.ip |
Mappato direttamente dal campo dvc_ip se logstash.collect.host non è presente. |
Expiration |
additional.fields[Expiration].value.string_value |
Mappato direttamente dal campo Expiration. |
host.architecture |
target.asset.hardware.cpu_platform |
Mappato direttamente dal campo host.architecture. |
host.id |
target.asset.asset_id |
Mappato direttamente dal campo host.id, con il prefisso "Host ID:". |
host.ip |
target.ip |
Mappato direttamente dal campo host.ip. |
host.mac |
target.mac |
Mappato direttamente dal campo host.mac. |
host.name |
target.hostname |
Mappato direttamente dal campo host.name se host.hostname non è presente. |
host.os.kernel |
target.platform_patch_level |
Mappato direttamente dal campo host.os.kernel. |
host.os.name |
additional.fields[os_name].value.string_value |
Mappato direttamente dal campo host.os.name. |
host.os.version |
target.platform_version |
Mappato direttamente dal campo host.os.version. |
InsertTime |
additional.fields[InsertTime].value.string_value |
Mappato direttamente dal campo InsertTime. |
Issuer |
additional.fields[Issuer].value.string_value |
Mappato direttamente dal campo Issuer. |
Issuer |
principal.user.userid |
Mappato direttamente dal campo Issuer, se presente. |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
Mappato direttamente dal campo last_modified_by. |
log.source.address |
principal.ip |
L'indirizzo IP viene estratto dal campo log.source.address e mappato a principal.ip. |
log.source.address |
principal.port |
La porta viene estratta dal campo log.source.address. |
logstash.collect.host |
observer.ip |
Mappato direttamente dal campo logstash.collect.host, se presente. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Mappato direttamente dal campo logstash.collect.timestamp. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Mappato direttamente dal campo logstash.ingest.timestamp. |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Mappato direttamente dal campo logstash.irm_environment. |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Mappato direttamente dal campo logstash.irm_region. |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Mappato direttamente dal campo logstash.irm_site. |
logstash.process.host |
intermediary.hostname |
Mappato direttamente dal campo logstash.process.host. |
message |
dvc_ip, json_data, timestamp |
Analizzato utilizzando grok per estrarre dvc_ip, json_data e timestamp. |
modification_time |
target.resource.attribute.last_update_time |
Mappato direttamente dal campo modification_time. |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
Mappato direttamente dal campo modifier_user_id. |
object_id |
target.resource.product_object_id |
Mappato direttamente dal campo object_id. |
object_name |
target.resource.name |
Mappato direttamente dal campo object_name. |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
Mappato direttamente dal campo object_type_name. |
PackageName |
additional.fields[PackageName].value.string_value |
Mappato direttamente dal campo PackageName. |
SourceId |
additional.fields[SourceId].value.string_value |
Mappato direttamente dal campo SourceId. |
StartTime |
additional.fields[StartTime].value.string_value |
Mappato direttamente dal campo StartTime. |
Status |
security_result.action |
Mappato a "BLOCK" se Status è "Closed", "ALLOW" se Status è "Open". |
Status |
security_result.summary |
Mappato direttamente dal campo Status. |
tanium_audit_type |
metadata.product_event_type |
Mappato direttamente dal campo tanium_audit_type. |
timestamp |
metadata.event_timestamp |
Mappato direttamente dal campo timestamp estratto dal messaggio syslog o dal campo message. |
type |
additional.fields[type].value.string_value |
Mappato direttamente dal campo type. |
type_name |
metadata.product_event_type |
Mappato direttamente dal campo type_name. |
User |
principal.user.userid |
Mappato direttamente dal campo User. Determinato dalla logica del parser in base alla presenza di src_ip, has_target e has_user. Può essere "NETWORK_CONNECTION", "USER_RESOURCE_ACCESS", "STATUS_UPDATE" o "GENERIC_EVENT". Impostato come hardcoded su "TANIUM_AUDIT". Impostato come hardcoded su "cybersecurity". Impostato come hardcoded su "TANIUM_AUDIT". |
@version |
metadata.product_version |
Mappato direttamente dal campo @version. |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
Mappato direttamente dal campo agent.ephemeral_id. |
agent.id |
observer.asset_id |
Mappato direttamente dal campo agent.id, con prefisso "filebeat:". |
agent.type |
observer.application |
Mappato direttamente dal campo agent.type. |
agent.version |
observer.platform_version |
Mappato direttamente dal campo agent.version. |
Comment |
security_result.description |
Mappato direttamente dal campo Comment. |
host.hostname |
target.hostname |
Mappato direttamente dal campo host.hostname, se presente. |
input.type |
network.ip_protocol |
Mappato a "TCP" se input.type è "tcp" o "TCP". |
syslog_severity |
security_result.severity |
Mappato su "HIGH" se syslog_severity è "error" o "warning", "MEDIUM" se è "notice", "LOW" se è "information" o "info". |
syslog_severity |
security_result.severity_details |
Mappato direttamente dal campo syslog_severity. |
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.