Raccogliere i log di controllo di Tanium
Questo documento spiega come importare i log di controllo Tanium in Google Security Operations utilizzando Amazon S3 tramite la funzionalità di esportazione S3 nativa di Tanium Connect. Il parser estrae i log, inizialmente cancellando 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 a 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 degli 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 con privilegi ad AWS (S3, IAM)
Crea un bucket Amazon S3
- Apri la console Amazon S3.
- Se necessario, puoi modificare la regione.
- Dalla barra di navigazione, seleziona la regione in cui vuoi che si trovino i log di controllo 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 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 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 > Criterio del bucket.
Nell'editor delle policy del 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:
- Modifica
YOUR_ACCOUNT_ID
con il tuo ID account AWS. - Se è diverso, modifica
tanium-audit-logs
con il nome del bucket effettivo. - Modifica
tanium-connect-s3-user
con il tuo nome utente IAM effettivo, se diverso.
- Modifica
Fai clic su Salva.
Configurare Tanium Connect per l'esportazione S3
Crea una connessione AWS S3 in Tanium Connect
- Accedi alla console Tanium come amministratore.
- Vai a Tanium Connect > Connessioni.
- 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.
- Livello log: seleziona Informazioni (impostazione predefinita) o modificalo in base alle esigenze.
- Nome: inserisci un nome descrittivo (ad esempio,
Configurare l'origine della connessione
- Nella sezione Configurazione, per Origine, seleziona Tanium Audit.
- Configura le impostazioni dell'origine di controllo:
- Giorni di cronologia recuperati: inserisci il numero di giorni di dati di controllo storici da recuperare (ad esempio,
7
per una settimana). - Tipi di controllo: seleziona i tipi di controllo che vuoi esportare. Scegli tra:
- Cronologia azioni: azioni emesse dagli operatori della console.
- Autenticazione: eventi di autenticazione utente.
- Contenuti: modifiche ai contenuti.
- Gruppi: modifiche ai gruppi di computer.
- Pacchi: attività relative ai pacchi.
- Sensori: modifiche ai sensori.
- Impostazioni di sistema: modifiche alla configurazione del sistema.
- Utenti: attività di gestione degli utenti.
- Giorni di cronologia recuperati: inserisci il numero di giorni di dati di controllo storici da recuperare (ad esempio,
Configura la destinazione AWS S3
- Per Destinazione, seleziona AWS S3.
- Fornisci i seguenti dettagli di configurazione:
- Nome destinazione: inserisci un nome (ad esempio
Google SecOps S3 Bucket
). - Chiave di accesso AWS: inserisci l'ID chiave di accesso dell'utente IAM creato in precedenza.
- 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
Configurare 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 i log di controllo vengano esportati nel bucket S3.
(Facoltativo) Crea chiavi e utenti IAM di sola lettura per Google SecOps
- Vai alla console AWS > IAM > Utenti > Aggiungi utenti.
- 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 le norme direttamente > Crea norma.
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 criterio > 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 i log di controllo di Tanium
- Vai a Impostazioni SIEM > Feed.
- Fai clic su + Aggiungi nuovo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
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 nell'ultimo numero di giorni. Il valore predefinito è 180 giorni.
- ID chiave di accesso: chiave di accesso utente con accesso al bucket S3 (dall'utente di sola lettura creato sopra).
- Chiave di accesso segreta: chiave segreta dell'utente con accesso al bucket S3 (dell'utente di sola lettura creato sopra).
- 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 nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
Campo log | Mappatura UDM | Logic |
---|---|---|
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 della coppia chiave-valore. |
details |
principal.user.attribute.labels[authentication_type].value |
Estratto dal campo details utilizzando l'analisi della coppia 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 "ID host:". |
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 su "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". Codificato in modo permanente su "TANIUM_AUDIT". Codificato in modo permanente su "sicurezza informatica". Codificato in modo permanente 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 il 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 . |
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.