Splunk

Integration version: 50.0

Note: This integration uses one or more open source components.You can download a copy of the full source code of this integration from thestorage bucket.

The Splunk app prepares cases with all of the relevantalerts and events from Splunk. There are two ways to ingest these cases intoGoogle Security Operations: pull based, and push based methods.

The first method is calledpull based. Using this method, in order to ingestcases into Google SecOps, you need to configure the Splunk PullConnector, which pulls cases from the Splunk app. Thismethod doesn't require any additional configuration in the Splunk app.

The second method is calledpush based. Using this method, the Splunk appperforms API calls to Google SecOps to add a new case. In order towork with this method, you need to generate a Google SecOps API keyand add a Google SecOps URI in the configuration of the app.

Create an API key:

  1. Navigate toSettings> Advanced> API.

  2. Click the plus sign on the top right to add a new API key.

  3. Enter the name of the API key and clickCreate.

    Note: To the push based method to work, you need to have a basic or adminlevel of permissions.
  4. Copy the API key.

How to configure Splunk to work with Google SecOps

Prerequisites for enabling or disabling token authentication

Before you can enable token authentication, you must complete the followingrequirements:

Enable token authentication using Splunk Web

When token authentication is off, the following message displays on theTokenspage in Splunk Web:

Token authentication is currently disabled > To enable token authentication, click Enable Token Authentication.

Complete the following steps on the instance where you want to enable tokenauthentication:

  1. Log in to the Splunk platform instance as an administrator user, or a userthat can manage tokens settings. You cannot use a token to log in to SplunkWeb. You must provide a valid user name and password.

  2. After you log in successfully, in the system bar, selectSettings>Tokens.

  3. ClickEnable Token Authentication. The Splunk platform instance enablestoken authentication immediately, and there is no need to restart theinstance.

Use Splunk Web to create authentication tokens

  1. In the system bar, clickSettings> Tokens.

  2. ClickNew Token.

  3. In theNew Token dialog, enter the Splunk platform user that you want tocreate the token for in theUser field.

  4. Enter a short description of the token purpose in theAudience field.

  5. (Optional) In theExpiration list, selectAbsolute Time orRelative Time. This selection determines what to enter in the text fieldbelow the list.

    • If you selectedAbsolute Time, then two text fields appear under thelist.

      1. Enter a valid date into the first field. You can also click thefield to select a date from a pop-up calendar.

      2. Enter a valid 24-hour time in the second field.

    • Otherwise, one text field appears under the drop down list.

      1. Enter a string that represents how long after the current time youwant the token to remain valid. For example, if you want the tokento expire 10 days from now, enter+10d into this field.
  6. (Optional) In theNot Before list, selectAbsolute Time orRelative Time.

    Repeat the step you used for the Expiration control. The Not before timecan neither be in the past, nor can it be later than the "Expiration" time.

  7. ClickCreate. TheNew Token window updates theToken field to showyou the token that has been generated.

  8. Select all of the token text in the field. Depending on your operatingsystem and browser, you can click on theToken field, then either tripleclick or press Ctrl-A or Command-A on your keyboard. Confirm that you haveselected all of the token text. There are no further opportunities to seethe whole token after you close the window.

  9. Copy the text from theToken field.

  10. Paste the token into a text file, e-mail, or other form of communication tothe person you have authorized to use the token. Confirm that you share thetoken only with those who you have authorized to use it. Anybody who has thefull token can use it to authenticate.

  11. ClickClose.

  12. Use a token to configure the Google SecOps Splunk integration.

Installation

Single search head

  1. Download the TA-Siemplify package to your local computer.https://splunkbase.splunk.com/app/5010/

  2. Install the app on your search head.

    SelectApp: Search & Reporting. TheUpload an app dialog appears.

  3. ClickChoose File and select the app file.

  4. ClickUpload. Wait until the file is uploaded.

  5. Restart Splunk.

Configure TA-Siemplify

  1. In Splunk Enterprise, go to theApps page.

  2. SelectSiemplify.

  3. In theAdd on Settings tab, add the following:

    For push based method:

    • Set theSiemplify API URI to the URI of yourGoogle SecOps server.
    • SetMode toPush mode.
    • In theAPI Key field, enter the token value that was generated inthe API Keys section.

    For pull based method:

    • Set theMode toPull mode.
  4. ClickSave.

Alert Configuration

To send alert and event data to Google SecOps, a trigger action mustbe added to an existing Splunk Alert.

The Environment, Device Vendor, Device Product, and Event Type fields supportevent templating. Event templating allows the specific fields withinGoogle SecOps to be dynamically set based on values in the alert. Toutilize event templating, surround a field name with square brackets '[ ]'. Thefirst event in the alert will be used to fill in these fields.

