packages/windows/data_stream/windows_defender/agent/stream/httpjson.yml.hbs (122 lines of code) (raw):
config_version: "2"
interval: {{interval}}
{{#if enable_request_tracer}}
request.tracer.filename: "../../logs/httpjson/http-request-trace-*.ndjson"
request.tracer.maxbackups: 5
{{/if}}
{{#unless token}}
{{#if username}}
{{#if password}}
auth.basic.user: {{username}}
auth.basic.password: {{password}}
{{/if}}
{{/if}}
{{/unless}}
cursor:
index_earliest:
value: '[[.last_event.result.max_indextime]]'
request.url: {{url}}/services/search/jobs/export
{{#if ssl}}
request.ssl: {{ssl}}
{{/if}}
request.method: POST
request.transforms:
- set:
target: url.params.search
value: |-
{{search}} | streamstats max(_indextime) AS max_indextime
- set:
target: url.params.output_mode
value: "json"
- set:
target: url.params.index_earliest
value: '[[ .cursor.index_earliest ]]'
default: '[[(now (parseDuration "-{{interval}}")).Unix]]'
- set:
target: url.params.index_latest
value: '[[(now).Unix]]'
- set:
target: header.Content-Type
value: application/x-www-form-urlencoded
{{#unless username}}
{{#unless password}}
{{#if token}}
- set:
target: header.Authorization
value: {{token}}
{{/if}}
{{/unless}}
{{/unless}}
response.decode_as: application/x-ndjson
{{#if tags.length}}
tags:
{{else if preserve_original_event}}
tags:
{{/if}}
{{#each tags as |tag|}}
- {{tag}}
{{/each}}
{{#if preserve_original_event}}
- preserve_original_event
{{/if}}
{{#contains "forwarded" tags}}
publisher_pipeline.disable_host: true
{{/contains}}
processors:
- decode_json_fields:
fields: message
target: json
add_error_key: true
- drop_event:
when:
not:
has_fields: ['json.result']
- fingerprint:
fields:
- json.result._cd
- json.result._indextime
- json.result._raw
- json.result._time
- json.result.host
- json.result.source
target_field: "@metadata._id"
- drop_fields:
fields: message
- rename:
fields:
- from: json.result._raw
to: event.original
- from: json.result.host
to: host.name
- from: json.result.source
to: event.provider
ignore_missing: true
fail_on_error: false
- drop_fields:
fields: json
- decode_xml_wineventlog:
field: event.original
target_field: winlog
ignore_missing: true
ignore_failure: true
map_ecs_fields: true
- script:
lang: javascript
id: rename_fields_in_winlog_event_data_that_have_spaces
source: >
function process(event) {
var eventData = event.Get("winlog.event_data");
if (eventData !== null) {
var newEventData = {};
for (var key in eventData) {
if (eventData.hasOwnProperty(key)) {
var newKey = key.replace(/ /g, "_");
newEventData[newKey] = eventData[key];
}
}
event.Put("winlog.event_data", newEventData);
}
}
{{#if processors.length}}
{{processors}}
{{/if}}