Tanium-Audit-Logs erfassen
In diesem Dokument wird beschrieben, wie Sie Tanium-Audit-Logs mit Amazon S3 in Google Security Operations aufnehmen. Dazu wird die native S3-Exportfunktion von Tanium Connect verwendet. Der Parser extrahiert die Logs und löscht dabei zuerst zahlreiche Standardfelder. Anschließend wird die Log-Nachricht mit „grok“ und dem JSON-Filter geparst und Felder wie Zeitstempel, Geräte-IP und Prüfdetails werden extrahiert. Der Parser ordnet diese extrahierten Felder dem UDM zu und verarbeitet verschiedene Datentypen und bedingte Logik, um geeignete UDM-Felder basierend auf dem Vorhandensein und den Werten bestimmter Tanium-Audit-Log-Attribute zu füllen.
Hinweise
Prüfen Sie, ob folgende Voraussetzungen erfüllt sind:
- Eine Google SecOps-Instanz
- Privilegierter Zugriff auf Tanium Connect und Tanium Console
- Privilegierter Zugriff auf AWS (S3, IAM)
Amazon S3-Bucket erstellen
- Öffnen Sie die Amazon S3-Konsole.
- Bei Bedarf können Sie die Region ändern.
- Wählen Sie in der Navigationsleiste die Region aus, in der sich Ihre Tanium-Prüfprotokolle befinden sollen.
- Klicken Sie auf Bucket erstellen.
- Bucket-Name: Geben Sie einen aussagekräftigen Namen für den Bucket ein, z. B.
tanium-audit-logs
. - Region: Wählen Sie die gewünschte Region aus (z. B.
us-east-1
). - Klicken Sie auf Erstellen.
- Bucket-Name: Geben Sie einen aussagekräftigen Namen für den Bucket ein, z. B.
IAM-Nutzer mit vollem Zugriff auf Amazon S3 erstellen
- Öffnen Sie die IAM-Konsole.
- Klicken Sie auf Nutzer > Nutzer hinzufügen.
- Geben Sie einen Nutzernamen ein, z. B.
tanium-connect-s3-user
. - Wählen Sie nach Bedarf Programmatic access (Programmgesteuerter Zugriff) und/oder AWS Management Console access (Zugriff auf die AWS Management Console) aus.
- Wählen Sie entweder Automatisch generiertes Passwort oder Benutzerdefiniertes Passwort aus.
- Klicken Sie auf Next: Permissions.
- Wählen Sie Vorhandene Richtlinien direkt anhängen aus.
- Suchen Sie nach der Richtlinie AmazonS3FullAccess und weisen Sie sie dem Nutzer zu.
- Klicken Sie auf Weiter: Tags.
- Klicken Sie auf Weiter: Überprüfen.
- Klicken Sie auf Nutzer erstellen.
- Kopieren und speichern Sie die Zugriffsschlüssel-ID und den geheimen Zugriffsschlüssel für die spätere Verwendung.
Berechtigungen für Amazon S3-Bucket konfigurieren
- Wählen Sie in der Amazon S3-Konsole den Bucket aus, den Sie zuvor erstellt haben.
- Klicken Sie auf Berechtigungen > Bucket-Richtlinie.
Fügen Sie im Bucket-Richtlinieneditor die folgende Richtlinie hinzu:
{ "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/*" ] } ] }
Ersetzen Sie die folgenden Variablen:
- Ersetzen Sie
YOUR_ACCOUNT_ID
durch Ihre AWS-Konto-ID. - Ändern Sie
tanium-audit-logs
in Ihren tatsächlichen Bucket-Namen, falls er sich unterscheidet. - Ändern Sie
tanium-connect-s3-user
in Ihren tatsächlichen IAM-Nutzernamen, falls er sich unterscheidet.
- Ersetzen Sie
Klicken Sie auf Speichern.
Tanium Connect für den S3-Export konfigurieren
AWS S3-Verbindung in Tanium Connect erstellen
- Melden Sie sich als Administrator in der Tanium Console an.
- Klicken Sie auf Tanium Connect > Connections (Tanium Connect > Verbindungen).
- Klicken Sie auf Create Connection.
- Geben Sie im Abschnitt Allgemeine Informationen die folgenden Konfigurationsdetails an:
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Tanium Audit to S3
. - Beschreibung: Geben Sie eine aussagekräftige Beschreibung ein, z. B.
Export Tanium audit logs to S3 for Google SecOps ingestion
. - Aktivieren: Wählen Sie diese Option aus, um die Verbindung zu aktivieren.
- Log-Ebene: Wählen Sie Informationen (Standard) aus oder passen Sie die Einstellung nach Bedarf an.
- Name: Geben Sie einen aussagekräftigen Namen ein, z. B.
Verbindungsquelle konfigurieren
- Wählen Sie im Abschnitt Konfiguration für Quelle die Option Tanium Audit aus.
- Konfigurieren Sie die Einstellungen für die Prüfquelle:
- Days of History Retrieved (Abgerufene Tage mit Verlaufsdaten): Geben Sie die Anzahl der Tage mit Verlaufsdaten für den Audit-Log ein, die abgerufen werden sollen (z. B.
7
für eine Woche). - Audit Types (Audit-Typen): Wählen Sie die Audit-Typen aus, die Sie exportieren möchten. Wählen Sie eine der folgenden Optionen aus:
- Aktionsverlauf: Von Konsolenbedienern ausgeführte Aktionen.
- Authentifizierung: Ereignisse zur Nutzerauthentifizierung.
- Inhalte: Änderungen und Modifikationen an Inhalten.
- Gruppen: Änderungen an Computergruppen.
- Pakete: Aktivitäten im Zusammenhang mit Paketen.
- Sensoren: Änderungen an Sensoren.
- Systemeinstellungen: Änderungen an der Systemkonfiguration.
- Nutzer: Aktivitäten zur Nutzerverwaltung.
- Days of History Retrieved (Abgerufene Tage mit Verlaufsdaten): Geben Sie die Anzahl der Tage mit Verlaufsdaten für den Audit-Log ein, die abgerufen werden sollen (z. B.
AWS S3-Ziel konfigurieren
- Wählen Sie unter Ziel die Option AWS S3 aus.
- Geben Sie die folgenden Konfigurationsdetails an:
- Zielname: Geben Sie einen Namen ein, z. B.
Google SecOps S3 Bucket
. - AWS Access Key (AWS-Zugriffsschlüssel): Geben Sie die Zugriffsschlüssel-ID des zuvor erstellten IAM-Nutzers ein.
- AWS Secret Key: Geben Sie den geheimen Zugriffsschlüssel des zuvor erstellten IAM-Nutzers ein.
- Bucket-Name: Geben Sie den Namen Ihres S3-Buckets ein (z. B.
tanium-audit-logs
). - Bucket-Pfad: Optional. Geben Sie ein Pfadpräfix ein, z. B.
tanium/audit/
. - Region: Wählen Sie die AWS-Region aus, in der sich Ihr Bucket befindet, z. B.
us-east-1
.
- Zielname: Geben Sie einen Namen ein, z. B.
Format und Zeitplan konfigurieren
- Konfigurieren Sie im Bereich Format das Ausgabeformat:
- Formattyp: Wählen Sie JSON aus.
- Spaltenüberschriften einfügen: Wählen Sie aus, ob Spaltenüberschriften eingefügt werden sollen.
- Dokument generieren: Deaktivieren Sie diese Option, um Roh-JSON-Daten zu senden.
- Konfigurieren Sie im Abschnitt Zeitplan, wann die Verbindung ausgeführt werden soll:
- Schedule Type (Zeitplantyp): Wählen Sie Cron aus.
- Cron-Ausdruck: Geben Sie einen Cron-Ausdruck für regelmäßige Exporte ein, z. B.
0 */1 * * *
für stündliche Exporte. - Startdatum: Legen Sie das Startdatum für den Zeitplan fest.
- Klicken Sie auf Änderungen speichern.
Verbindung testen und ausführen
- Rufen Sie auf der Seite Connect-Übersicht die Seite Verbindungen auf.
- Klicken Sie auf die von Ihnen erstellte Verbindung (Tanium Audit to S3).
- Klicken Sie auf Jetzt ausführen, um die Verbindung zu testen.
- Bestätigen Sie, dass Sie die Verbindung ausführen möchten.
- Behalten Sie den Verbindungsstatus im Blick und prüfen Sie, ob Audit-Logs in Ihren S3-Bucket exportiert werden.
Optional: IAM-Nutzer mit Lesezugriff und Schlüssel für Google SecOps erstellen
- Rufen Sie die AWS-Konsole > IAM > Nutzer > Nutzer hinzufügen auf.
- Klicken Sie auf Add users (Nutzer hinzufügen).
- Geben Sie die folgenden Konfigurationsdetails an:
- Nutzer: Geben Sie
secops-reader
ein. - Zugriffstyp: Wählen Sie Zugriffsschlüssel – programmatischer Zugriff aus.
- Nutzer: Geben Sie
- Klicken Sie auf Nutzer erstellen.
- Minimale Leseberechtigung (benutzerdefiniert) anhängen: Nutzer > secops-reader > Berechtigungen > Berechtigungen hinzufügen > Richtlinien direkt anhängen > Richtlinie erstellen.
Geben Sie im JSON-Editor die folgende Richtlinie ein:
{ "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" } ] }
Legen Sie
secops-reader-policy
als Name fest.Gehen Sie zu Richtlinie erstellen> suchen/auswählen > Weiter > Berechtigungen hinzufügen.
Rufen Sie Sicherheitsanmeldedaten > Zugriffsschlüssel > Zugriffsschlüssel erstellen auf.
Laden Sie die CSV herunter (diese Werte werden in den Feed eingegeben).
Feed in Google SecOps konfigurieren, um Tanium-Audit-Logs aufzunehmen
- Rufen Sie die SIEM-Einstellungen > Feeds auf.
- Klicken Sie auf + Neuen Feed hinzufügen.
- Geben Sie im Feld Feedname einen Namen für den Feed ein, z. B.
Tanium Audit logs
. - Wählen Sie Amazon S3 V2 als Quelltyp aus.
- Wählen Sie Tanium Audit als Logtyp aus.
- Klicken Sie auf Weiter.
- Geben Sie Werte für die folgenden Eingabeparameter an:
- S3-URI:
s3://tanium-audit-logs/tanium/audit/
(passen Sie den Pfad an, wenn Sie einen anderen Bucket-Namen oder Pfad verwendet haben). - Optionen zum Löschen von Quellen: Wählen Sie die gewünschte Option zum Löschen aus.
- Maximales Dateialter: Dateien einschließen, die in den letzten Tagen geändert wurden. Der Standardwert ist 180 Tage.
- Zugriffsschlüssel-ID: Nutzerzugriffsschlüssel mit Zugriff auf den S3-Bucket (vom oben erstellten schreibgeschützten Nutzer).
- Geheimer Zugriffsschlüssel: Der geheime Schlüssel des Nutzers mit Zugriff auf den S3-Bucket (vom oben erstellten schreibgeschützten Nutzer).
- Asset-Namespace: Der Asset-Namespace.
- Aufnahmelabels: Das Label, das auf die Ereignisse aus diesem Feed angewendet werden soll.
- S3-URI:
- Klicken Sie auf Weiter.
- Prüfen Sie die neue Feedkonfiguration auf dem Bildschirm Abschließen und klicken Sie dann auf Senden.
UDM-Zuordnungstabelle
Logfeld | UDM-Zuordnung | Logik |
---|---|---|
ActionId |
metadata.product_log_id |
Direkt aus dem Feld ActionId zugeordnet. |
ActionName |
security_result.action_details |
Direkt aus dem Feld ActionName zugeordnet. |
Approver |
additional.fields[Approver].value.string_value |
Direkt aus dem Feld Approver zugeordnet. |
Approver |
principal.user.userid |
Wird aus dem Feld Approver zugeordnet, wenn Issuer nicht vorhanden ist. |
audit_name |
metadata.description |
Direkt aus dem Feld audit_name zugeordnet. |
audit_row_id |
additional.fields[audit_row_id].value.string_value |
Direkt aus dem Feld audit_row_id zugeordnet. |
audit_type |
additional.fields[audit_type].value.string_value |
Direkt aus dem Feld audit_type zugeordnet. |
authentication_type |
principal.user.attribute.labels[authentication_type].value |
Direkt aus dem Feld authentication_type zugeordnet, das aus dem Feld details extrahiert wurde. |
Command |
principal.process.command_line |
Direkt aus dem Feld Command nach der URL-Decodierung zugeordnet. |
creation_time |
target.resource.attribute.creation_time |
Direkt aus dem Feld creation_time zugeordnet. |
details |
network.session_id |
Wird mithilfe der Schlüssel/Wert-Analyse aus dem Feld details extrahiert. |
details |
principal.user.attribute.labels[authentication_type].value |
Wird mithilfe der Schlüssel/Wert-Analyse aus dem Feld details extrahiert. |
details |
principal.asset.ip , principal.ip |
Die IP-Adresse wird mithilfe der Schlüssel/Wert-Analyse aus dem Feld details extrahiert und sowohl principal.asset.ip als auch principal.ip zugeordnet. |
DistributeOver |
additional.fields[DistributeOver].value.string_value |
Direkt aus dem Feld DistributeOver zugeordnet. |
dvc_ip |
intermediary.hostname |
Direkt aus dem Feld dvc_ip abgeleitet, das aus der Syslog-Nachricht extrahiert wurde. |
dvc_ip |
observer.ip |
Wird direkt aus dem Feld dvc_ip zugeordnet, wenn logstash.collect.host nicht vorhanden ist. |
Expiration |
additional.fields[Expiration].value.string_value |
Direkt aus dem Feld Expiration zugeordnet. |
host.architecture |
target.asset.hardware.cpu_platform |
Direkt aus dem Feld host.architecture zugeordnet. |
host.id |
target.asset.asset_id |
Direkt aus dem Feld host.id zugeordnet, mit dem Präfix „Host-ID:“. |
host.ip |
target.ip |
Direkt aus dem Feld host.ip zugeordnet. |
host.mac |
target.mac |
Direkt aus dem Feld host.mac zugeordnet. |
host.name |
target.hostname |
Wird direkt aus dem Feld host.name zugeordnet, wenn host.hostname nicht vorhanden ist. |
host.os.kernel |
target.platform_patch_level |
Direkt aus dem Feld host.os.kernel zugeordnet. |
host.os.name |
additional.fields[os_name].value.string_value |
Direkt aus dem Feld host.os.name zugeordnet. |
host.os.version |
target.platform_version |
Direkt aus dem Feld host.os.version zugeordnet. |
InsertTime |
additional.fields[InsertTime].value.string_value |
Direkt aus dem Feld InsertTime zugeordnet. |
Issuer |
additional.fields[Issuer].value.string_value |
Direkt aus dem Feld Issuer zugeordnet. |
Issuer |
principal.user.userid |
Wird direkt aus dem Feld Issuer zugeordnet, sofern vorhanden. |
last_modified_by |
principal.resource.attribute.labels[last_modified_by].value |
Direkt aus dem Feld last_modified_by zugeordnet. |
log.source.address |
principal.ip |
Die IP-Adresse wird aus dem Feld log.source.address extrahiert und principal.ip zugeordnet. |
log.source.address |
principal.port |
Der Port wird aus dem Feld log.source.address extrahiert. |
logstash.collect.host |
observer.ip |
Wird direkt aus dem Feld logstash.collect.host zugeordnet, sofern vorhanden. |
logstash.collect.timestamp |
metadata.collected_timestamp |
Direkt aus dem Feld logstash.collect.timestamp zugeordnet. |
logstash.ingest.timestamp |
metadata.ingested_timestamp |
Direkt aus dem Feld logstash.ingest.timestamp zugeordnet. |
logstash.irm_environment |
additional.fields[irm_environment].value.string_value |
Direkt aus dem Feld logstash.irm_environment zugeordnet. |
logstash.irm_region |
additional.fields[irm_region].value.string_value |
Direkt aus dem Feld logstash.irm_region zugeordnet. |
logstash.irm_site |
additional.fields[irm_site].value.string_value |
Direkt aus dem Feld logstash.irm_site zugeordnet. |
logstash.process.host |
intermediary.hostname |
Direkt aus dem Feld logstash.process.host zugeordnet. |
message |
dvc_ip , json_data , timestamp |
Mit grok geparst, um dvc_ip , json_data und timestamp zu extrahieren. |
modification_time |
target.resource.attribute.last_update_time |
Direkt aus dem Feld modification_time zugeordnet. |
modifier_user_id |
principal.resource.attribute.labels[modifier_user_id].value |
Direkt aus dem Feld modifier_user_id zugeordnet. |
object_id |
target.resource.product_object_id |
Direkt aus dem Feld object_id zugeordnet. |
object_name |
target.resource.name |
Direkt aus dem Feld object_name zugeordnet. |
object_type_name |
target.resource.attribute.labels[object_type_name].value |
Direkt aus dem Feld object_type_name zugeordnet. |
PackageName |
additional.fields[PackageName].value.string_value |
Direkt aus dem Feld PackageName zugeordnet. |
SourceId |
additional.fields[SourceId].value.string_value |
Direkt aus dem Feld SourceId zugeordnet. |
StartTime |
additional.fields[StartTime].value.string_value |
Direkt aus dem Feld StartTime zugeordnet. |
Status |
security_result.action |
Wird „BLOCK“ zugeordnet, wenn Status „Closed“ ist, und „ALLOW“, wenn Status „Open“ ist. |
Status |
security_result.summary |
Direkt aus dem Feld Status zugeordnet. |
tanium_audit_type |
metadata.product_event_type |
Direkt aus dem Feld tanium_audit_type zugeordnet. |
timestamp |
metadata.event_timestamp |
Direkt aus dem Feld timestamp extrahiert, das aus der Syslog-Nachricht oder dem Feld message stammt. |
type |
additional.fields[type].value.string_value |
Direkt aus dem Feld type zugeordnet. |
type_name |
metadata.product_event_type |
Direkt aus dem Feld type_name zugeordnet. |
User |
principal.user.userid |
Direkt aus dem Feld User zugeordnet. Wird durch die Parserlogik auf Grundlage des Vorhandenseins von src_ip , has_target und has_user bestimmt. Kann „NETWORK_CONNECTION“, „USER_RESOURCE_ACCESS“, „STATUS_UPDATE“ oder „GENERIC_EVENT“ sein. Fest codiert auf „TANIUM_AUDIT“. Fest codiert auf „Cybersicherheit“. Fest codiert auf „TANIUM_AUDIT“. |
@version |
metadata.product_version |
Direkt aus dem Feld @version zugeordnet. |
agent.ephemeral_id |
additional.fields[ephemeral_id].value.string_value |
Direkt aus dem Feld agent.ephemeral_id zugeordnet. |
agent.id |
observer.asset_id |
Direkt aus dem Feld agent.id zugeordnet, mit dem Präfix „filebeat:“ |
agent.type |
observer.application |
Direkt aus dem Feld agent.type zugeordnet. |
agent.version |
observer.platform_version |
Direkt aus dem Feld agent.version zugeordnet. |
Comment |
security_result.description |
Direkt aus dem Feld Comment zugeordnet. |
host.hostname |
target.hostname |
Wird direkt aus dem Feld host.hostname zugeordnet, sofern vorhanden. |
input.type |
network.ip_protocol |
Wird „TCP“ zugeordnet, wenn input.type „tcp“ oder „TCP“ ist. |
syslog_severity |
security_result.severity |
Wird „HIGH“ zugeordnet, wenn syslog_severity „error“ oder „warning“ ist, „MEDIUM“ bei „notice“ und „LOW“ bei „information“ oder „info“. |
syslog_severity |
security_result.severity_details |
Direkt aus dem Feld syslog_severity zugeordnet. |
Benötigen Sie weitere Hilfe? Antworten von Community-Mitgliedern und Google SecOps-Experten erhalten