Example: If you have an alert that contains a field device_vendor with a valueofMicrosoft, you can put [device_vendor] in the Device Vendor configurationparameter and when the alert is sent to Google SecOps the vendor willbe set toMicrosoft.

  1. In Splunk, navigate toAlerts.

  2. In theEdit list, selectEdit Alert.

  3. In theTrigger Actions section, navigate toAdd Actions>Send Alert to Siemplify.

  4. Configure the Alert as follows:

    • Name: The value set here will affect the name of the Alert.
    • Priority: The value set here will affect the priority of theGoogle SecOps case.
    • Category: Used to define the visual family.
    • Environment: Maps to the environment in Google SecOps.Leave blank for no environment. Templating with square brackets issupported.
    • Device Vendor: Used to define the vendor of the system sending theevent into Google SecOps. If the alerts were generated byMicrosoft Sysmon use Microsoft or from a value within the alert/eventusing templating.
    • Device Product: Used to define the product of the system sending theevent into Google SecOps. If the alerts were generated byMicrosoft Sysmon, this value should be Sysmon or from a value within thealert/event using templating.
    • Event Type: Used to define the event type in theGoogle SecOps Event Configuration section. If the alert waslooking for malicious processes, the event type should be something like"Process Found" or from a value within the alert/event using templating.
    • Time Field: Used to define the StartTime and EndTime of theGoogle SecOps Case. If this is not supplied, it will check forthe "_indextime" field. If it is unable to find "_indextime", it will usethe time the alert was generated. Templating is not supported.
    • Expand MultiValue Fields: By setting this to 1 the system will findany multivalue fields and create additional fields mapping to each value inthe multivalued field. For example, if a multivalue field, src_hosts,contains a value of: Server1, Server2, Server3. The system will createnew fields of: src_hosts_0: Server1, src_hosts_1: Server2, src_hosts_2:Server3. This option is only supported when Bring All Events Data isdisabled.
    • Bring All Events Data: This setting will attempt to bring the rawevents that make up an alert containing a transforming command (chart,timechart, stats, top, rare, contingency, highlight). To support this achange to the Splunk Search Head is required.
  5. To enable raw events from transformation searches, copy:$SPLUNK_HOME/etc/apps/TA-siemplify/default/savedsearches.conf to$SPLUNK_HOME/etc/apps/TA-siemplify/local/savedsearches.conf Edit:$SPLUNK_HOME/etc/apps/TA-siemplify/local/savedsearches.conf Uncomment:#dispatch.buckets =1

  6. Save the file and restart Splunk for these settings to take effect.

Troubleshooting

To change the log level toDEBUG, complete the following steps:

  1. In Splunk Web, select your application.

  2. Go toSettings> Server settings> Server logging.

  3. For theLog level parameter, selectDEBUG.

  4. ClickSave.

Querying log data from Google SecOps TA will depend on your Splunkimplementation. If you have Splunk CIM installed, the logs will be in thecim_modactions index. Otherwise, the logs will be in the_internal index.

Network

Network Access to Splunk API access from Google SecOps to Splunk:Allow traffic over port 8089.

How to deploy Google SecOps add-on in cluster environment

To create deployment server and search heads complete the following steps:

  1. Log in to the deployment server using SSH.

  2. Make sure that/opt/splunk/etc/system/local/serverclass.conf file exists.If not, execute:

    vi /opt/splunk/etc/system/local/serverclass.conf

    Example of the configuration is as follows:

    [global] # whitelist matches all clients.[serverClass:AllApps] [serverClass:AllApps:app:*] [serverClass:Google Security OperationsAPP]
  3. Upload and extract app file in the/opt/splunk/etc/deployment-appsdirectory.

  4. Create Splunk user if it doesn't exist:

    useradd splunk

  5. Create splunk group doesn't exist:

    groupadd splunk

  6. Add Splunk user permissions for the app:

    chown splunk:splunk {app path}

  7. Login to search heads using SSH.

  8. Add search heads as clients to the deployment server:

    /opt/splunk/bin/splunk set deploy-pollIP_ADDRESS:8089 #(deployment server ip address)

  9. Restart all of the search heads.

  10. Log in to the UI of the deployment server.

  11. Navigate toSettings> Distributed Environment> Forwarder Manager.

  12. Go to theServer Classes tab and clickNew Server Class.

  13. Provide a name for the server class.

  14. Add Google SecOps add-on as an app and the Search Heads asclients.

  15. Restart all of the Search Heads.

  16. Make sure that the app is configured properly on all search heads. Splunkdoesn't consistently sync the apps across the cluster.

Known Issues

