Splunk Search

How do I filter my search using inputlookup with a CSV file?

jj85
Engager

I have created a search that searches for any Windows logon events in my environment.

index=windows EventID=528 OR EventID=540 OR EventID=4624 OR EventID=4776
| dedup Computer,IpAddress,TargetUserName 
| rename Computer as DestinationHost, IpAddress as SourceIP, TargetUserName as SourceUsername 
| table _time, SourceIP, SourceUsername, DestinationHost

I also have an inputlookup named identities.csv which contains Active Directory information for users, including a field labeled "department".

How can I create a subsearch that takes the above search, checks identities.csv for the username and department, and excludes results where the user is in a specific department?

0 Karma
1 Solution

javiergn
Super Champion

I will apply a lot of filtering first to speed up your query performance.
If you only want to present 4 or 5 fields, then use fields or table as early as possible to get rid of the non-required ones.

Take a look at this instead:

index=windows EventID=528 OR EventID=540 OR EventID=4624 OR EventID=4776
| fields _time, Computer, IpAddress, TargetUserName
| lookup IDENTITIES_LOOKUP TargetUserName AS UserNameFieldInYourCSV OUTPUT department AS Department
| rename Computer as DestinationHost, IpAddress as SourceIP, TargetUserName as SourceUsername
| search NOT Department = "Department I do not want to see"
| table _time, SourceIP, SourceUsername, DestinationHost, Department

View solution in original post

javiergn
Super Champion

I will apply a lot of filtering first to speed up your query performance.
If you only want to present 4 or 5 fields, then use fields or table as early as possible to get rid of the non-required ones.

Take a look at this instead:

index=windows EventID=528 OR EventID=540 OR EventID=4624 OR EventID=4776
| fields _time, Computer, IpAddress, TargetUserName
| lookup IDENTITIES_LOOKUP TargetUserName AS UserNameFieldInYourCSV OUTPUT department AS Department
| rename Computer as DestinationHost, IpAddress as SourceIP, TargetUserName as SourceUsername
| search NOT Department = "Department I do not want to see"
| table _time, SourceIP, SourceUsername, DestinationHost, Department

jj85
Engager

This is exactly what I needed, thank you!

0 Karma

sundareshr
Legend

What you need is the lookup command. Like this.

.... | table _time, SourceIP, SourceUsername, DestinationHost | lookup lookupfile.csv <<name of the col with users>> AS SourceUsername OUTPUT department as Dept | where Dept != "accounting"
Get Updates on the Splunk Community!

[Puzzles] Solve, Learn, Repeat: Dynamic formatting from XML events

This challenge was first posted on Slack #puzzles channelFor a previous puzzle, I needed a set of fixed-length ...

Enter the Agentic Era with Splunk AI Assistant for SPL 1.4

  &#x1f680; Your data just got a serious AI upgrade — are you ready? Say hello to the Agentic Era with the ...

Stronger Security with Federated Search for S3, GCP SQL & Australian Threat ...

Splunk Lantern is a Splunk customer success center that provides advice from Splunk experts on valuable data ...