If you receive theint() argument must be a string, a bytes-like object or anumber, not 'NoneType'. Please double check spelling and also verify that acompatible version of Splunk_SA_CIM is installed error in the logs, make surethat the API root and API key parameters in the configuration have a value, evenif you are working with the Pull mode.

Configure Splunk integration in Google SecOps

The Splunk integration gives you the ability to verify the connection using a CACertificate file. This is an additional connection verification method.

To use this method you need to have the following:*

  • CA Certificate file
  • Splunk integration version 26.0 or higher

Configure the integration in Google SecOps:

  1. Parse your CA Certificate file into a Base64 string.

  2. Open the integration configuration page.

  3. In theCA Certificate File field, enter the CA Certificate string.

  4. To test the connection, select theVerify SSL checkbox and clickTest.

For detailed instructions on how to configure an integration inGoogle SecOps, seeConfigureintegrations.

Integration parameters

Use the following parameters to configure the integration:

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Instance NameStringN/ANoName of the Instance you intend to configure integration for.
DescriptionStringN/ANoDescription of the Instance.
Server AddressString{SCHEMA}://{IP}:{PORT}YesAddress of the Splunk Server.
UsernameStringN/ANoThe email address of the user which should be used to connect to Splunk.
PasswordPasswordN/ANoThe password of the according user.
API TokenPasswordN/ANoSplunk API Token. API token has priority over other authentication methods, when this field is not empty.
Verify SSLCheckboxUncheckedNoUse this checkbox, if your Splunk connection requires an SSL verification (unchecked by default).
CA Certificate FileStringN/ANoBase 64 encoded CA certificate file.
Run RemotelyCheckboxUncheckedNoCheck the field in order to run the configured integration remotely. Once checked, the option appears to select the remote user (agent).
Note: You can make changes at a later stage if needed. Once configured, theInstances can be used in Playbooks. For detailed information on configuring andsupporting multiple instances, please seeSupporting multiple instances.

Actions

Get Host Events

Description

Get events related to hosts in Splunk.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Event Per Host LimitInteger100YesSpecify how many events to return per host.
Results FromString-24hYesSpecify the start time for the events.
Results ToStringnowYesSpecify the end time for the events.
Result fieldsCSVN/ANoSpecify a comma-separated list of fields that need to be returned.
IndexStringN/ANoSpecify what index should be used, when searching for events related to the host. If nothing is provided, action will not use index.
Host KeyStringhostNoSpecify what key should be used to get information about host events. Default: host.

Run On

This action runs on the Hostname entity.

Action Results

Script Result
Script Result NameValue OptionsExample
successTrue/Falsesuccess:False
JSON Result
[{"app":"SA-AccessProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087674","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"0","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".404","_time":"2021-02-02T04:01:58.404+02:00"},{"_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087731","_indextime":"1612231318","_kv":"1","_raw":"127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms","_serial":"1","_si":["splunk","_internal"],"_sourcetype":"splunkd_access","_subsecond":".172","_time":"2021-02-02T04:01:58.172+02:00"},{"app":"SA-EndpointProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087653","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"2","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".804","_time":"2021-02-02T04:01:57.804+02:00"}]
Case Wall
Result TypeValue / DescriptionType
Output message*

The action should not fail nor stop a playbook execution:

If successful and results are available: "Successfully returned events for the following hosts in Splunk: \n {0}".format(entity.identifier)

If successful and results are not available for some: "No events were found for the following hosts in Splunk:\n {0}".format(entity.identifier)

If successful and results are not available for all: "No events were found for the provided hosts in Splunk"

The action should fail and stop a playbook execution:

if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Get Host Events". Reason: {0}''.format(error.Stacktrace)

If 400: "Error executing action "Get Host Events". Reason: {0}''.format(messages/text)

General
Case Wall Table

Name: {Entity.identifier} Events

Columns: Based on the results.

Ping

Description

Test connectivity to Splunk with parameters provided at the integrationconfiguration page in the Google Security Operations Marketplace tab.

Parameters

N/A

Run On

This action doesn't run on entities, nor has mandatory input parameters.

Action Results

Script Result
Script Result NameValue OptionsExample
is_successTrue/Falseis_success:False
Case Wall
Result TypeValue / DescriptionType
Output message*

The action should not fail nor stop a playbook execution:
if successful: "Successfully connected to the Splunk server with the provided connection parameters!"

The action should fail and stop a playbook execution:
if not successful: "Failed to connect to the Splunk server! Error is {0}".format(exception.stacktrace)

General

Splunk Csv Viewer

Description

Deprecated: This action creates a CSV table based on the raw results.

Parameters

ParameterTypeDefault ValueIs MandatoryDescription
ResultsstringN/AYesRaw results.

Run On

This action runs on all entities.

Action Results

Script Result
Script Result NameValue OptionsExample
is_succeedTrue/Falseis_succeed:False

SplunkQuery

Description

Execute a query in Splunk.

Important: Exclude any quotes that are part of the query string.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Search ModeDDL

Smart

Possible values:

  • Verbose
  • Smart
  • Fast

NoSpecify the mode for executing search.
QueryStringYesSpecify the query that needs to be executed. Example: index="_internal"
Results count limitInteger100No

Specify how many results to return.
Note: this parameter appends the "head" key word to the provided query. Default is 100.

Results fromString-24hNoSpecify the start time for the query. Default: -24h
Results toStringnowNoSpecify the end time for the query. Default: now.
Result fieldsCSVNo

Specify a comma-separated list of fields that need to be returned.
Note: this parameter appends "fields" key word to the provided query.

Run On

This action doesn't run on entities.

Action Results

Script Result
Script Result NameValue OptionsExample
is_succeedTrue/Falseis_succeed:False
JSON Result
[{"app":"SA-AccessProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087674","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"0","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".404","_time":"2021-02-02T04:01:58.404+02:00"},{"_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087731","_indextime":"1612231318","_kv":"1","_raw":"127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms","_serial":"1","_si":["splunk","_internal"],"_sourcetype":"splunkd_access","_subsecond":".172","_time":"2021-02-02T04:01:58.172+02:00"},{"app":"SA-EndpointProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087653","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"2","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".804","_time":"2021-02-02T04:01:57.804+02:00"}]
Case Wall
Result typeValue/DescriptionType
Output message*

The action should not fail nor stop a playbook execution:

If successful and results are available: "Successfully returned results for the query "{0}" in Splunk".format(query)

If successful and results are not available: "No results were found for the query "{0}" in Splunk".format(query)

Async message: "Waiting for query {0} to finish execution.".format(query name)

The action should fail and stop a playbook execution:

if fatal error, like wrong credentials, no connection to server, other: "Error executing action "SplunkQuery". Reason: {0}''.format(error.Stacktrace)

If 400: "Error executing action "SplunkQuery". Reason: {0}''.format(messages/text)

General
Case Wall Table

Name: Splunk Query Results

Columns - Based on the results.

General

Submit Event

Description

Submit event to Splunk.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
IndexStringmainYesSpecify the index, where the event should be created.
EventStringN/AYesSpecify the raw event that needs to be submitted.
HostStringN/ANoSpecify the host that is related to the event.
SourceStringN/ANoSpecify the source of the event. Example: www.
SourcetypeStringN/ANoSpecify the source type of the event. Example: web_event

Run On

This action doesn't run on entities.

Action Results

Script Result
Script Result NameValue OptionsExample
successTrue/Falsesuccess:False
JSON Result
{"index":"default","bytes":70,"host":"dogo","source":"www","sourcetype":"web_event"}
Case Wall
Result typeValue/DescriptionType
Output message*

The action should not fail nor stop a playbook execution:

If successful: "Successfully added a new event to index "{0}" in Splunk.".format(index)

The action should fail and stop a playbook execution:

if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Submit Event". Reason: {0}''.format(error.Stacktrace)

If 400: "Error executing action "Submit Event". Reason: {0}''.format(messages/text)

General

Update Notable Events

Description

Update notable events in Splunk ES.

Warning: This action is only supported for Splunk ES.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Notable Event IDsCSVN/AYesSpecify IDs of notable events. Example: 1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7@@notable@@cb87390ae72763679d3f6f8f097ebe2b,1D234D5B-1531-2D2B-BB94-41C439BE12B7@@notable@@cb87390ae72763679d3f6f8f097ebe2b
StatusDDL

Select One

Possible values:

Select One

Unassigned

New

In Progress

Pending

Resolved

Closed

YesSpecify the new status for notable events.
UrgencyDDL

Select One

Possible values:

Select One

Critical

High

Medium

Low

Informational

YesSpecify the new urgency for the notable event.
New OwnerStringN/AYesSpecify the new owner of the notable event.
CommentStringN/AYesSpecify the comment for the notable event.

Run On

This action doesn't run on entities.

Action Results

Script Result
Script Result NameValue OptionsExample
is_successTrue/Falseis_success:False
Case Wall
Result TypeValue / DescriptionType
Output message*

The action should not fail nor stop a playbook execution:

If successful and data is available (is_success=true)

print "Successfully updated {0} notable events in Splunk.".format(count(notable_events))

If fail to update (status_code=400, is_success=false):

print "Action wasn't able to update notable events. Reason:{0}".format(string_from_response)

The action should fail and stop a playbook execution:

If fatal error, like wrong credentials, no connection to server, other:

print "Error executing action "Update Notable Events". Reason: {0}''.format(error.Stacktrace)

General

Execute Entity Query

Description

Execute an entity query in Splunk.

Note: this action prepares the "Where" clause based on the entities. Checkdocumentation for additional information.

How to work with action parameters?

This action gives an ability to easily retrieve information related to entities.For example, it's possible to solve the use case, where you want to see theamount of events of the endpoints affected by the provided hashes without anycomplicated query building. In order to solve this problem in the Splunk youwould need to prepare the following query:index="main" | where(device_ip="10.0.0.1" or device_ip="10.12.12.12") and (hash="bad_hash_1" orhash="bad_hash_2") In order to create the same query using "Execute EntityQuery" action, you need to fill out the action parameters in the following way:

Queryindex="main"
IP Entity Keydevice_ip
File Hash Entity Keyhash
Cross Entity OperatorAND

All of the other fields can be left empty.

If the use case is to see how many endpoints were affected by the providedhashes, then the configuration of the "Execute Entity Query" will have thefollowing look.

Queryindex="main"
File Hash Entity Keyhash

"Cross Entity Operator" in this situation won't have an impact, because it onlyaffects the query, when multiple "Entity Keys" are provided.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Search ModeDDL

Smart

Possible values:

  • Verbose
  • Smart
  • Fast

NoSpecify the mode for executing search.
QueryStringYesSpecify the query that needs to be executed without the "Where" clause. Example: index="_internal"
Results count limitInteger100NoSpecify how many results to return. Note: this parameter appends the "head" key word to the provided query. Default is 100.
Results fromString-24hNoSpecify the start time for the query. Default: -24h
Results toStringnowNoSpecify the end time for the query. Default: now.
Result fieldsCSVN/ANo

Specify a comma-separated list of fields that need to be returned.
Note: this parameter appends "fields" key word to the provided query.

IP Entity KeyStringN/ANoSpecify what key should be used with IP entities. Please refer to the action documentation for details.
Hostname Entity KeyStringN/ANoSpecify what key should be used with Hostname entities, when preparing the . Please refer to the action documentation for details.
File Hash Entity KeyStringN/ANoSpecify what key should be used with File Hash entities. Please refer to the action documentation for details.
User Entity KeyStringN/ANoSpecify what key should be used with User entities. Please refer to the action documentation for details.
URL Entity KeyStringN/ANoSpecify what key should be used with URL entities. Please refer to the action documentation for details.
Email Address Entity KeyStringN/ANoSpecify what key should be used with Email Address entities. Please refer to the action documentation for details.
Stop If Not Enough EntitiesCheckboxCheckedYesIf enabled, action will not start execution, unless all of the entity types are available for the specified ".. Entity Keys". Example: if "IP Entity Key" and "File Hash Entity Key" are specified, but in the scope there are no file hashes then if this parameter is enabled, action will not execute the query.
Cross Entity OperatorDDL

OR

Possible Values:

OR

AND

YesSpecify what should be the logical operator used between different entity types.

Run On

This action runs on the following entities:

  • IP Address
  • Host
  • User
  • Hash
  • URL

Action Results

Script Result
Script Result NameValue OptionsExample
is_succeedTrue/Falseis_succeed:False
JSON Result
[{"app":"SA-AccessProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087674","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:58.404 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-AccessProtection;Access - Default Account Usage - Rule\", search_type=\"\", user=\"admin\", app=\"SA-AccessProtection\", savedsearch_name=\"Access - Default Account Usage - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=0, dispatch_time=1612179969, run_time=51348.242, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtQWNjZXNzUHJvdGVjdGlvbg__RMD509c859ea7b9951b8_at_1612179932_61.40533\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"0","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".404","_time":"2021-02-02T04:01:58.404+02:00"},{"_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087731","_indextime":"1612231318","_kv":"1","_raw":"127.0.0.1 - admin [02/Feb/2021:04:01:58.172 +0200] \"POST /servicesNS/nobody/SA-AccessProtection/saved/searches/Access%20-%20Default%20Account%20Usage%20-%20Rule/notify?trigger.condition_state=1 HTTP/1.1\" 200 1985 - - - 3ms","_serial":"1","_si":["splunk","_internal"],"_sourcetype":"splunkd_access","_subsecond":".172","_time":"2021-02-02T04:01:58.172+02:00"},{"app":"SA-EndpointProtection","_bkt":"_internal~425~1A082D7B-D5A1-4A2B-BB94-41C439BE3EB7","_cd":"425:9087653","_indextime":"1612231318","_kv":"1","_raw":"02-02-2021 04:01:57.804 +0200 INFO  SavedSplunker - savedsearch_id=\"nobody;SA-EndpointProtection;Endpoint - Should Timesync Host Not Syncing - Rule\", search_type=\"\", user=\"admin\", app=\"SA-EndpointProtection\", savedsearch_name=\"Endpoint - Should Timesync Host Not Syncing - Rule\", priority=default, status=success, digest_mode=1, scheduled_time=1612179932, window_time=300, dispatch_time=1612179970, run_time=51347.420, result_count=0, alert_actions=\"\", sid=\"rt_scheduler__admin_U0EtRW5kcG9pbnRQcm90ZWN0aW9u__RMD5ef3c08822811b7cd_at_1612179932_62.25751\", suppressed=1, thread_id=\"AlertNotifierWorker-0\", workload_pool=\"\"","_serial":"2","_si":["splunk","_internal"],"_sourcetype":"scheduler","_subsecond":".804","_time":"2021-02-02T04:01:57.804+02:00"}]
Case Wall
Result typeValue/DescriptionType
Output message*

The action should not fail nor stop a playbook execution:

If successful and results are available: "Successfully returned results for the query "{0}" in Splunk".format(query)

If successful and results are not available: "No results were found for the query "{0}" in Splunk".format(query)

Async message: "Waiting for query {0} to finish execution.".format(query name)

If "Stop If Not Enough Entities" is enabled and not enough entity types are available for the provided "Entity Keys" (is_success=false): Action wasn't able to build the query, because not enough entity types were supplied for the specified ".. Entity Keys". Please disable "Stop If Not Enough Entities" parameter or provide at least one entity for each specified ".. Entity Key".

The action should fail and stop a playbook execution:

if fatal error, like wrong credentials, no connection to server, other: "Error executing action "Execute Entity Query". Reason: {0}''.format(error.Stacktrace)

If 400: "Error executing action "Execute Entity Query". Reason: {0}''.format(messages/text)

General
Case Wall Table

Name: Splunk Query Results

Columns: Based on the results.

General

Connectors

For detailed instructions on how to configure a connector inGoogle SecOps, seeConfiguring theconnector.

To configure the selected connector, use the connector-specific parameters listedin the following tables:

Splunk Query Connector

The connector sends queries that are a part of the dynamic list (whitelist),retrieves results, and builds a case based on the retrieved results.

Sample Splunk queries to view the logs

  1. Queries should be entered as the dynamic list (whitelist) rules.

  2. Search queries with multiple filters should use space as a delimiter betweensearch filters—for example,index=cim_modactions sourcetype=modular_alerts:risk.

  3. Using multiple dynamic list (whitelist) rules rather than entering multiplespace-delimited search filters into the same rule results in a separatesearch executed for every added rule.

    • index=cim_modactions
    • sourcetype=modular_alerts:send_data_to_siemplify
    • index=_internal sourcetype=splunkd
    • component=sendmodalert
    • action=send_data_to_siemplify
    • index=_internal source=/opt/splunk/var/log/splunk/send_data_to_siemplify_modalert.log

Connector parameters

To configure the connector, use the following parameters:

Parameters
Product Field NameRequired

Input the source field name to retrieve theProduct Field name.

Default value isdevice_product.

Event Field NameRequired

Enter the source field name to retrieve theEvent Field name.

Default value isapp.

API RootRequired

API root of the Splunk instance.

Default value ishttps://IP:8089.

UsernameRequired

Username of the Splunk account.

PasswordRequired

Password of the Splunk account.

API TokenOptional

Splunk API token.

If this field has any value, the API token has priority over other authentication methods.

Verify SSLRequired

If checked, verifies that the SSL certificate for the connection to the CrowdStrike server is valid.

Unchecked by default.

Environment Field NameOptional

Name of the field where the environment name is stored.

Rule Generator FieldRequired

The name of the field used to map the rule generator value.

Alert Name Field NameRequired

Alert name.

Events Count Limit Per QueryOptional

Max amount of events to fetch per query.

Max Day BackwardsOptional

Amount of days from where to fetch events.

Aggregate Events QueryOptional

If enabled, the connector will combine all events under one alert.

Disabled by default.

PythonProcessTimeout (Seconds)Required

Timeout limit for the python process running the current script.

Default value is 60 seconds.

Proxy Server AddressOptional

Address of the proxy server to use.

Proxy UsernameOptional

Proxy username to authenticate with.

Proxy PasswordOptional

Proxy password to authenticate with.

Environment Regex PatternOptional

A regular expression pattern to run on the value found in theEnvironment Field Name field.

The default value.* catches all and returns the value unchanged.

The parameter lets you manipulate the environment field using the regular expression logic.

If the regular expression pattern is null or empty, or the environment value is null, the final environment result is the default environment.

Connector rules

The connector supports proxy.

Splunk Pull Connector

Pull alerts and events from Splunk into Google SecOps.

Connector parameters

To configure the connector, use the following parameters:

Parameters
Product Field NameRequired

Input the source field name to retrieve theProduct Field name.

Default value isdevice_product.

Event Field NameRequired

Enter the source field name to retrieve theEvent Field name.

Default value isname.

Environment Field NameOptional

Name of the field where the environment name is stored.

If the environment field isn't found, the result environment is"".

Default value is"".

Environment Regex PatternOptional

A regular expression pattern to run on the value found in theEnvironment Field Name field.

The default value.* catches all and returns the value unchanged.

The parameter lets you manipulate the environment field using the regular expression logic.

If the regular expression pattern is null or empty, or the environment value is null, the final environment result is"".

PythonProcessTimeout (Seconds)Required

Timeout limit for the python process running the current script.

Default value is 60 seconds.

Server AddressRequired

IP address of the Splunk API server.

PortRequired

Port of the Splunk instance.

Default value is8089.

UsernameRequired

Username of the Splunk account.

PasswordRequired

Password of the Splunk account.

Time FrameOptional

Timeframe for fetching the alerts.

Default value is 1 hour.

Examples:

If the value is set to 1 minute, the connector fetches alerts starting from 1 minute ago.

If the value is set to 3 hours, the connector fetches alerts starting from 3 hours ago.

If the value is set to 1 day or week, the connector fetches alerts starting from 1 day (24 hours) or 1 week ago, respectively.

Alerts Count LimitOptional

Number of alerts returned by the connector per 1 iteration.

Default value is 100.

Use SSLOptional

Check to enable the SSL or TLS connection.

Unchecked by default.

Proxy Server AddressOptional

Address of the proxy server to use.

Proxy UsernameOptional

Proxy username to authenticate with.

Proxy PasswordOptional

Proxy password to authenticate with.

Connector rules

The connector supports proxy.

Splunk ES - Notable Events Connector

Ingest notable events from Splunk ES.

Note: This connector only works with Splunk ES.

Define case priority

The case priority is defined by theUrgency parameter in the notable event.Only this parameter is taken into consideration when ingesting thenotable event into Google SecOps.

Connector parameters

To configure the connector, use the following parameters:

Parameters
Product Field NameRequired

Input the source field name to retrieve theProduct Field name.

Default value isProduct Name.

Event Field NameRequired

Enter the source field name to retrieve theEvent Field name.

Default value isindex.

Environment Field NameOptional

Name of the field where the environment name is stored.

If the environment field isn't found, the default environment is used.

Default value is"".

Environment Regex PatternOptional

A regular expression pattern to run on the value found in theEnvironment Field Name field.

The default value.* catches all and returns the value unchanged.

The parameter lets you manipulate the environment field using the regular expression logic.

If the regular expression pattern is null or empty, or the environment value is null, the final environment result is the default environment.

Script Timeout (Seconds)Required

Timeout limit for the python process running the current script.

Default value is 180 seconds.

Server AddressRequired

Server address of the Splunk instance.

Default value ishttps://:8089.

UsernameOptional

Username of the Splunk account.

PasswordOptional

Password of the Splunk account.

API TokenRequired

Splunk API token.

If this field has any value, the API token has priority over other authentication methods.

Lowest Urgency To FetchRequired

Lowest urgency used to fetch notable events.

Possible values are:

  • Informational
  • Low
  • Medium
  • High
  • Critical

Default value isMedium.

Fetch Max Hours BackwardsOptional

Amount of hours from where to fetch notable events.

Default value is 1 hour.

Only Drilldown EventsOptional

If enabled, the connector attempts to fetch drilldown events without fetching base events. This parameter requires theFetch Base Events option enabled.

Disabled by default.

Padding TimeOptional

Amount of hours that will be used as a padding.

If no value is provided, this parameter isn't applicable.

Max value is 12 hours.

Max Notable Events To FetchOptional

Number of notable events to process per one connector iteration.

Default value is 10.

Use whitelist as a blacklistRequired

If enabled, the dynamic list is used as a blocklist.

Disabled by default.

Verify SSLRequired

If checked, verifies that the SSL certificate for the connection to the CrowdStrike server is valid.

Unchecked by default.

Proxy Server AddressOptional

Address of the proxy server to use.

Proxy UsernameOptional

Proxy username to authenticate with.

Proxy PasswordOptional

Proxy password to authenticate with.

Query FilterOptional

Additional query filter sent to Splunk to get notable events.

Value provided here is appended to theWHERE query clause.

Extract Base EventsOptional

If enabled, the connector extracts base events related to the notable event using information about the job. In other case, the connector creates a Google SecOps event based on the notable event.

If this parameter is set toTrue but the connector can't work with jobs, the connector uses information about notable events as a fallback mechanism.

Enabled by default.

Multivalue FieldsOptional

A comma-separated list of fields containing multiple entities.

For example, if a field contains two hostnames, the notable event is split into two Google SecOps events to map entities correctly.

Notable Event Data Along Base EventOptional

If enabled, the connector adds Google SecOps events based on the notable event in addition to base events.

Disabled by default.

Rule Generator Field NameOptional

The name of the field used to map the rule generator value.

Only information about the notable event itself is used for mapping, events are disregarded. If invalid value is provided, the connector sets the field to therule_name value.

Alert Name SourceOptional

Source for the alert name.

Possible values are:

  • Search Name
  • Rule Name

Default value isSearch Name.

How to use theQuery Filter parameter

If there is a need to narrow down notable events based on the specificparameters, use theQuery Filter parameter. The value provided in thisparameter is appended to theWHERE clause of the query sent to get notableevents.

The example of the sent query is as follows:

(`get_notable_index` OR `get_sequenced_index`) | eval `get_event_id_meval`,rule_id=event_id | tags outputfield=tag | `mvappend_field(tag,orig_tag)` |`notable_xref_lookup` | `get_correlations` | `get_current_status` | `get_owner`| `get_urgency` | typer | where (urgency="medium" AND urgency="low") AND(status_label="Unassigned" OR status_label="New")  | tail 50 | fields *

For example, ifQuery Filter = isTesting = True, then the query appears asfollows:

search (`get_notable_index` OR `get_sequenced_index`) | eval epoch=_time | eval`get_event_id_meval`,rule_id=event_id | tags outputfield=tag |`mvappend_field(tag,orig_tag)` | `notable_xref_lookup` | `get_correlations` |`get_current_status` | `get_owner` | `get_urgency` | typer | where(urgency!="informational" AND urgency!="low" **AND isTesting = "True"**) |fields *

Connector rules

The Splunk ES connector uses dynamic list and blocklist (whitelist andblacklist). The connector uses thesearch_name field from the event tocompare against the dynamic list.

Connector event

[{"indicator":"2012/06/29_21:50","tlp":"TLP:RED","itype":"mal_url","severity":"very-high","classification":"public","detail":"","confidence":50,"actor":"","feed_name":"import","source":"admin","feed_site_netloc":"localhost","campaign":"","type":"url","id":"anomali:indicator-578a9be5-0e03-4ec0-940d-4b1842f40fd0","date_last":"2020-07-15 08:12:07 AM","Url":"indicator"},{"indicator":"2010/12/19_16:35","tlp":"TLP:RED","itype":"mal_url","severity":"very-high","classification":"public","detail":"","confidence":50,"actor":"","feed_name":"import","source":"admin","feed_site_netloc":"localhost","campaign":"","type":"url","id":"anomali:indicator-52cadd07-330a-45fd-962f-32e22d36a89a","date_last":"2020-07-15 08:12:07 AM"}]

Jobs

Sync Splunk ES Closed Events

Description

Synchronizes closed Splunk ES notable events and Google SecOps alerts.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Server AddressStringhttps://IP:8089YesServer address of the Splunk instance.
UsernameStringN/ANoUsername of the Splunk account.
PasswordPasswordN/ANoPassword of the Splunk account.
API TokenPasswordN/AYesSplunk API token. API token has priority over other authentication methods, when this field is not empty.
Max Hours BackwardsInteger24YesSpecify how many hours backwards to synchronize statuses. Default: 24 hours.
Verify SSLCheckboxCheckedYesIf enabled, verify the SSL certificate for the connection to the Splunk server is valid.

Sync Splunk ES Comments

Description

This job will synchronize comments in Splunk ES events andGoogle SecOps cases.

Parameters

Parameter Display NameTypeDefault ValueIs MandatoryDescription
Server AddressStringhttps://IP:8089YesServer address of the Splunk instance.
UsernameStringN/ANoUsername of the Splunk account.
PasswordPasswordN/ANoPassword of the Splunk account.
API TokenPasswordN/AYesSplunk API token. API token has priority over other authentication methods, when this field is not empty.
Verify SSLCheckboxCheckedYesIf enabled, verify the SSL certificate for the connection to the Splunk server is valid.

Need more help?Get answers from Community members and Google SecOps professionals.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.