From 7472d90b5123e5c09c717339096348f218a0db96 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Tue, 29 Sep 2020 11:07:15 -0500 Subject: [PATCH 01/45] Add mapping network event guidance doc (#969) --- CHANGELOG.next.md | 1 + docs/additional.asciidoc | 1 + docs/using-mapping-network-events.asciidoc | 267 +++++++++++++++++++++ docs/using.asciidoc | 6 +- 4 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 docs/using-mapping-network-events.asciidoc diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 406fce958c..b3b73b8bda 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -25,6 +25,7 @@ Thanks, you're awesome :-) --> #### Improvements * Expanded field set definitions for `source.*` and `destination.*`. #967 +* Provided better guidance for mapping network events. #969 #### Deprecated diff --git a/docs/additional.asciidoc b/docs/additional.asciidoc index d42bcfbeec..a39747cac8 100644 --- a/docs/additional.asciidoc +++ b/docs/additional.asciidoc @@ -2,6 +2,7 @@ == Additional Information * <> +* <> * <> * <> diff --git a/docs/using-mapping-network-events.asciidoc b/docs/using-mapping-network-events.asciidoc new file mode 100644 index 0000000000..90986f6a2f --- /dev/null +++ b/docs/using-mapping-network-events.asciidoc @@ -0,0 +1,267 @@ +[[ecs-mapping-network-events]] +=== Mapping Network Events + +Network events capture the details of one device communicating with another. The initiator is referred to as the source, and the recipient as the destination. Depending on the data source, a network event can contain details of addresses, protocols, headers, and device roles. + +This guide describes the different field sets available for network-related events in ECS and provides direction on the ECS best practices for mapping to them. + +[float] +==== Source and destination baseline + +When an event contains details about the sending and receiving hosts, the baseline for capturing these values will be the <> and <> fields. + +Some events may also indicate each host's role in the exchange: client or server. When this information is available, the <> and <> fields should be used _in addition to_ the `source` and `destination` fields. The fields and values mapped under `source`/`destination` should be copied under `client`/`server`. + +[float] +==== Network event mapping example + +Below is a DNS network event. The source device (`192.168.86.222`) makes a DNS query, acting as the client and the DNS server is the destination (`192.168.86.1`). + +Note this event contains additional details that would populate additional fields (such as the <>) if this was a complete mapping example. These additional fields are omitted here to focus on the network details. + +[source,json] +---- +{ + "ts":1599775747.53056, + "uid":"CYqFPH3nOAa0kPxA0d", + "id.orig_h":"192.168.86.222", + "id.orig_p":54162, + "id.resp_h":"192.168.86.1", + "id.resp_p":53, + "proto":"udp", + "trans_id":28899, + "rtt":0.02272200584411621, + "query":"example.com", + "qclass":1, + "qclass_name":"C_INTERNET", + "qtype":1, + "qtype_name":"A", + "rcode":0, + "rcode_name":"NOERROR", + "AA":false, + "TC":false, + "RD":true, + "RA":true, + "Z":0, + "answers":["93.184.216.34"], + "TTLs":[21209.0], + "rejected":false +} +---- + +[float] +==== Source and destination fields + +First, the `source.*` and `destination.*` field sets are populated: + +[source,json] +---- + "source": { + "ip": "192.168.86.222", + "port": 54162 + } +---- + +[source,json] +---- + "destination": { + "ip": "192.168.86.1", + "port": 53 + } +---- + +[float] +==== Client and server fields + +Looking back at the original event, it shows the source device is the DNS client and the destination device is the DNS server. The values mapped under `source` and `destination` are copied and mapped under `client` and `server`, respectively: + +[source,json] +---- + "client": { + "ip": "192.168.86.222", + "port": 64734 + } +---- + +[source,json] +---- + "server": { + "ip": "192.168.86.1", + "port": 53 + } +---- + +Mapping both pairs of field sets gives query visibility of the same network transaction in two ways. + +* `source.ip:192.168.86.222` returns all events sourced from `192.168.86.222`, regardless its role in a transaction +* `client.ip:192.168.86.222` returns all events with host `192.168.86.222` acting as a client + +The same applies for the `destination` and `server` fields: + +* `destination.ip:192.168.86.1` returns all events destined to `192.168.86.1` +* `server.ip:192.168.86.1` returns all events with `192.168.86.1` acting as the server + +It's important to note that while the values for the `source` and `destination` fields may reverse between events in a single network transaction, the values for `client` and `server` typically will not. The following two tables demonstrate how two DNS transactions involving two clients and one server would map to `source.ip`/`destination.ip` vs. `client.ip`/`server.ip`: + +[options="header"] +.Source/Destination +|===== +| source.ip | destination.ip | event + +// =============================================================== + +| 192.168.86.222 +| 192.168.86.1 +| DNS query request 1 + +// =============================================================== + +| 192.168.86.1 +| 192.168.86.222 +| DNS answer response 1 + +// =============================================================== + +| 192.168.86.42 +| 192.168.86.1 +| DNS answer request 2 + +// =============================================================== + +| 192.168.86.1 +| 192.168.86.42 +| DNS answer request 2 + +|===== + +[options="header"] +.Client/Server +|===== +| client.ip | server.ip | event + +// =============================================================== + +| 192.168.86.222 +| 192.168.86.1 +| DNS query request 1 + +// =============================================================== + +| 192.168.86.222 +| 192.168.86.1 +| DNS answer response 1 + +// =============================================================== + +| 192.168.86.42 +| 192.168.86.1 +| DNS query request 2 + +// =============================================================== + +| 192.168.86.42 +| 192.168.86.1 +| DNS answer response 2 + +|===== + +[float] +==== Related fields + +The `related.ip` field captures all the IPs present in the event in a single array: + +[source,json] +---- + "related": { + "ip": [ + "192.168.86.222", + "192.168.86.1", + "93.184.216.34" + ] + } +---- + +The <> are meant to facilitate pivoting. Since these IP addresses can appear in many different fields (`source.ip`, `destination.ip`, `client.ip`, `server.ip`, etc.), you can search for the IP trivially no matter what field it appears using a single query, e.g. `related.ip:192.168.86.222`. + +Network events are not only limited to using `related.ip`. If hostnames or other host identifiers were present in the event, `related.hosts` should be populated too. + +[float] +==== Categorization using event fields + +When considering the <>, the `category` and `type` fields are populated using their respective allowed values which best classify the source network event. + +[source,json] +---- + "event": { + "category": [ + "network" + ], + "type": [ + "connection", + "protocol" + ], + "kind": "event" + } +---- + +Most <>/<> ECS pairings are complete on their own. However, the pairing of `event.category:network` and `event.type:protocol` is an exception. When these two fields/value pairs both used to categorize an event, the `network.protocol` field should also be populated: + +[source,json] +---- + "network": { + "protocol": "dns", + "type": "ipv4", + "transport": "udp" + } +---- + +[float] +==== Result + +Putting everything together covered so far, we have a final ECS-mapped event: + +[source,json] +---- +{ + "event": { + "category": [ + "network" + ], + "type": [ + "connection", + "protocol" + ], + "kind": "event" + }, + "network": { + "protocol": "dns", + "type": "ipv4", + "transport": "udp" + }, + "source": { + "ip": "192.168.86.222", + "port": 54162 + }, + "destination": { + "ip": "192.168.86.1", + "port": 53 + }, + "client": { + "ip": "192.168.86.222", + "port": 64734 + }, + "server": { + "ip": "192.168.86.1", + "port": 53 + }, + "related": { + "ip": [ + "192.168.86.222", + "192.168.86.1", + "93.184.216.34" + ] + }, + "dns": { ... }, <= Again, not diving into the DNS fields here but included for completeness. + "zeek": { "ts":1599775747.53056, ... } <= Original fields can optionally be kept around as custom fields. +} +---- diff --git a/docs/using.asciidoc b/docs/using.asciidoc index fbce72bb27..e5d2358289 100644 --- a/docs/using.asciidoc +++ b/docs/using.asciidoc @@ -8,13 +8,17 @@ If you're new to ECS and would like an introduction on implementing and using the schema, check out the <> guide. Whether you're trying to recall a field name, implementing a solution that -follows ECS, or proposing a change to the schema, the <> and +follows ECS, or proposing a change to the schema, the <> and <> will help get you there. If you're wondering how to best capture event details that don't map to existing ECS fields, head over to <>. +<> provides a detailed walk-through of how to best map and +categorize an example network event to the schema. + include::using-getting-started.asciidoc[][] include::using-guidelines.asciidoc[] include::using-conventions.asciidoc[] include::using-custom-fields.asciidoc[] +include::using-mapping-network-events.asciidoc[] From 1ac936ad8d1067372bbd527d6454a409483d3eb7 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Tue, 29 Sep 2020 13:00:32 -0500 Subject: [PATCH 02/45] Removing unneeded link under `Additional Information` (#984) --- docs/additional.asciidoc | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/additional.asciidoc b/docs/additional.asciidoc index a39747cac8..d42bcfbeec 100644 --- a/docs/additional.asciidoc +++ b/docs/additional.asciidoc @@ -2,7 +2,6 @@ == Additional Information * <> -* <> * <> * <> From fd822f05e0548eb8b11c227da1dbbc9d53b7ab88 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Wed, 30 Sep 2020 16:11:58 -0500 Subject: [PATCH 03/45] Add discrete attribute to field details page headers (#989) --- CHANGELOG.next.md | 1 + docs/field-details.asciidoc | 79 ++++++++++++++++++++++++++++++ scripts/templates/field_details.j2 | 3 ++ 3 files changed, 83 insertions(+) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index b3b73b8bda..54ae430335 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -46,6 +46,7 @@ Thanks, you're awesome :-) --> #### Improvements * Field details Jinja2 template components have been consolidated into one template #897 +* Add `[discrete]` marker before each section header in field details. #989 #### Deprecated diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index 773c61cce0..d13a5896c5 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -3,6 +3,7 @@ The `base` field set contains all fields which are at the root of the events. These fields are common across all types of events. +[discrete] ==== Base Field Details [options="header"] @@ -89,6 +90,7 @@ The agent fields contain the data about the software entity, if any, that collec Examples include Beats. Agents may also run on observers. ECS agent.* fields shall be populated with details of the agent running on the host or observer where the event happened or the measurement was taken. +[discrete] ==== Agent Field Details [options="header"] @@ -194,6 +196,7 @@ example: `6.0.0-rc2` An autonomous system (AS) is a collection of connected Internet Protocol (IP) routing prefixes under the control of one or more network operators on behalf of a single administrative entity or domain that presents a common, clearly defined routing policy to the internet. +[discrete] ==== Autonomous System Field Details [options="header"] @@ -236,6 +239,7 @@ example: `Google LLC` |===== +[discrete] ==== Field Reuse The `as` fields are expected to be nested at: `client.as`, `destination.as`, `server.as`, `source.as`. @@ -254,6 +258,7 @@ For TCP events, the client is the initiator of the TCP connection that sends the Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +[discrete] ==== Client Field Details [options="header"] @@ -419,12 +424,14 @@ example: `co.uk` |===== +[discrete] ==== Field Reuse [[ecs-client-nestings]] +[discrete] ===== Field sets that can be nested under Client [options="header"] @@ -459,6 +466,7 @@ example: `co.uk` Fields related to the cloud or infrastructure the events are coming from. +[discrete] ==== Cloud Field Details [options="header"] @@ -612,6 +620,7 @@ example: `us-east-1` These fields contain information about binary code signatures. +[discrete] ==== Code Signature Field Details [options="header"] @@ -693,6 +702,7 @@ example: `true` |===== +[discrete] ==== Field Reuse The `code_signature` fields are expected to be nested at: `dll.code_signature`, `file.code_signature`, `process.code_signature`. @@ -709,6 +719,7 @@ Container fields are used for meta information about the specific container that These fields help correlate data based containers from any runtime. +[discrete] ==== Container Field Details [options="header"] @@ -807,6 +818,7 @@ Destination fields capture details about the receiver of a network exchange/pack Destination fields are usually populated in conjunction with source fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. +[discrete] ==== Destination Field Details [options="header"] @@ -972,12 +984,14 @@ example: `co.uk` |===== +[discrete] ==== Field Reuse [[ecs-destination-nestings]] +[discrete] ===== Field sets that can be nested under Destination [options="header"] @@ -1022,6 +1036,7 @@ Many operating systems refer to "shared code libraries" with different names, bu * Dynamic library (`.dylib`) commonly used on macOS +[discrete] ==== DLL Field Details [options="header"] @@ -1060,12 +1075,14 @@ example: `C:\Windows\System32\kernel32.dll` |===== +[discrete] ==== Field Reuse [[ecs-dll-nestings]] +[discrete] ===== Field sets that can be nested under DLL [options="header"] @@ -1102,6 +1119,7 @@ Fields describing DNS queries and answers. DNS events should either represent a single DNS query prior to getting answers (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`). +[discrete] ==== DNS Field Details [options="header"] @@ -1386,6 +1404,7 @@ example: `answer` Meta-information specific to ECS. +[discrete] ==== ECS Field Details [options="header"] @@ -1418,6 +1437,7 @@ These fields can represent errors of any kind. Use them for errors that happen while fetching events or in cases where the event itself contains an error. +[discrete] ==== Error Field Details [options="header"] @@ -1506,6 +1526,7 @@ The event fields are used for context information about the log or metric event A log is defined as an event containing details of something that happened. Log events must include the time at which the thing happened. Examples of log events include a process starting on a host, a network packet being sent from a source to a destination, or a network connection between a client and a server being initiated or closed. A metric is defined as an event containing one or more numerical measurements and the time at which the measurement was taken. Examples of metric events include memory pressure measured on a host and device temperature. See the `event.kind` definition in this section for additional details about metric and state events. +[discrete] ==== Event Field Details [options="header"] @@ -1944,6 +1965,7 @@ A file is defined as a set of information that has been created on, or has exist File objects can be associated with host events, network events, and/or file events (e.g., those produced by File Integrity Monitoring [FIM] products or services). File fields provide details about the affected file associated with the event or metric. +[discrete] ==== File Field Details [options="header"] @@ -2254,12 +2276,14 @@ example: `1001` |===== +[discrete] ==== Field Reuse [[ecs-file-nestings]] +[discrete] ===== Field sets that can be nested under File [options="header"] @@ -2302,6 +2326,7 @@ Geo fields can carry data about a specific location related to an event. This geolocation information can be derived from techniques such as Geo IP, or be user-supplied. +[discrete] ==== Geo Field Details [options="header"] @@ -2420,6 +2445,7 @@ example: `Quebec` |===== +[discrete] ==== Field Reuse The `geo` fields are expected to be nested at: `client.geo`, `destination.geo`, `host.geo`, `observer.geo`, `server.geo`, `source.geo`. @@ -2434,6 +2460,7 @@ Note also that the `geo` fields are not expected to be used directly at the root The group fields are meant to represent groups that are relevant to the event. +[discrete] ==== Group Field Details [options="header"] @@ -2485,6 +2512,7 @@ type: keyword |===== +[discrete] ==== Field Reuse The `group` fields are expected to be nested at: `user.group`. @@ -2501,6 +2529,7 @@ The hash fields represent different hash algorithms and their values. Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for other hashes by lowercasing the hash algorithm name and using underscore separators as appropriate (snake case, e.g. sha3_512). +[discrete] ==== Hash Field Details [options="header"] @@ -2563,6 +2592,7 @@ type: keyword |===== +[discrete] ==== Field Reuse The `hash` fields are expected to be nested at: `dll.hash`, `file.hash`, `process.hash`. @@ -2579,6 +2609,7 @@ A host is defined as a general computing instance. ECS host.* fields should be populated with details about the host on which the event happened, or from which the measurement was taken. Host types include hardware, virtual machines, Docker containers, and Kubernetes nodes. +[discrete] ==== Host Field Details [options="header"] @@ -2724,12 +2755,14 @@ example: `1325` |===== +[discrete] ==== Field Reuse [[ecs-host-nestings]] +[discrete] ===== Field sets that can be nested under Host [options="header"] @@ -2764,6 +2797,7 @@ example: `1325` Fields related to HTTP activity. Use the `url` field set to store the url of the request. +[discrete] ==== HTTP Field Details [options="header"] @@ -2957,6 +2991,7 @@ example: `1.1` The interface fields are used to record ingress and egress interface information when reported by an observer (e.g. firewall, router, load balancer) in the context of the observer handling a network connection. In the case of a single observer interface (e.g. network sensor on a span port) only the observer.ingress information should be populated. +[discrete] ==== Interface Field Details [options="header"] @@ -3006,6 +3041,7 @@ example: `eth0` |===== +[discrete] ==== Field Reuse The `interface` fields are expected to be nested at: `observer.egress.interface`, `observer.ingress.interface`. @@ -3024,6 +3060,7 @@ The log.* fields are typically populated with details about the logging mechanis The details specific to your event source are typically not logged under `log.*`, but rather in `event.*` or in other ECS fields. +[discrete] ==== Log Field Details [options="header"] @@ -3230,6 +3267,7 @@ The network is defined as the communication path over which a host or network ev The network.* fields should be populated with details about the network activity associated with an event. +[discrete] ==== Network Field Details [options="header"] @@ -3428,12 +3466,14 @@ example: `ipv4` |===== +[discrete] ==== Field Reuse [[ecs-network-nestings]] +[discrete] ===== Field sets that can be nested under Network [options="header"] @@ -3464,6 +3504,7 @@ An observer is defined as a special network, security, or application device use This could be a custom hardware appliance or a server that has been configured to run special network, security, or application software. Examples include firewalls, web proxies, intrusion detection/prevention systems, network monitoring sensors, web application firewalls, data loss prevention systems, and APM servers. The observer.* fields shall be populated with details of the system, if any, that detects, observes and/or creates a network, security, or application event or metric. Message queues and ETL components used in processing events or metrics are not considered observers in ECS. +[discrete] ==== Observer Field Details [options="header"] @@ -3655,12 +3696,14 @@ type: keyword |===== +[discrete] ==== Field Reuse [[ecs-observer-nestings]] +[discrete] ===== Field sets that can be nested under Observer [options="header"] @@ -3715,6 +3758,7 @@ The organization fields enrich data with information about the company or entity These fields help you arrange or filter data stored in an index by one or multiple organizations. +[discrete] ==== Organization Field Details [options="header"] @@ -3762,6 +3806,7 @@ Multi-fields: The OS fields contain information about the operating system. +[discrete] ==== Operating System Field Details [options="header"] @@ -3862,6 +3907,7 @@ example: `10.14.1` |===== +[discrete] ==== Field Reuse The `os` fields are expected to be nested at: `host.os`, `observer.os`, `user_agent.os`. @@ -3876,6 +3922,7 @@ Note also that the `os` fields are not expected to be used directly at the root These fields contain information about an installed software package. It contains general information about a package, such as name, version or size. It also contains installation details, such as time or location. +[discrete] ==== Package Field Details [options="header"] @@ -4066,6 +4113,7 @@ example: `1.12.9` These fields contain Windows Portable Executable (PE) metadata. +[discrete] ==== PE Header Field Details [options="header"] @@ -4169,6 +4217,7 @@ example: `Microsoft® Windows® Operating System` |===== +[discrete] ==== Field Reuse The `pe` fields are expected to be nested at: `dll.pe`, `file.pe`, `process.pe`. @@ -4185,6 +4234,7 @@ These fields contain information about a process. These fields can help you correlate metrics information with a process id/name from a log message. The `process.pid` often stays in the metric itself and is copied to the global field for correlation. +[discrete] ==== Process Field Details [options="header"] @@ -4452,6 +4502,7 @@ example: `/home/alice` |===== +[discrete] ==== Field Reuse The `process` fields are expected to be nested at: `process.parent`. @@ -4462,6 +4513,7 @@ Note also that the `process` fields may be used directly at the root of the even [[ecs-process-nestings]] +[discrete] ===== Field sets that can be nested under Process [options="header"] @@ -4502,6 +4554,7 @@ Note also that the `process` fields may be used directly at the root of the even Fields related to Windows Registry operations. +[discrete] ==== Registry Field Details [options="header"] @@ -4619,6 +4672,7 @@ Some pieces of information can be seen in many places in an ECS event. To facili A concrete example is IP addresses, which can be under host, observer, source, destination, client, server, and network.forwarded_ip. If you append all IPs to `related.ip`, you can then search for a given IP trivially, no matter where it appeared, by querying `related.ip:192.0.2.15`. +[discrete] ==== Related Field Details [options="header"] @@ -4700,6 +4754,7 @@ Rule fields are used to capture the specifics of any observer or agent rules tha Examples of data sources that would populate the rule fields include: network admission control platforms, network or host IDS/IPS, network firewalls, web application firewalls, url filters, endpoint detection and response (EDR) systems, etc. +[discrete] ==== Rule Field Details [options="header"] @@ -4854,6 +4909,7 @@ For TCP events, the server is the receiver of the initial SYN packet(s) of the T Client / server representations can add semantic context to an exchange, which is helpful to visualize the data in certain situations. If your context falls in that category, you should still ensure that source and destination are filled appropriately. +[discrete] ==== Server Field Details [options="header"] @@ -5019,12 +5075,14 @@ example: `co.uk` |===== +[discrete] ==== Field Reuse [[ecs-server-nestings]] +[discrete] ===== Field sets that can be nested under Server [options="header"] @@ -5061,6 +5119,7 @@ The service fields describe the service for or from which the data was collected These fields help you find and correlate logs for a specific service and version. +[discrete] ==== Service Field Details [options="header"] @@ -5189,6 +5248,7 @@ Source fields capture details about the sender of a network exchange/packet. The Source fields are usually populated in conjunction with destination fields. The source and destination fields are considered the baseline and should always be filled if an event contains source and destination details from a network transaction. If the event also contains identification of the client and server roles, then the client and server fields should also be populated. +[discrete] ==== Source Field Details [options="header"] @@ -5354,12 +5414,14 @@ example: `co.uk` |===== +[discrete] ==== Field Reuse [[ecs-source-nestings]] +[discrete] ===== Field sets that can be nested under Source [options="header"] @@ -5396,6 +5458,7 @@ Fields to classify events and alerts according to a threat taxonomy such as the These fields are for users to classify alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy. The threat.tactic.* are meant to capture the high level category of the threat (e.g. "impact"). The threat.technique.* fields are meant to capture which kind of approach is used by this detected threat, to accomplish the goal (e.g. "endpoint denial of service"). +[discrete] ==== Threat Field Details [options="header"] @@ -5580,6 +5643,7 @@ example: `https://attack.mitre.org/techniques/T1059/001/` Fields related to a TLS connection. These fields focus on the TLS protocol itself and intentionally avoids in-depth analysis of the related x.509 certificate files. +[discrete] ==== TLS Field Details [options="header"] @@ -5976,12 +6040,14 @@ example: `tls` |===== +[discrete] ==== Field Reuse [[ecs-tls-nestings]] +[discrete] ===== Field sets that can be nested under TLS [options="header"] @@ -6010,6 +6076,7 @@ example: `tls` Distributed tracing makes it possible to analyze performance throughout a microservice architecture all in one view. This is accomplished by tracing all of the requests - from the initial web request in the front-end service - to queries made through multiple back-end services. +[discrete] ==== Tracing Field Details [options="header"] @@ -6070,6 +6137,7 @@ example: `00f067aa0ba902b7` URL fields provide support for complete or partial URLs, and supports the breaking down into scheme, domain, path, and so on. +[discrete] ==== URL Field Details [options="header"] @@ -6290,6 +6358,7 @@ The user fields describe information about the user that is relevant to the even Fields can have one entry or multiple entries. If a user has more than one id, provide an array that includes all of them. +[discrete] ==== User Field Details [options="header"] @@ -6410,6 +6479,7 @@ example: `["kibana_admin", "reporting_user"]` |===== +[discrete] ==== Field Reuse The `user` fields are expected to be nested at: `client.user`, `destination.user`, `host.user`, `server.user`, `source.user`. @@ -6420,6 +6490,7 @@ Note also that the `user` fields may be used directly at the root of the events. [[ecs-user-nestings]] +[discrete] ===== Field sets that can be nested under User [options="header"] @@ -6444,6 +6515,7 @@ The user_agent fields normally come from a browser request. They often show up in web service logs coming from the parsed user agent string. +[discrete] ==== User agent Field Details [options="header"] @@ -6512,12 +6584,14 @@ example: `12.0` |===== +[discrete] ==== Field Reuse [[ecs-user_agent-nestings]] +[discrete] ===== Field sets that can be nested under User agent [options="header"] @@ -6546,6 +6620,7 @@ Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple Observer.ingress and observer.egress VLAN values are used to record observer specific information when observer events contain discrete ingress and egress VLAN information, typically provided by firewalls, routers, or load balancers. +[discrete] ==== VLAN Field Details [options="header"] @@ -6582,6 +6657,7 @@ example: `outside` |===== +[discrete] ==== Field Reuse The `vlan` fields are expected to be nested at: `network.inner.vlan`, `network.vlan`, `observer.egress.vlan`, `observer.ingress.vlan`. @@ -6596,6 +6672,7 @@ Note also that the `vlan` fields are not expected to be used directly at the roo The vulnerability fields describe information about a vulnerability that is relevant to an event. +[discrete] ==== Vulnerability Field Details [options="header"] @@ -6799,6 +6876,7 @@ example: `Critical` This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). +[discrete] ==== x509 Certificate Field Details [options="header"] @@ -7160,6 +7238,7 @@ example: `3` |===== +[discrete] ==== Field Reuse The `x509` fields are expected to be nested at: `file.x509`, `tls.client.x509`, `tls.server.x509`. diff --git a/scripts/templates/field_details.j2 b/scripts/templates/field_details.j2 index 0b1bb6e224..1ceedf55e0 100644 --- a/scripts/templates/field_details.j2 +++ b/scripts/templates/field_details.j2 @@ -5,6 +5,7 @@ {{ fieldset['description']|replace("\n", "\n\n") }} {# Field Details Table Header -#} +[discrete] ==== {{ fieldset['title'] }} Field Details [options="header"] @@ -67,6 +68,7 @@ example: `{{ field['example'] }}` {# do we have `nestings` or `reusable` sections to worry about? -#} {% if 'nestings' in fieldset or 'reusable' in fieldset -%} +[discrete] ==== Field Reuse {% if 'reusable' in fieldset -%} @@ -88,6 +90,7 @@ Note also that the `{{ fieldset['name'] }}` fields are not expected to be used d {% if 'nestings' in fieldset -%} [[ecs-{{ fieldset['name'] }}-nestings]] +[discrete] ===== Field sets that can be nested under {{ fieldset['title'] }} [options="header"] From b106d3a613590727adf9d52867c1bba91c9c83df Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Fri, 2 Oct 2020 11:44:39 -0400 Subject: [PATCH 04/45] [RFC] Multiple users in an event (#914) --- rfcs/0000-rfc-template.md | 2 +- rfcs/text/0007-multiple-users.md | 769 +++++++++++++++++++++++++++++++ rfcs/text/0007/user.yml | 10 + schemas/user.yml | 9 - 4 files changed, 780 insertions(+), 10 deletions(-) create mode 100644 rfcs/text/0007-multiple-users.md create mode 100644 rfcs/text/0007/user.yml diff --git a/rfcs/0000-rfc-template.md b/rfcs/0000-rfc-template.md index a90142f983..1a90036147 100644 --- a/rfcs/0000-rfc-template.md +++ b/rfcs/0000-rfc-template.md @@ -88,7 +88,7 @@ The following are the people that consulted on the contents of this RFC. * TBD | author + +- Stage: **2 (proposal)** +- Date: **2020-09-02** + +Many log events refer to more than one user at the same time. +Examples of this are remote logons as someone else, user management and privilege escalation. +ECS supports some of these situations already, via the fact that the "user" fields are reused inside other field sets (e.g. `source.user.*` and `destination.user.*`). + +The purpose of this proposal is two-fold: + +1. Define additional places where the user fields can be used, to support situations that aren't currently covered. +2. Review and clarify the purpose of all the places the user fields are currently defined. If some of them appear unneeded, we will also consider removing them. + +## Fields + +As of ECS 1.6, user fields can be present in an event in all of the following places: + +* `user.*` +* `host.user.*` +* `source.user.*` +* `destination.user.*` +* `client.user.*` +* `server.user.*` + +The new fields discussed in this RFC are the following: + +* `user.effective.*` +* `user.target.*` +* `user.changes.*` + +Notice that in these new additions, the user fields are now being nested as a different name. +The purpose is to hint at their role when used in these locations. + +It's also important to point out that the reuses of `user` inside other field sets +are not meant to inherit these new subsections inside the user field set. +For example: `source.user.*` will **not** contain `source.user.effective.*` and so on. + +The current reusable locations `user` will be amended to include a few more entries, +as demonstrated below. + +```YAML +# schemas/user.yml excerpt + reusable: + top_level: true + expected: + - client + - destination + - host + - server + - source + # Added for this RFC + - at: user + as: target + - at: user + as: effective + - at: user + as: changes +``` + +The `user` field set contains 6 leaf fields, 2 of which have a `.text` multi-field, +for a total of 8 fields. These 3 new nestings will therefore add a total of 24 fields. +This can be seen in more detail on PR [ecs#869](https://github.com/elastic/ecs/pull/869). + +## Usage + +The examples below will only populate `user.name` and sometimes `user.id` inside +the various `user` nestings, for readability. +However in implementations, otherwise noted all `user` fields that can reasonably +be populated in each location should be populated. + +### User fields at the Root of an Event + +The user fields at the root of an event must be used to capture the user +performing the main action described by the event. This is especially important +when there's more than one user present on the event. `user.*` fields at the root +of the event represent the user performing the action. + +In many cases, events that only mention one user should populate the user fields +at the root of the event, even if the user is not the one performing the action. + +In cases where a purpose-specific user field such as `url.username` is populated, +`user.name` should also be populated with the same user name. + +### Remote Logons + +When users are crossing host boundaries, the users are captured at +`source.user` and `destination.user`. + +Examples of data sources where this is applicable: + +* Remote logons via ssh, kerberos +* Firewalls observing network traffic + +In order to align with ECS' design of having `user` at the root of the event as the +user performing the action, all `source.user` fields should be copied to `user` at the root. + +Here's an example where user "alice" logs on to another host as user "deus": + +```JSON +{ + "user": { + "name": "alice" + }, + "source": { + "user": { + "name": "alice" + }, + "ip": "10.42.42.42" + }, + "destination": { + "user": { + "name": "deus" + }, + "ip": "10.42.42.43" + } +} +``` + +Whenever an event source populates the `client` and `server` fields in addition +to `source` and `destination`, the user fields should be copied accordingly as well. + +### Privilege Changes + +The `user.effective` fields are relevant when there's a privilege escalation or demotion +and it's possible to determine the user requesting/performing the escalation. + +Use the `user` fields at the root to capture who is requesting the privilege change, +and `user.effective` to capture the requested privilege level, whether or not the +privilege change was successful. + +Here are examples where this is applicable: + +* A user changing identity on a host. + * Examples: sudo, su, Run as. +* Running a program as a different user. Examples: + * A trusted user runs a specific admin command as root via a mechanism such as the Posix setuid/setgid. + * A service manager with administrator privileges starts child processes as limited + users, for security purposes (e.g. root runs Apache HTTPD as user "apache") + +In cases where the event source only gives information about the effective user +and not who requested different privileges, the `user` fields at the root of the +event should be used instead. + +Here's an example of user "alice" running a command as root via sudo: + +```JSON +{ + "user": { + "name": "alice", + "id": "1001", + "effective": { + "name": "root", + "id": "1" + } + } +} +``` + +When it's not possible (or it's prohibitive) to determine which user is requesting +different privilege levels, it's acceptable to capture the effective user at the +root of the event. Typically a privilege change event will already have happened, +for example: bob "su" as root; and subsequent events will show the root user +performing the actions. + +### Identity and Access Management + +Whenever a user is performing an action that affects another user -- typically +in IAM scenarios -- the user affected by the action is captured at +`user.target`. The user performing the IAM activity is captured at the root +of the event. + +Examples of IAM activity include: + +* user-a creates or deletes user-b +* user-a modifies user-b + +In the create/delete scenarios, there's either no prior state (user creation) +or no post state (user deletion). In these cases, only `user` at the root and +`user.target` must be populated. + +Example where "root" creates user "bob": + +```JSON +{ + "user": { + "name": "root", + "id": "1", + "target": { + "name": "bob", + "id": "1002", + ... + } + } +} +``` + +When there's a change of state to an existing user, `user.target` must be used +to capture the prior state of the user, and `user.changes` should list only +the changes that were performed. + +Example where "root" renames user "bob" to "bob.barker": + +```JSON +{ + "user": { + "name": "root", + "id": "1", + "target": { + "name": "bob", + "id": "1002" + }, + "changes": { + "name": "bob.barker" + } + } +} +``` + +You'll note in the example above that the user ID is not repeated under `user.changes.*`, +since the ID didn't change. + +### Combining IAM and Privilege Escalation + +We've covered above how `user.target` and `user.changes` can be used at the same time. +If privilege escalation is captured in the same IAM event, `user.effective` +should of course be used as well. + +Here's the "rename" example from the IAM section above. In the following example, +we know "alice" is escalating privileges as "root", in order to modify user "bob": + +```JSON +{ + "user": { + "name": "alice", + "id": "1001", + "effective": { + "name": "root", + "id": "1" + }, + "target": { + "name": "bob", + "id": "1002" + }, + "changes": { + "name": "bob.barker" + } + } +} +``` + +### Pivoting via related.user + +Any event that has user(s) in it should always populate the array field `related.user` +with all usernames seen on the event. Note that this field is not a nesting of +all user fields, it's a flat array meant to contain user identifiers. + +Taking the example from `user.changes` again, and populating `related.user` as well, +the event now looks like: + +```JSON +{ + "user": { + "name": "alice", + "id": "1001", + "effective": { + "name": "root", + "id": "1" + }, + "target": { + "name": "bob", + "id": "1002" + }, + "changes": { + "name": "bob.barker" + } + }, + "related": { "user": ["alice", "root", "bob", "bob.barker"] } +} +``` + +## Source data + +Here are some concrete examples of events with multiple users and user roles. +Note that the design of these fields is meant to allow all of their use at the +same time, *when needed*. However if events don't contain all user roles because +they're spread out across events, only the fields relevant to each event should be used. + +### Linux IAM and privilege escalation + +Here's a typical set of logs about a user creation on Linux. + +``` +Sep 29 19:55:09 localhost sudo: vagrant : TTY=pts/0 ; PWD=/home/vagrant ; USER=root ; COMMAND=/sbin/useradd test-user -p test-password +Sep 29 19:55:09 localhost sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=0) +Sep 29 19:55:09 localhost useradd[2097]: new group: name=test-user, GID=1001 +Sep 29 19:55:09 localhost useradd[2097]: new user: name=test-user, UID=1001, GID=1001, home=/home/test-user, shell=/bin/bash +Sep 29 19:55:09 localhost sudo: pam_unix(sudo:session): session closed for user root +``` + +#### Logical events + +A solution that coalesces log events to produce higher level logical events could +capture them all in the following way. + +Group creation: + +```JSON +{ + "event": { + "kind": "event", + "category": ["iam"], + "type": ["group", "creation"] + }, + "group": { + "name": "test-user", + "id": "1001" + }, + "user": { + "name": "vagrant", + "id": "1000", + "effective": { + "name": "root", + "id": "0" + }, + }, + "related": { "user": ["vagrant", "root"] } +} +``` + +User creation: + +```JSON +{ + "event": { + "kind": "event", + "category": ["iam"], + "type": ["user", "creation"] + }, + "user": { + "name": "vagrant", + "id": "1000", + "effective": { + "name": "root", + "id": "0" + }, + "target": { + "name": "test-user", + "id": "1001", + "group": { + "name": "test-user", + "id": "1001" + } + } + }, + "related": { "user": ["vagrant", "root", "test-user"] } +} +``` + +#### Raw events + +A solution that produces one event per log without coalescing would instead only +represent users with the information available in the given log event. + +event 1: + +```JSON +{ + "event": { + "kind": "event", + "category": ["process"], + "type": "creation" + }, + "user": { + "name": "vagrant", + "effective": { + "name": "root" + } + }, + "process": { + "name": "sudo", + "command_line": "/sbin/useradd test-user -p test-password" + } +} +``` + +event 2 (privilege escalation): + +```JSON +{ + "event": { + "kind": "event", + "category": ["session"], + "type": ["creation"], + "outcome": "success" + }, + "user": { + "name": "vagrant", + "effective": { + "name": "root" + } + }, + "process": { + "name": "sudo" + } +} +``` + +event 3 (IAM): + +```JSON +{ + "event": { + "kind": "event", + "category": ["iam"], + "type": ["group", "creation"], + "outcome": "success" + }, + "group": { + "name": "test-user", + "id": "1001" + }, + "process": { + "name": "useradd", + "pid": 2097 + } +} +``` + +event 4 (IAM): + +```JSON +{ + "event": { + "kind": "event", + "category": ["iam"], + "type": ["user", "creation"] + }, + "user": { + "name": "test-user", + "id": "1001" + }, + "process": { + "name": "useradd", + "pid": 2097 + } +} +``` + +Notice: in the event above, since the log mentions only the user being created, +we capture the user at the root of the event. We do this despite the fact that +they are not the one performing the action. + +event 5: + +```JSON +{ + "event": { + "kind": "event", + "category": ["session"], + "type": ["end"] + }, + "user": { + "name": "root" + }, + "process": { + "name": "sudo" + } +} +``` + +### Windows privilege escalation + +A successful local Windows Admin logon where user "testuser" escalates to Administrator: + +```XML + + + 4624 + ... + + + 5-1-5-21-202424912787-2692429404-2351956786-1000 + testuser + TEST + 0xb976c + S-1-5-21-2024912787-2692429404-2351956786-500 + Administrator + TEST + 0x11b621 + ... + +``` + +Would translate to + +```JSON +{ + "event": { + "code": "4624", + "provider": "Microsoft-Windows-Security-Auditing", + "kind": "event", + "category": ["authentication"], + "type": ["start"], + "outcome": "success" + }, + "user": { + "name": "testuser", + "domain": "TEST", + "id": "S-1-5-21-202424912787-2692429404-2351956786-1000", + "effective": { + "name": "Administrator", + "domain": "TEST", + "id": "S-1-5-21-2024912787-2692429404-2351956786-500" + } + }, + "related": { "user": ["testuser", "Administrator"] } +} +``` + +### Windows IAM + +Modifying an existing user account, where the administrator renames user John to John2: + +```XML + + + 4781 + ... + + + S-1-5-21-2024912787-2692429404-2351956786-500 + Administrator + TEST + 0x11b621 + S-1-5-21-2024912787-2692429404-2351956786-1000 + John + John2 + TEST + ... + +``` + +Would translate to + +```JSON +{ + "event": { + "code": "4781", + "provider": "Microsoft-Windows-Security-Auditing", + "kind": "event", + "category": ["iam"], + "type": ["user", "change"], + "outcome": "success" + }, + "user": { + "name": "Administrator", + "domain": "TEST", + "id": "S-1-5-21-2024912787-2692429404-2351956786-500", + "target": { + "name": "John", + "id": "S-1-5-21-2024912787-2692429404-2351956786-1000", + "domain": "TEST", + }, + "changes": { + "name": "John2" + } + }, + "related": { "user": ["John", "John2", "Administrator"] } +} +``` + +### Cloud privilege escalation + +Cloud systems also have privilege change concepts. + +Here's an example using AWS' assume role, in the event where AWS user "JohnRole1" +assumes the role of "DBARole". A simplified version of the Cloudtrail event could look like: + +```JSON +{ + "eventName": "AssumeRole", + "requestParameters": { + "roleArn": "arn:aws:iam::111111111111:role/JohnRole2", + }, + "resources": [ + { + "ARN": "arn:aws:iam::111122223333:role/JohnRole2", + "accountId": "111111111111", + "type": "AWS::IAM::Role" + } + ], + "responseElements": { + "assumedRoleUser": { + "arn": "arn:aws:sts::111111111111:assumed-role/test-role/DBARole", + "assumedRoleId": "AROAIFR7WHDTSOBEEFSTU:DBARole" + }, + "userIdentity": { + "accessKeyId": "AKIAI44QH8DHBEXAMPLE", + "accountId": "111111111111", + "arn": "arn:aws:sts::111111111111:assumed-role/JohnDoe/JohnRole1", + "principalId": "AROAIN5ATK5U7KEXAMPLE:JohnRole1", + "type": "AssumedRole" + } + } +} +``` + +And would translate to: + +```JSON +{ + "event": { + "action": "AssumeRole", + "kind": "event", + "category": ["authentication"], + "type": ["start"], + "outcome": "success" + }, + "user": { + "id": "AROAIN5ATK5U7KEXAMPLE:JohnRole1", + "effective": { + "id": "AROAIFR7WHDTSOBEEFSTU:DBARole", + } + }, + "cloud": { + "account": { "id": "111111111111" } ... + }, + "related": { "user": ["AROAIN5ATK5U7KEXAMPLE:JohnRole1", "AROAIFR7WHDTSOBEEFSTU:DBARole"] } +} +``` + +Subsequent actions taken under this assumed role will have both the principal user +and the assumed role in the `userIdentity`. This makes it easy to keep track of both +the real user at `user.*` and the escalated privileges at `user.effective.*` in +all subsequent activity after privilege escalation. + + + + + +## Scope of impact + +### New fields for IAM + +The fields `user.[changes|effective|target].*` are net new fields, +so they don't represent a breaking change. They are especially important +for security-related data sources around IAM and audit logs. +These event sources should be adjusted to populate these new fields, as they are +very important in getting a complete picture of user management activity. + +Some event sources for user management activity may have used `user.*` fields at the +root to describe the user being modified, rather than the user performing the action. +These sources will have to be modified to be consistent with the fact that user +fields at the root are meant to represent who's performing the action. + +### New user field duplication guidance + +In order to firmly establish the user fields at the root of the event as the user +performing the action, this RFC introduces new guidance: + +* Remote logons `source.user.*` should be copied to `user.*` +* Purpose-specific fields such as `url.username` should be copied at `user.name` + +These came up while working on this RFC; this is not guidance that was given +in the past. Data sources that populate these fields will need to be revisited +and adjusted accordingly. + + + +## Concerns + +### Deprecating host.user fields + +In past discussions and recent research, we have not identified a clear purpose +for the user fields nested at `host.user.*`. + +We are considering deprecating these fields with the intent to remove them completely. +Please let us know if you disagree with this, and share how you're using them. + +#### Resolution + +No resolution yet. + +### Documenting the purpose of each usage of the user fields + +As of ECS 1.6, the ECS documentation doesn't have a good place to explain at length +how to properly use the multiple nesting locations for `user`. +This is already a problem for the usage of `user` at the root vs its 5 reuse locations. +The addition of 3 new reuse locations adds to this situation. + +#### Resolution + +Adding a way to document field sets via free form text is being worked on independently +of this proposal ([ecs#943](https://github.com/elastic/ecs/issues/943)). + +For now the guidance on the meaning of each location where `user` can be used is in the +[Usage](#usage) section of this RFC. This guidance will be moved to the main ECS +documentation when the appropriate mechanism is available. + + + + + +## Real-world implementations + + + +## People + +The following are the people that consulted on the contents of this RFC. + +* @webmat | author +* TBD | sponsor +* @leehinman | subject matter expert +* @janniten | subject matter expert +* @willemdh | subject matter expert + + + + +## References + +* PR to add the new fields described in this RFC: [ecs#869](https://github.com/elastic/ecs/pull/869) +* Past issues discussing this addition in ECS, starting with the most recent: + * https://github.com/elastic/ecs/issues/809 + * https://github.com/elastic/ecs/issues/678 + * https://github.com/elastic/ecs/issues/589 + * https://github.com/elastic/ecs/issues/234 + * https://github.com/elastic/ecs/issues/117 +* Discussions about this in Beats: + * https://github.com/elastic/beats/pull/10192 + * https://github.com/elastic/beats/issues/10111 + * https://github.com/elastic/beats/pull/9963 +* Adding a free form documentation section per field set, to allow documenting + them in a more holistic manner https://github.com/elastic/ecs/issues/943 + +### RFC Pull Requests + +* Stage 2: https://github.com/elastic/ecs/pull/914 + +Note: This RFC was initially proposed via a PR that targeted stage 2, +given the amount of discussion that has already has happened on this subject. diff --git a/rfcs/text/0007/user.yml b/rfcs/text/0007/user.yml new file mode 100644 index 0000000000..23103f5b4a --- /dev/null +++ b/rfcs/text/0007/user.yml @@ -0,0 +1,10 @@ +--- +- name: user + reusable: + expected: + - at: user + as: target + - at: user + as: effective + - at: user + as: changes diff --git a/schemas/user.yml b/schemas/user.yml index f4f10750a7..fa50676efd 100644 --- a/schemas/user.yml +++ b/schemas/user.yml @@ -19,15 +19,6 @@ - server - source - # TODO Temporarily commented out to simplify initial rewrite review - - # - at: user - # as: target - # - at: user - # as: effective - # - at: user - # as: changes - type: group fields: From 9c562b0e4e834b3c1e91fe062a45539c21b6ca78 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Fri, 2 Oct 2020 13:35:25 -0400 Subject: [PATCH 05/45] Add --oss flag to the ECS generator script (#991) --- CHANGELOG.next.md | 1 + USAGE.md | 27 ++++++++++++++++++++- scripts/generator.py | 14 +++++++---- scripts/schema/oss.py | 29 ++++++++++++++++++++++ scripts/tests/unit/test_schema_oss.py | 35 +++++++++++++++++++++++++++ 5 files changed, 100 insertions(+), 6 deletions(-) create mode 100644 scripts/schema/oss.py create mode 100644 scripts/tests/unit/test_schema_oss.py diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 54ae430335..4b74d26590 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -42,6 +42,7 @@ Thanks, you're awesome :-) --> * Introduced `--strict` flag to perform stricter schema validation when running the generator script. #937 * Added check under `--strict` that ensures composite types in example fields are quoted. #966 * Added `ignore_above` and `normalizer` support for keyword multi-fields. #971 +* Added `--oss` flag for users who want to generate ECS templates for use on OSS clusters. #991 #### Improvements diff --git a/USAGE.md b/USAGE.md index e70da6b14f..cb0c49bf27 100644 --- a/USAGE.md +++ b/USAGE.md @@ -29,6 +29,7 @@ relevant artifacts for their unique set of data sources. + [Subset](#subset) + [Ref](#ref) + [Mapping & Template Settings](#mapping--template-settings) + + [OSS](#oss) + [Strict Mode](#strict-mode) + [Intermediate-Only](#intermediate-only) @@ -295,6 +296,30 @@ The `--template-settings` argument defines [index level settings](https://www.el For `template.json`, the `mappings` object is left empty: `{}`. Likewise the `properties` object remains empty in the `mapping.json` example. This will be filled in automatically by the script. +#### OSS + +**IMPORTANT**: This feature is unnecessary for most users. Our default free distribution +comes with the Elastic Basic license, and supports all data types used by ECS. +Learn more about our licenses [here](https://www.elastic.co/subscriptions). + +Users that want to use the open source version of Elasticsearch do not have access to the basic data types. +However some of these types have an OSS replacement that can be used instead, without too much loss of functionality. + +This flag performs a best effort fallback, replacing basic data types with their OSS replacement. + +Indices using purely OSS types will benefit from the normalization of ECS, but may be missing on some of the added functionality of these basic types. + +Current fallbacks applied by this flag are: + +- `wildcard` => `keyword` +- `version` => `keyword` + +Usage: + +``` +$ python scripts/generator.py --oss +``` + #### Strict Mode The `--strict` argument enables "strict mode". Strict mode performs a stricter validation step against the schema's contents. @@ -302,7 +327,7 @@ The `--strict` argument enables "strict mode". Strict mode performs a stricter v Basic usage: ``` -$ python/generator.py --strict +$ python scripts/generator.py --strict ``` Strict mode requires the following conditions, else the script exits on an exception: diff --git a/scripts/generator.py b/scripts/generator.py index 733f4155fe..b6dcf05db9 100644 --- a/scripts/generator.py +++ b/scripts/generator.py @@ -12,6 +12,7 @@ from generators import intermediate_files from schema import loader +from schema import oss from schema import cleaner from schema import finalizer from schema import subset_filter @@ -41,6 +42,8 @@ def main(): # ecs_helpers.yaml_dump('ecs.yml', fields) fields = loader.load_schemas(ref=args.ref, included_files=args.include) + if args.oss: + oss.fallback(fields) cleaner.clean(fields, strict=args.strict) finalizer.finalize(fields) fields = subset_filter.filter(fields, args.subset, out_dir) @@ -60,20 +63,21 @@ def main(): def argument_parser(): parser = argparse.ArgumentParser() - parser.add_argument('--intermediate-only', action='store_true', - help='generate intermediary files only') + parser.add_argument('--ref', action='store', help='git reference to use when building schemas') parser.add_argument('--include', nargs='+', help='include user specified directory of custom field definitions') parser.add_argument('--subset', nargs='+', help='render a subset of the schema') - parser.add_argument('--out', action='store', help='directory to store the generated files') - parser.add_argument('--ref', action='store', help='git reference to use when building schemas') + parser.add_argument('--out', action='store', help='directory to output the generated files') parser.add_argument('--template-settings', action='store', help='index template settings to use when generating elasticsearch template') parser.add_argument('--mapping-settings', action='store', help='mapping settings to use when generating elasticsearch template') + parser.add_argument('--oss', action='store_true', help='replace basic data types with oss ones where possible') parser.add_argument('--strict', action='store_true', - help='enforce stricter checking at schema cleanup') + help='enforce strict checking at schema cleanup') + parser.add_argument('--intermediate-only', action='store_true', + help='generate intermediary files only') args = parser.parse_args() # Clean up empty include of the Makefile if args.include and [''] == args.include: diff --git a/scripts/schema/oss.py b/scripts/schema/oss.py new file mode 100644 index 0000000000..ba38a254b1 --- /dev/null +++ b/scripts/schema/oss.py @@ -0,0 +1,29 @@ +# This script performs a best effort fallback of basic data types to equivalent +# OSS data types. +# Note however that not all basic data types have an OSS replacement. +# +# The way this script is currently written, it has to be run on the fields *before* +# the cleaner script applies defaults, as there's no concept of defaults here. +# But since it navigates using the visitor script, it can easily be moved around +# in the chain, provided we add support for defaults as well. +# +# For now, no warning is output on basic fields that don't have a fallback. +# This could be improved if ECS starts using such types. + +from schema import visitor + +TYPE_FALLBACKS = { + 'wildcard': 'keyword', + 'version': 'keyword' +} + + +def fallback(fields): + """Verify all fields for basic data type usage, and fallback to an OSS equivalent if appropriate.""" + visitor.visit_fields(fields, field_func=perform_fallback) + + +def perform_fallback(field): + """Performs a best effort fallback of basic data types to equivalent OSS data types.""" + if field['field_details']['type'] in TYPE_FALLBACKS.keys(): + field['field_details']['type'] = TYPE_FALLBACKS[field['field_details']['type']] diff --git a/scripts/tests/unit/test_schema_oss.py b/scripts/tests/unit/test_schema_oss.py new file mode 100644 index 0000000000..4ac08d9d08 --- /dev/null +++ b/scripts/tests/unit/test_schema_oss.py @@ -0,0 +1,35 @@ +import os +import pprint +import sys +import unittest + +sys.path.append(os.path.join(os.path.dirname(__file__), '../..')) + +from schema import oss +from schema import visitor + + +class TestSchemaOss(unittest.TestCase): + + def setUp(self): + self.maxDiff = None + + def test_wildcard_fallback(self): + field = {'field_details': {'name': 'myfield', 'type': 'wildcard'}} + oss.perform_fallback(field) + self.assertEqual('keyword', field['field_details']['type']) + + def test_version_fallback(self): + field = {'field_details': {'name': 'myfield', 'type': 'version'}} + oss.perform_fallback(field) + self.assertEqual('keyword', field['field_details']['type']) + + def test_basic_without_fallback(self): + field = {'field_details': {'name': 'myfield', 'type': 'histogram'}} + oss.perform_fallback(field) + self.assertEqual('histogram', field['field_details']['type']) + + def test_oss_no_fallback(self): + field = {'field_details': {'name': 'myfield', 'type': 'keyword'}} + oss.perform_fallback(field) + self.assertEqual('keyword', field['field_details']['type']) From 35ea3084be06cc825a77f89c8eb69a4579e3a036 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Fri, 2 Oct 2020 14:24:15 -0500 Subject: [PATCH 06/45] Uniformity across domain name breakdown fields (#981) Co-authored-by: Mathieu Martin --- CHANGELOG.next.md | 1 + code/go/ecs/client.go | 11 +++ code/go/ecs/destination.go | 11 +++ code/go/ecs/server.go | 11 +++ code/go/ecs/source.go | 11 +++ code/go/ecs/url.go | 11 +++ docs/field-details.asciidoc | 75 +++++++++++++++++++++ generated/beats/fields.ecs.yml | 70 +++++++++++++++++++ generated/csv/fields.csv | 5 ++ generated/ecs/ecs_flat.yml | 90 +++++++++++++++++++++++++ generated/ecs/ecs_nested.yml | 90 +++++++++++++++++++++++++ generated/elasticsearch/6/template.json | 20 ++++++ generated/elasticsearch/7/template.json | 20 ++++++ schemas/client.yml | 15 +++++ schemas/destination.yml | 15 +++++ schemas/server.yml | 15 +++++ schemas/source.yml | 15 +++++ schemas/url.yml | 15 +++++ 18 files changed, 501 insertions(+) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 4b74d26590..afd179c547 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -26,6 +26,7 @@ Thanks, you're awesome :-) --> * Expanded field set definitions for `source.*` and `destination.*`. #967 * Provided better guidance for mapping network events. #969 +* Added the field `.subdomain` under `client`, `destination`, `server`, `source` and `url`, to match its presence at `dns.question.subdomain`. #981 #### Deprecated diff --git a/code/go/ecs/client.go b/code/go/ecs/client.go index 2e11982755..9c6336d4bf 100644 --- a/code/go/ecs/client.go +++ b/code/go/ecs/client.go @@ -70,6 +70,17 @@ type Client struct { // as "co.uk". TopLevelDomain string `ecs:"top_level_domain"` + // The subdomain portion of a fully qualified domain name includes all of + // the names except the host name under the registered_domain. In a + // partially qualified domain, or if the the qualification level of the + // full name cannot be determined, subdomain contains all of the names + // below the registered domain. + // For example the subdomain portion of "www.east.mydomain.co.uk" is + // "east". If the domain has multiple levels of subdomain, such as + // "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", + // with no trailing period. + Subdomain string `ecs:"subdomain"` + // Bytes sent from the client to the server. Bytes int64 `ecs:"bytes"` diff --git a/code/go/ecs/destination.go b/code/go/ecs/destination.go index e3417e5bb9..1985e8720b 100644 --- a/code/go/ecs/destination.go +++ b/code/go/ecs/destination.go @@ -66,6 +66,17 @@ type Destination struct { // as "co.uk". TopLevelDomain string `ecs:"top_level_domain"` + // The subdomain portion of a fully qualified domain name includes all of + // the names except the host name under the registered_domain. In a + // partially qualified domain, or if the the qualification level of the + // full name cannot be determined, subdomain contains all of the names + // below the registered domain. + // For example the subdomain portion of "www.east.mydomain.co.uk" is + // "east". If the domain has multiple levels of subdomain, such as + // "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", + // with no trailing period. + Subdomain string `ecs:"subdomain"` + // Bytes sent from the destination to the source. Bytes int64 `ecs:"bytes"` diff --git a/code/go/ecs/server.go b/code/go/ecs/server.go index 74253bbb72..bc395a115c 100644 --- a/code/go/ecs/server.go +++ b/code/go/ecs/server.go @@ -70,6 +70,17 @@ type Server struct { // as "co.uk". TopLevelDomain string `ecs:"top_level_domain"` + // The subdomain portion of a fully qualified domain name includes all of + // the names except the host name under the registered_domain. In a + // partially qualified domain, or if the the qualification level of the + // full name cannot be determined, subdomain contains all of the names + // below the registered domain. + // For example the subdomain portion of "www.east.mydomain.co.uk" is + // "east". If the domain has multiple levels of subdomain, such as + // "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", + // with no trailing period. + Subdomain string `ecs:"subdomain"` + // Bytes sent from the server to the client. Bytes int64 `ecs:"bytes"` diff --git a/code/go/ecs/source.go b/code/go/ecs/source.go index f8ab84d581..3e4becbbbd 100644 --- a/code/go/ecs/source.go +++ b/code/go/ecs/source.go @@ -66,6 +66,17 @@ type Source struct { // as "co.uk". TopLevelDomain string `ecs:"top_level_domain"` + // The subdomain portion of a fully qualified domain name includes all of + // the names except the host name under the registered_domain. In a + // partially qualified domain, or if the the qualification level of the + // full name cannot be determined, subdomain contains all of the names + // below the registered domain. + // For example the subdomain portion of "www.east.mydomain.co.uk" is + // "east". If the domain has multiple levels of subdomain, such as + // "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", + // with no trailing period. + Subdomain string `ecs:"subdomain"` + // Bytes sent from the source to the destination. Bytes int64 `ecs:"bytes"` diff --git a/code/go/ecs/url.go b/code/go/ecs/url.go index 7afac8f4ba..6c1ac3be75 100644 --- a/code/go/ecs/url.go +++ b/code/go/ecs/url.go @@ -62,6 +62,17 @@ type Url struct { // as "co.uk". TopLevelDomain string `ecs:"top_level_domain"` + // The subdomain portion of a fully qualified domain name includes all of + // the names except the host name under the registered_domain. In a + // partially qualified domain, or if the the qualification level of the + // full name cannot be determined, subdomain contains all of the names + // below the registered domain. + // For example the subdomain portion of "www.east.mydomain.co.uk" is + // "east". If the domain has multiple levels of subdomain, such as + // "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", + // with no trailing period. + Subdomain string `ecs:"subdomain"` + // Port of the request, such as 443. Port int64 `ecs:"port"` diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index d13a5896c5..b716165642 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -407,6 +407,21 @@ example: `example.com` // =============================================================== +| client.subdomain +| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + +type: keyword + + + +example: `east` + +| extended + +// =============================================================== + | client.top_level_domain | The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". @@ -967,6 +982,21 @@ example: `example.com` // =============================================================== +| destination.subdomain +| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + +type: keyword + + + +example: `east` + +| extended + +// =============================================================== + | destination.top_level_domain | The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". @@ -5058,6 +5088,21 @@ example: `example.com` // =============================================================== +| server.subdomain +| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + +type: keyword + + + +example: `east` + +| extended + +// =============================================================== + | server.top_level_domain | The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". @@ -5397,6 +5442,21 @@ example: `example.com` // =============================================================== +| source.subdomain +| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + +type: keyword + + + +example: `east` + +| extended + +// =============================================================== + | source.top_level_domain | The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". @@ -6321,6 +6381,21 @@ example: `https` // =============================================================== +| url.subdomain +| The subdomain portion of a fully qualified domain name includes all of the names except the host name under the registered_domain. In a partially qualified domain, or if the the qualification level of the full name cannot be determined, subdomain contains all of the names below the registered domain. + +For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the subdomain field should contain "sub2.sub1", with no trailing period. + +type: keyword + + + +example: `east` + +| extended + +// =============================================================== + | url.top_level_domain | The effective top level domain (eTLD), also known as the domain suffix, is the last part of the domain name. For example, the top level domain for example.com is "com". diff --git a/generated/beats/fields.ecs.yml b/generated/beats/fields.ecs.yml index 9a64f03429..91f5254f1c 100644 --- a/generated/beats/fields.ecs.yml +++ b/generated/beats/fields.ecs.yml @@ -302,6 +302,20 @@ list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false - name: top_level_domain level: extended type: keyword @@ -709,6 +723,20 @@ list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false - name: top_level_domain level: extended type: keyword @@ -4105,6 +4133,20 @@ list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false - name: top_level_domain level: extended type: keyword @@ -4427,6 +4469,20 @@ list (http://publicsuffix.org). Trying to approximate this by simply taking the last two labels will not work well for TLDs such as "co.uk".' example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false - name: top_level_domain level: extended type: keyword @@ -5337,6 +5393,20 @@ Note: The `:` is not part of the scheme.' example: https + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false - name: top_level_domain level: extended type: keyword diff --git a/generated/csv/fields.csv b/generated/csv/fields.csv index d2d163a043..2e023a3236 100644 --- a/generated/csv/fields.csv +++ b/generated/csv/fields.csv @@ -30,6 +30,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,client,client.packets,long,core,,12,Packets sent from the client to the server. 2.0.0-dev,true,client,client.port,long,core,,,Port of the client. 2.0.0-dev,true,client,client.registered_domain,keyword,extended,,example.com,"The highest registered client domain, stripped of the subdomain." +2.0.0-dev,true,client,client.subdomain,keyword,extended,,east,The subdomain of the domain. 2.0.0-dev,true,client,client.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." 2.0.0-dev,true,client,client.user.domain,keyword,extended,,,Name of the directory the user is a member of. 2.0.0-dev,true,client,client.user.email,keyword,extended,,,User email address. @@ -80,6 +81,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,destination,destination.packets,long,core,,12,Packets sent from the destination to the source. 2.0.0-dev,true,destination,destination.port,long,core,,,Port of the destination. 2.0.0-dev,true,destination,destination.registered_domain,keyword,extended,,example.com,"The highest registered destination domain, stripped of the subdomain." +2.0.0-dev,true,destination,destination.subdomain,keyword,extended,,east,The subdomain of the domain. 2.0.0-dev,true,destination,destination.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." 2.0.0-dev,true,destination,destination.user.domain,keyword,extended,,,Name of the directory the user is a member of. 2.0.0-dev,true,destination,destination.user.email,keyword,extended,,,User email address. @@ -478,6 +480,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,server,server.packets,long,core,,12,Packets sent from the server to the client. 2.0.0-dev,true,server,server.port,long,core,,,Port of the server. 2.0.0-dev,true,server,server.registered_domain,keyword,extended,,example.com,"The highest registered server domain, stripped of the subdomain." +2.0.0-dev,true,server,server.subdomain,keyword,extended,,east,The subdomain of the domain. 2.0.0-dev,true,server,server.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." 2.0.0-dev,true,server,server.user.domain,keyword,extended,,,Name of the directory the user is a member of. 2.0.0-dev,true,server,server.user.email,keyword,extended,,,User email address. @@ -519,6 +522,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,source,source.packets,long,core,,12,Packets sent from the source to the destination. 2.0.0-dev,true,source,source.port,long,core,,,Port of the source. 2.0.0-dev,true,source,source.registered_domain,keyword,extended,,example.com,"The highest registered source domain, stripped of the subdomain." +2.0.0-dev,true,source,source.subdomain,keyword,extended,,east,The subdomain of the domain. 2.0.0-dev,true,source,source.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." 2.0.0-dev,true,source,source.user.domain,keyword,extended,,,Name of the directory the user is a member of. 2.0.0-dev,true,source,source.user.email,keyword,extended,,,User email address. @@ -637,6 +641,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,url,url.query,keyword,extended,,,Query string of the request. 2.0.0-dev,true,url,url.registered_domain,keyword,extended,,example.com,"The highest registered url domain, stripped of the subdomain." 2.0.0-dev,true,url,url.scheme,keyword,extended,,https,Scheme of the url. +2.0.0-dev,true,url,url.subdomain,keyword,extended,,east,The subdomain of the domain. 2.0.0-dev,true,url,url.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." 2.0.0-dev,true,url,url.username,keyword,extended,,,Username of the request. 2.0.0-dev,true,user,user.domain,keyword,extended,,,Name of the directory the user is a member of. diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index 64540cebfe..a209023534 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -348,6 +348,24 @@ client.registered_domain: normalize: [] short: The highest registered client domain, stripped of the subdomain. type: keyword +client.subdomain: + dashed_name: client-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: client.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword client.top_level_domain: dashed_name: client-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain suffix, @@ -925,6 +943,24 @@ destination.registered_domain: normalize: [] short: The highest registered destination domain, stripped of the subdomain. type: keyword +destination.subdomain: + dashed_name: destination-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: destination.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword destination.top_level_domain: dashed_name: destination-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain suffix, @@ -6144,6 +6180,24 @@ server.registered_domain: normalize: [] short: The highest registered server domain, stripped of the subdomain. type: keyword +server.subdomain: + dashed_name: server-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: server.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword server.top_level_domain: dashed_name: server-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain suffix, @@ -6652,6 +6706,24 @@ source.registered_domain: normalize: [] short: The highest registered source domain, stripped of the subdomain. type: keyword +source.subdomain: + dashed_name: source-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: source.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword source.top_level_domain: dashed_name: source-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain suffix, @@ -8124,6 +8196,24 @@ url.scheme: normalize: [] short: Scheme of the url. type: keyword +url.subdomain: + dashed_name: url-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: url.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword url.top_level_domain: dashed_name: url-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain suffix, diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index ee213ac0c8..2189a64503 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -494,6 +494,24 @@ client: normalize: [] short: The highest registered client domain, stripped of the subdomain. type: keyword + client.subdomain: + dashed_name: client-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: client.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword client.top_level_domain: dashed_name: client-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain @@ -1213,6 +1231,24 @@ destination: normalize: [] short: The highest registered destination domain, stripped of the subdomain. type: keyword + destination.subdomain: + dashed_name: destination-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: destination.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword destination.top_level_domain: dashed_name: destination-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain @@ -7281,6 +7317,24 @@ server: normalize: [] short: The highest registered server domain, stripped of the subdomain. type: keyword + server.subdomain: + dashed_name: server-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: server.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword server.top_level_domain: dashed_name: server-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain @@ -7833,6 +7887,24 @@ source: normalize: [] short: The highest registered source domain, stripped of the subdomain. type: keyword + source.subdomain: + dashed_name: source-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: source.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword source.top_level_domain: dashed_name: source-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain @@ -9374,6 +9446,24 @@ url: normalize: [] short: Scheme of the url. type: keyword + url.subdomain: + dashed_name: url-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: url.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword url.top_level_domain: dashed_name: url-top-level-domain description: 'The effective top level domain (eTLD), also known as the domain diff --git a/generated/elasticsearch/6/template.json b/generated/elasticsearch/6/template.json index fb0eaf7988..c597a6d2cb 100644 --- a/generated/elasticsearch/6/template.json +++ b/generated/elasticsearch/6/template.json @@ -151,6 +151,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -404,6 +408,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2254,6 +2262,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2452,6 +2464,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3013,6 +3029,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" diff --git a/generated/elasticsearch/7/template.json b/generated/elasticsearch/7/template.json index 36b5ed0af4..63c8c381c8 100644 --- a/generated/elasticsearch/7/template.json +++ b/generated/elasticsearch/7/template.json @@ -150,6 +150,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -403,6 +407,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2253,6 +2261,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -2451,6 +2463,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" @@ -3012,6 +3028,10 @@ "ignore_above": 1024, "type": "keyword" }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, "top_level_domain": { "ignore_above": 1024, "type": "keyword" diff --git a/schemas/client.yml b/schemas/client.yml index ec6175f692..e63ab70276 100644 --- a/schemas/client.yml +++ b/schemas/client.yml @@ -85,6 +85,21 @@ simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + - name: subdomain + level: extended + type: keyword + short: The subdomain of the domain. + description: > + The subdomain portion of a fully qualified domain name includes all of the names except + the host name under the registered_domain. In a partially qualified domain, or if the + the qualification level of the full name cannot be determined, subdomain contains all of + the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period. + example: east + # Metrics - name: bytes format: bytes diff --git a/schemas/destination.yml b/schemas/destination.yml index 42d3e154d5..a1e91958f7 100644 --- a/schemas/destination.yml +++ b/schemas/destination.yml @@ -80,6 +80,21 @@ simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + - name: subdomain + level: extended + type: keyword + short: The subdomain of the domain. + description: > + The subdomain portion of a fully qualified domain name includes all of the names except + the host name under the registered_domain. In a partially qualified domain, or if the + the qualification level of the full name cannot be determined, subdomain contains all of + the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period. + example: east + # Metrics - name: bytes format: bytes diff --git a/schemas/server.yml b/schemas/server.yml index 19fee450be..867b3bd03c 100644 --- a/schemas/server.yml +++ b/schemas/server.yml @@ -85,6 +85,21 @@ simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + - name: subdomain + level: extended + type: keyword + short: The subdomain of the domain. + description: > + The subdomain portion of a fully qualified domain name includes all of the names except + the host name under the registered_domain. In a partially qualified domain, or if the + the qualification level of the full name cannot be determined, subdomain contains all of + the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period. + example: east + # Metrics - name: bytes format: bytes diff --git a/schemas/source.yml b/schemas/source.yml index 65539b3d60..268b975312 100644 --- a/schemas/source.yml +++ b/schemas/source.yml @@ -80,6 +80,21 @@ simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + - name: subdomain + level: extended + type: keyword + short: The subdomain of the domain. + description: > + The subdomain portion of a fully qualified domain name includes all of the names except + the host name under the registered_domain. In a partially qualified domain, or if the + the qualification level of the full name cannot be determined, subdomain contains all of + the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period. + example: east + # Metrics - name: bytes format: bytes diff --git a/schemas/url.yml b/schemas/url.yml index 6ae2b572f2..8a523fbc8d 100644 --- a/schemas/url.yml +++ b/schemas/url.yml @@ -88,6 +88,21 @@ simply taking the last label will not work well for effective TLDs such as "co.uk". example: co.uk + - name: subdomain + level: extended + type: keyword + short: The subdomain of the domain. + description: > + The subdomain portion of a fully qualified domain name includes all of the names except + the host name under the registered_domain. In a partially qualified domain, or if the + the qualification level of the full name cannot be determined, subdomain contains all of + the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period. + example: east + - name: port format: string level: extended From c7422e88e5902bbeabdf3f0ebe6087c391c568b4 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Fri, 2 Oct 2020 15:11:29 -0500 Subject: [PATCH 07/45] [RFC] Wildcard - stage 2 proposal (#970) Co-authored-by: Mathieu Martin --- rfcs/text/0001-wildcard-data-type.md | 216 ++++++++++++++++++++++++--- rfcs/text/0001/agent.yml | 5 + rfcs/text/0001/as.yml | 5 + rfcs/text/0001/client.yml | 7 + rfcs/text/0001/destination.yml | 7 + rfcs/text/0001/dns.yml | 7 + rfcs/text/0001/error.yml | 9 ++ rfcs/text/0001/event.yml | 5 + rfcs/text/0001/file.yml | 9 ++ rfcs/text/0001/geo.yml | 5 + rfcs/text/0001/host.yml | 4 + rfcs/text/0001/http.yml | 9 ++ rfcs/text/0001/log.yml | 7 + rfcs/text/0001/organization.yml | 5 + rfcs/text/0001/os.yml | 7 + rfcs/text/0001/pe.yml | 5 + rfcs/text/0001/process.yml | 13 ++ rfcs/text/0001/registry.yml | 9 ++ rfcs/text/0001/server.yml | 7 + rfcs/text/0001/source.yml | 7 + rfcs/text/0001/tls.yml | 11 ++ rfcs/text/0001/url.yml | 13 ++ rfcs/text/0001/user.yml | 9 ++ rfcs/text/0001/user_agent.yml | 5 + rfcs/text/0001/x509.yml | 7 + 25 files changed, 371 insertions(+), 22 deletions(-) create mode 100644 rfcs/text/0001/agent.yml create mode 100644 rfcs/text/0001/as.yml create mode 100644 rfcs/text/0001/client.yml create mode 100644 rfcs/text/0001/destination.yml create mode 100644 rfcs/text/0001/dns.yml create mode 100644 rfcs/text/0001/error.yml create mode 100644 rfcs/text/0001/event.yml create mode 100644 rfcs/text/0001/file.yml create mode 100644 rfcs/text/0001/geo.yml create mode 100644 rfcs/text/0001/host.yml create mode 100644 rfcs/text/0001/http.yml create mode 100644 rfcs/text/0001/log.yml create mode 100644 rfcs/text/0001/organization.yml create mode 100644 rfcs/text/0001/os.yml create mode 100644 rfcs/text/0001/pe.yml create mode 100644 rfcs/text/0001/process.yml create mode 100644 rfcs/text/0001/registry.yml create mode 100644 rfcs/text/0001/server.yml create mode 100644 rfcs/text/0001/source.yml create mode 100644 rfcs/text/0001/tls.yml create mode 100644 rfcs/text/0001/url.yml create mode 100644 rfcs/text/0001/user.yml create mode 100644 rfcs/text/0001/user_agent.yml create mode 100644 rfcs/text/0001/x509.yml diff --git a/rfcs/text/0001-wildcard-data-type.md b/rfcs/text/0001-wildcard-data-type.md index ff81ac08a0..448a929f4e 100644 --- a/rfcs/text/0001-wildcard-data-type.md +++ b/rfcs/text/0001-wildcard-data-type.md @@ -1,8 +1,8 @@ # 0001: Wildcard Field Adoption into ECS -- Stage: **1 (proposal)** -- Date: **TBD** +- Stage: **2 (draft)** +- Date: **2020-10-02** Wildcard is a data type for Elasticsearch string fields being introduced in Elasticsearch 7.9. Wildcard optimizes performance for queries using wildcards (`*`) and regex, allowing users to perform `grep`-like searches without the limitations of the existing text[0] and keyword[1] types. @@ -10,28 +10,46 @@ text[0] and keyword[1] types. ## Fields -For a field to use wildcard, it will require changing the the field's defined schema `type` from `keyword` to `wildcard`. The following fieldsets are expected to adopt `wildcard` in at least one of their fields: - -* `agent.*` -* `destination.*` -* `error.*` -* `file.*` -* `host.*` -* `http.*` -* `os.*` -* `process.*` -* `registry.*` -* `source.*` -* `url.*` -* `user.*` -* `user_agent.*` +### Identified Wildcard Fields + +For a field to use wildcard, it will require changing the the field's defined schema `type` from `keyword` to `wildcard`. The following fields are candidates for `wildcard`: + +| Field Set | Field(s) | +| --------- | -------- | +| [`agent`](0001/agent.yml) | `agent.build.original` | +| [`as`](0001/as.yml) | `as.organization.name` | +| [`client`](0001/client.yml) | `client.domain`
`client.registered_domain` | +| [`destination`](0001/destination.yml) | `destination.domain`
`destination.registered_domain` | +| [`dns`](0001/dns.yml) | `dns.question.name`
`dns.answers.data` | +| [`error`](0001/error.yml) | `error.stack_trace`
`error.type` | +| [`event`](0001/event.yml) | `event.original` | +| [`file`](0001/file.yml) | `file.directory`
`file.path`
`file.target_path` | +| [`geo`](0001/geo.yml) | `geo.name` | +| [`host`](0001/host.yml) | `host.hostname`
| +| [`http`](0001/http.yml) | `http.request.referrer`
`http.request.body.content`
`http.response.body.content` | +| [`log`](0001/log.yml) | `log.file.path`
`log.logger` | +| [`os`](0001/os.yml) | `os.name`
`os.full` | +| [`pe`](0001/pe.yml) | `pe.original_file_name` | +| [`process`](0001/process.yml) | `process.command_line`
`process.executable`
`process.name`
`process.title`
`process.working_directory`
| +| [`registry`](0001/registry.yml) | `registry.key`
`registry.path`
`registry.data.strings` | +| [`server`](0001/server.yml) | `server.domain`
`server.registered_domain` | +| [`source`](0001/source.yml) | `source.domain`
`source.registered_domain` | +| [`tls`](0001/tls.yml) | `tls.client.issuer`
`tls.client.subject`
`tls.server.issuer`
`tls.server.subject` | +| [`url`](0001/url.yml) | `url.full`
`url.original`
`url.path`
`url.domain`
`url.registered_domain` | +| [`user`](0001/user.yml) | `user.name`
`user.full_name`
`user.email`
`user.domain` | +| [`user_agent`](0001/user_agent.yml) | `user_agent.original` | +| [`x509`](0001/x509.yml) | `x509.issuer.distinguished_name`
`x509.subject.distinguished_name` | + +The full set of schema files which will be transitioning to `wildcard` are located in directory [rfcs/text/0001/](0001/). + +### Example definition Here's an example of applying this change to the `process.command_line` field: -**Definition as of ECS 1.5.0** +**Definition as of ECS 1.6.0** Schema definition: @@ -137,7 +155,7 @@ The following table is a comparison of `wildcard` vs. `keyword` [2]: | Searched by "all fields" queries | Y | Y | | Disk costs for mostly unique values | high (see *5) | lower (see *5) | | Dist costs for mostly identical values | low (see *5) | medium (see *5) | -| Max character size for a field value | 256 for default JSON string mapping (1024 for ECS), 32766 Luence max | unlimited | +| Max character size for a field value | 256 for default JSON string mapping (1024 for ECS), 32766 Lucene max | unlimited | | Supports normalizers in mappings | Y | N | | Indexing speeds | Fast | Slower (see *6) | @@ -232,9 +250,11 @@ Additional cases for wildcard searching against command line executions: ## Source data +### Categories + * Windows events * Sysmon events * Powershell events @@ -244,6 +264,138 @@ Stage 1: Provide a high-level description of example sources of data. This does * Endpoint agents * Application stack traces +### Real world examples + +Each example in this section contains a partial index mapping, a partial event, and one wildcard search query. Each query example uses a leading wildcard on expected high-cardinality fields where `wildcard` is performs far better than `keyword`. + +**Windows registry event from sysmon:** + +``` +### Mapping (partial) +... + "registry" : { + "properties" : { + "key" : { + "type" : "wildcard" + } + } + } +... + +### Event (partial) +... + "registry": { + "path": "HKU\\S-1-5-21-1957236100-58272097-297103362-500\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\HideFileExt", + "hive": "HKU", + "key": "S-1-5-21-1957236100-58272097-297103362-500\\Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Advanced\\HideFileExt", + "value": "HideFileExt", + "data": { + "strings": [ + "1" + ], + "type": "SZ_DWORD" + } +... + +### Query + +GET winlogbeat-*/_search +{ + "query": { + "wildcard": { + "registry.key": { + "value": "*CurrentVersion*" + } + } + } +} + +``` + +**Windows Powershell logging event:** + +``` +### Mapping (partial) +... + "process" : { + "properties" : { + "command_line" : { + "type" : "wildcard", + "fields" : { + "text" : { + "type" : "text", + "norms" : false + } + } + } + } + } +... + +### Event (partial) + + "process": { + "pid": 3540, + ... + "command_line": "C:\\Windows\\System32\\svchost.exe -k netsvcs -p -s NetSetupSvc" + } + +### Query + +GET winlogbeat-*/_search +{ + "_source": false, + "query": { + "wildcard": { + "process.command_line": { + "value": "*-k netsvcs -p*" + } + } + } +} +``` + +**Wildcard query against original URL from a squid web proxy event:** + +``` +### Mapping (partial) + +... + "url" : { + "original" : { + "type" : "wildcard", + "fields" : { + "text" : { + "type" : "text", + "norms" : false + } + } + } +... + +### Event (partial) + +... + "url": { + "original": "http://example.com/cart.do?action=view&itemId=HolyGouda", + "domain": "example.com" + } +... + +### Query + +GET filebeat-*/_search +{ + "_source": false, + "query": { + "wildcard": { + "url.original": { + "value": "*action=view*Gouda" + } + } + } +} +``` ## Scope of impact @@ -270,7 +422,7 @@ ECS is and will remain an open source licensed project. However, there will be f ## Concerns ### Wildcard and case-insensitivity @@ -287,6 +439,8 @@ Performance and storage characteristics between wildcard and keyword will be dif ECS applies the `ignore_above` setting to keyword fields to prevent strings longer than 1024 characters from being indexed or stored. While `ignore_above` can be raised, Lucene implements a term byte-length limit of 32766 which cannot be adjusted. Wildcard supports an unlimited max character size for a field value. The `wildcard` field type will still have the `ignore_above` option available, and a reasonable limit may be need applied to mitigate unexpected side-effects. +For the initial adoption into ECS, `wildcard` fields will not have an `ignore_above` option defined. + ### Licensing Until now ECS has relied only on OSS licensed features, but ECS will also support Elastic licensed features. The ECS project will remain OSS licensed with the schema implementing Elastic licensed features as part of the specification. When ECS adopts a feature available only under a license, it will be noted in the documentation. ECS plans to provide tooling options which continue to support OSS consumers of ECS and the Elastic Stack. @@ -295,6 +449,23 @@ Until now ECS has relied only on OSS licensed features, but ECS will also suppor A data shipper which uses the `wildcard` field type may need to verify that the configured output Elasticsearch destination can support it (>= 7.9.0). For example, if a future version of Beats adopts `wildcard` in index mappings, Beats would may need to gracefully handle a scenario where the targeted Elasticsearch instance doesn't support the data type. +### Text fields migrating to wildcard + +ECS currently has two `text` fields that would likely benefit from migrating to `wildcard`. +Doing so on the canonical field (as opposed to adding a multi-field) would be a breaking change. +However adding a `.wildcard` multi-field may cause confusion, as they would be the only +places where `wildcard` appears as a multi-field. + +The fields are: + +- `message` +- `error.message` + +Paradoxically, in some cases they also benefit from the `text` data type. +A prime example is Windows Event Logs' main messages, which is stored in the `message` field. + +The situation is captured here for addressing at a later stage. + ## People The following are the people that consulted on the contents of this RFC. @@ -326,3 +497,4 @@ The following are the people that consulted on the contents of this RFC. * Stage 0: https://github.com/elastic/ecs/pull/890 * Stage 1: https://github.com/elastic/ecs/pull/904 +* Stage 2: https://github.com/elastic/ecs/pull/970 diff --git a/rfcs/text/0001/agent.yml b/rfcs/text/0001/agent.yml new file mode 100644 index 0000000000..d09e77111d --- /dev/null +++ b/rfcs/text/0001/agent.yml @@ -0,0 +1,5 @@ +--- +- name: agent + fields: + - name: build.original + type: wildcard diff --git a/rfcs/text/0001/as.yml b/rfcs/text/0001/as.yml new file mode 100644 index 0000000000..96cf45621c --- /dev/null +++ b/rfcs/text/0001/as.yml @@ -0,0 +1,5 @@ +--- +- name: as + fields: + - name: organization.name + type: wildcard diff --git a/rfcs/text/0001/client.yml b/rfcs/text/0001/client.yml new file mode 100644 index 0000000000..14ed3a9a37 --- /dev/null +++ b/rfcs/text/0001/client.yml @@ -0,0 +1,7 @@ +--- + - name: client + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/rfcs/text/0001/destination.yml b/rfcs/text/0001/destination.yml new file mode 100644 index 0000000000..d64a84c6be --- /dev/null +++ b/rfcs/text/0001/destination.yml @@ -0,0 +1,7 @@ +--- + - name: destination + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/rfcs/text/0001/dns.yml b/rfcs/text/0001/dns.yml new file mode 100644 index 0000000000..54f9ccd69a --- /dev/null +++ b/rfcs/text/0001/dns.yml @@ -0,0 +1,7 @@ +--- +- name: dns + fields: + - name: question.name + type: wildcard + - name: answers.data + type: wildcard diff --git a/rfcs/text/0001/error.yml b/rfcs/text/0001/error.yml new file mode 100644 index 0000000000..f2004d3fe0 --- /dev/null +++ b/rfcs/text/0001/error.yml @@ -0,0 +1,9 @@ +--- +- name: error + fields: + - name: stack_trace + index: true + type: wildcard + + - name: type + type: wildcard diff --git a/rfcs/text/0001/event.yml b/rfcs/text/0001/event.yml new file mode 100644 index 0000000000..07daa3ac87 --- /dev/null +++ b/rfcs/text/0001/event.yml @@ -0,0 +1,5 @@ +--- +- name: event + fields: + - name: original + type: wildcard diff --git a/rfcs/text/0001/file.yml b/rfcs/text/0001/file.yml new file mode 100644 index 0000000000..f4938d38be --- /dev/null +++ b/rfcs/text/0001/file.yml @@ -0,0 +1,9 @@ +--- +- name: file + fields: + - name: directory + type: wildcard + - name: path + type: wildcard + - name: target_path + type: wildcard diff --git a/rfcs/text/0001/geo.yml b/rfcs/text/0001/geo.yml new file mode 100644 index 0000000000..d3445a5a2b --- /dev/null +++ b/rfcs/text/0001/geo.yml @@ -0,0 +1,5 @@ +--- + - name: geo + fields: + - name: name + type: wildcard diff --git a/rfcs/text/0001/host.yml b/rfcs/text/0001/host.yml new file mode 100644 index 0000000000..91f3d1bbc2 --- /dev/null +++ b/rfcs/text/0001/host.yml @@ -0,0 +1,4 @@ +- name: host + fields: + - name: hostname + type: wildcard diff --git a/rfcs/text/0001/http.yml b/rfcs/text/0001/http.yml new file mode 100644 index 0000000000..1722cdc5e7 --- /dev/null +++ b/rfcs/text/0001/http.yml @@ -0,0 +1,9 @@ +--- +- name: http + fields: + - name: request.body.content + type: wildcard + - name: request.referrer + type: wildcard + - name: response.body.content + type: wildcard diff --git a/rfcs/text/0001/log.yml b/rfcs/text/0001/log.yml new file mode 100644 index 0000000000..8a2f2dd397 --- /dev/null +++ b/rfcs/text/0001/log.yml @@ -0,0 +1,7 @@ +--- +- name: log + fields: + - name: file.path + type: wildcard + - name: logger + type: wildcard diff --git a/rfcs/text/0001/organization.yml b/rfcs/text/0001/organization.yml new file mode 100644 index 0000000000..594581413b --- /dev/null +++ b/rfcs/text/0001/organization.yml @@ -0,0 +1,5 @@ +--- +- name: organization + fields: + - name: name + type: wildcard diff --git a/rfcs/text/0001/os.yml b/rfcs/text/0001/os.yml new file mode 100644 index 0000000000..ec9d71a79c --- /dev/null +++ b/rfcs/text/0001/os.yml @@ -0,0 +1,7 @@ +--- +- name: os + fields: + - name: name + type: wildcard + - name: full + type: wildcard diff --git a/rfcs/text/0001/pe.yml b/rfcs/text/0001/pe.yml new file mode 100644 index 0000000000..6e729b39f4 --- /dev/null +++ b/rfcs/text/0001/pe.yml @@ -0,0 +1,5 @@ +--- + - name: pe + fields: + - name: original_file_name + type: wildcard diff --git a/rfcs/text/0001/process.yml b/rfcs/text/0001/process.yml new file mode 100644 index 0000000000..da492e4564 --- /dev/null +++ b/rfcs/text/0001/process.yml @@ -0,0 +1,13 @@ +--- +- name: process + fields: + - name: command_line + type: wildcard + - name: executable + type: wildcard + - name: name + type: wildcard + - name: title + type: wildcard + - name: working_directory + type: wildcard diff --git a/rfcs/text/0001/registry.yml b/rfcs/text/0001/registry.yml new file mode 100644 index 0000000000..66f6f6b22c --- /dev/null +++ b/rfcs/text/0001/registry.yml @@ -0,0 +1,9 @@ +--- +- name: registry + fields: + - name: key + type: wildcard + - name: path + type: wildcard + - name: data.strings + type: wildcard diff --git a/rfcs/text/0001/server.yml b/rfcs/text/0001/server.yml new file mode 100644 index 0000000000..70c285f374 --- /dev/null +++ b/rfcs/text/0001/server.yml @@ -0,0 +1,7 @@ +--- + - name: server + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/rfcs/text/0001/source.yml b/rfcs/text/0001/source.yml new file mode 100644 index 0000000000..d810a6cb79 --- /dev/null +++ b/rfcs/text/0001/source.yml @@ -0,0 +1,7 @@ +--- +- name: source + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/rfcs/text/0001/tls.yml b/rfcs/text/0001/tls.yml new file mode 100644 index 0000000000..4f5378a313 --- /dev/null +++ b/rfcs/text/0001/tls.yml @@ -0,0 +1,11 @@ +--- +- name: tls + fields: + - name: client.issuer + type: wildcard + - name: client.subject + type: wildcard + - name: server.issuer + type: wildcard + - name: server.subject + type: wildcard diff --git a/rfcs/text/0001/url.yml b/rfcs/text/0001/url.yml new file mode 100644 index 0000000000..0d5f66c36a --- /dev/null +++ b/rfcs/text/0001/url.yml @@ -0,0 +1,13 @@ +--- +- name: url + fields: + - name: original + type: wildcard + - name: full + type: wildcard + - name: path + type: wildcard + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/rfcs/text/0001/user.yml b/rfcs/text/0001/user.yml new file mode 100644 index 0000000000..89e182fbee --- /dev/null +++ b/rfcs/text/0001/user.yml @@ -0,0 +1,9 @@ +--- +- name: user + fields: + - name: name + type: wildcard + - name: full_name + type: wildcard + - name: email + type: wildcard diff --git a/rfcs/text/0001/user_agent.yml b/rfcs/text/0001/user_agent.yml new file mode 100644 index 0000000000..c413a9d702 --- /dev/null +++ b/rfcs/text/0001/user_agent.yml @@ -0,0 +1,5 @@ +--- +- name: user_agent + fields: + - name: original + type: wildcard diff --git a/rfcs/text/0001/x509.yml b/rfcs/text/0001/x509.yml new file mode 100644 index 0000000000..d1c7d8af6b --- /dev/null +++ b/rfcs/text/0001/x509.yml @@ -0,0 +1,7 @@ +--- +- name: x509 + fields: + - name: issuer.distinguished_name + type: wildcard + - name: subject.distinguished_name + type: wildcard From e29b7b1fffc55915961bf2a57b9d0db1e73bf16e Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Fri, 2 Oct 2020 16:27:29 -0400 Subject: [PATCH 08/45] Fix the month in the stage advancement date for RFC-0007 (#996) --- rfcs/text/0007-multiple-users.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rfcs/text/0007-multiple-users.md b/rfcs/text/0007-multiple-users.md index 344255f5f7..9403eecb0a 100644 --- a/rfcs/text/0007-multiple-users.md +++ b/rfcs/text/0007-multiple-users.md @@ -2,7 +2,7 @@ - Stage: **2 (proposal)** -- Date: **2020-09-02** +- Date: **2020-10-02** Many log events refer to more than one user at the same time. Examples of this are remote logons as someone else, user management and privilege escalation. @@ -764,6 +764,7 @@ e.g.: ### RFC Pull Requests * Stage 2: https://github.com/elastic/ecs/pull/914 + * Stage 2 correction: https://github.com/elastic/ecs/pull/996 Note: This RFC was initially proposed via a PR that targeted stage 2, given the amount of discussion that has already has happened on this subject. From 1d32671bb161f6333bfdb214ed0c0d4bd23b25cd Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Fri, 2 Oct 2020 16:32:13 -0400 Subject: [PATCH 09/45] Add network directions ingress and egress (#945) --- CHANGELOG.next.md | 1 + code/go/ecs/network.go | 23 ++++++++++++++++------- docs/field-details.asciidoc | 12 +++++++++--- generated/beats/fields.ecs.yml | 20 +++++++++++++------- generated/ecs/ecs_flat.yml | 20 +++++++++++++------- generated/ecs/ecs_nested.yml | 20 +++++++++++++------- schemas/network.yml | 19 ++++++++++++++----- 7 files changed, 79 insertions(+), 36 deletions(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index afd179c547..417377de00 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -21,6 +21,7 @@ Thanks, you're awesome :-) --> * Added Mime Type fields to HTTP request and response. #944 * Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 * Added `configuration` as an allowed `event.category`. #963 +* Added network directions ingress and egress. #945 #### Improvements diff --git a/code/go/ecs/network.go b/code/go/ecs/network.go index e47d15abd2..a696a4e419 100644 --- a/code/go/ecs/network.go +++ b/code/go/ecs/network.go @@ -61,6 +61,8 @@ type Network struct { // Direction of the network traffic. // Recommended values are: + // * ingress + // * egress // * inbound // * outbound // * internal @@ -68,10 +70,17 @@ type Network struct { // * unknown // // When mapping events from a host-based monitoring context, populate this - // field from the host's point of view. + // field from the host's point of view, using the values "ingress" or + // "egress". // When mapping events from a network or perimeter-based monitoring - // context, populate this field from the point of view of your network - // perimeter. + // context, populate this field from the point of view of the network + // perimeter, using the values "inbound", "outbound", "internal" or + // "external". + // Note that "internal" is not crossing perimeter boundaries, and is meant + // to describe communication between two hosts within the perimeter. Note + // also that "external" is meant to describe traffic between two hosts that + // are external to the perimeter. This could for example be useful for ISPs + // or VPN service providers. Direction string `ecs:"direction"` // Host IP address when the source IP address is the proxy. @@ -94,9 +103,9 @@ type Network struct { Packets int64 `ecs:"packets"` // Network.inner fields are added in addition to network.vlan fields to - // describe the innermost VLAN when q-in-q VLAN tagging is present. - // Allowed fields include vlan.id and vlan.name. Inner vlan fields are - // typically used when sending traffic with multiple 802.1q encapsulations - // to a network sensor (e.g. Zeek, Wireshark.) + // describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + // fields include vlan.id and vlan.name. Inner vlan fields are typically + // used when sending traffic with multiple 802.1q encapsulations to a + // network sensor (e.g. Zeek, Wireshark.) Inner map[string]interface{} `ecs:"inner"` } diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index b716165642..9bd030d0af 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -3356,6 +3356,10 @@ example: `1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=` Recommended values are: + * ingress + + * egress + * inbound * outbound @@ -3368,9 +3372,11 @@ Recommended values are: -When mapping events from a host-based monitoring context, populate this field from the host's point of view. +When mapping events from a host-based monitoring context, populate this field from the host's point of view, using the values "ingress" or "egress". + +When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of the network perimeter, using the values "inbound", "outbound", "internal" or "external". -When mapping events from a network or perimeter-based monitoring context, populate this field from the point of view of your network perimeter. +Note that "internal" is not crossing perimeter boundaries, and is meant to describe communication between two hosts within the perimeter. Note also that "external" is meant to describe traffic between two hosts that are external to the perimeter. This could for example be useful for ISPs or VPN service providers. type: keyword @@ -3409,7 +3415,7 @@ example: `6` // =============================================================== | network.inner -| Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) +| Network.inner fields are added in addition to network.vlan fields to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) type: object diff --git a/generated/beats/fields.ecs.yml b/generated/beats/fields.ecs.yml index 91f5254f1c..8b9cca49be 100644 --- a/generated/beats/fields.ecs.yml +++ b/generated/beats/fields.ecs.yml @@ -2622,11 +2622,17 @@ type: keyword ignore_above: 1024 description: "Direction of the network traffic.\nRecommended values are:\n \ - \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ - \ mapping events from a host-based monitoring context, populate this field\ - \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ - \ monitoring context, populate this field from the point of view of your network\ - \ perimeter." + \ * ingress\n * egress\n * inbound\n * outbound\n * internal\n * external\n\ + \ * unknown\n\nWhen mapping events from a host-based monitoring context,\ + \ populate this field from the host's point of view, using the values \"ingress\"\ + \ or \"egress\".\nWhen mapping events from a network or perimeter-based monitoring\ + \ context, populate this field from the point of view of the network perimeter,\ + \ using the values \"inbound\", \"outbound\", \"internal\" or \"external\"\ + .\nNote that \"internal\" is not crossing perimeter boundaries, and is meant\ + \ to describe communication between two hosts within the perimeter. Note also\ + \ that \"external\" is meant to describe traffic between two hosts that are\ + \ external to the perimeter. This could for example be useful for ISPs or\ + \ VPN service providers." example: inbound - name: forwarded_ip level: core @@ -2645,8 +2651,8 @@ level: extended type: object description: Network.inner fields are added in addition to network.vlan fields - to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed - fields include vlan.id and vlan.name. Inner vlan fields are typically used + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) default_field: false diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index a209023534..08277b4372 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -4019,11 +4019,17 @@ network.community_id: type: keyword network.direction: dashed_name: network-direction - description: "Direction of the network traffic.\nRecommended values are:\n * inbound\n\ - \ * outbound\n * internal\n * external\n * unknown\n\nWhen mapping events\ - \ from a host-based monitoring context, populate this field from the host's point\ - \ of view.\nWhen mapping events from a network or perimeter-based monitoring context,\ - \ populate this field from the point of view of your network perimeter." + description: "Direction of the network traffic.\nRecommended values are:\n * ingress\n\ + \ * egress\n * inbound\n * outbound\n * internal\n * external\n * unknown\n\ + \nWhen mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view, using the values \"ingress\" or \"egress\".\n\ + When mapping events from a network or perimeter-based monitoring context, populate\ + \ this field from the point of view of the network perimeter, using the values\ + \ \"inbound\", \"outbound\", \"internal\" or \"external\".\nNote that \"internal\"\ + \ is not crossing perimeter boundaries, and is meant to describe communication\ + \ between two hosts within the perimeter. Note also that \"external\" is meant\ + \ to describe traffic between two hosts that are external to the perimeter. This\ + \ could for example be useful for ISPs or VPN service providers." example: inbound flat_name: network.direction ignore_above: 1024 @@ -4058,8 +4064,8 @@ network.iana_number: network.inner: dashed_name: network-inner description: Network.inner fields are added in addition to network.vlan fields to - describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields - include vlan.id and vlan.name. Inner vlan fields are typically used when sending + describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields + include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) flat_name: network.inner level: extended diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index 2189a64503..b4fecef933 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -4768,11 +4768,17 @@ network: network.direction: dashed_name: network-direction description: "Direction of the network traffic.\nRecommended values are:\n \ - \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ - \ mapping events from a host-based monitoring context, populate this field\ - \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ - \ monitoring context, populate this field from the point of view of your network\ - \ perimeter." + \ * ingress\n * egress\n * inbound\n * outbound\n * internal\n * external\n\ + \ * unknown\n\nWhen mapping events from a host-based monitoring context,\ + \ populate this field from the host's point of view, using the values \"ingress\"\ + \ or \"egress\".\nWhen mapping events from a network or perimeter-based monitoring\ + \ context, populate this field from the point of view of the network perimeter,\ + \ using the values \"inbound\", \"outbound\", \"internal\" or \"external\"\ + .\nNote that \"internal\" is not crossing perimeter boundaries, and is meant\ + \ to describe communication between two hosts within the perimeter. Note also\ + \ that \"external\" is meant to describe traffic between two hosts that are\ + \ external to the perimeter. This could for example be useful for ISPs or\ + \ VPN service providers." example: inbound flat_name: network.direction ignore_above: 1024 @@ -4807,8 +4813,8 @@ network: network.inner: dashed_name: network-inner description: Network.inner fields are added in addition to network.vlan fields - to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed - fields include vlan.id and vlan.name. Inner vlan fields are typically used + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) flat_name: network.inner diff --git a/schemas/network.yml b/schemas/network.yml index 4b01088e9a..c6fed904b7 100644 --- a/schemas/network.yml +++ b/schemas/network.yml @@ -85,6 +85,8 @@ Direction of the network traffic. Recommended values are: + * ingress + * egress * inbound * outbound * internal @@ -92,10 +94,17 @@ * unknown When mapping events from a host-based monitoring context, populate this - field from the host's point of view. + field from the host's point of view, using the values "ingress" or "egress". When mapping events from a network or perimeter-based monitoring context, - populate this field from the point of view of your network perimeter. + populate this field from the point of view of the network perimeter, + using the values "inbound", "outbound", "internal" or "external". + + Note that "internal" is not crossing perimeter boundaries, and is meant + to describe communication between two hosts within the perimeter. Note also + that "external" is meant to describe traffic between two hosts that are + external to the perimeter. This could for example be useful for ISPs or + VPN service providers. example: inbound - name: forwarded_ip @@ -138,14 +147,14 @@ If `source.packets` and `destination.packets` are known, `network.packets` is their sum. example: 24 - + # q-in-q vlan fields for identifying 802.1q nested vlans - name: inner level: extended type: object short: Inner VLAN tag information description: > - Network.inner fields are added in addition to network.vlan fields to describe - the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include + Network.inner fields are added in addition to network.vlan fields to describe + the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields include vlan.id and vlan.name. Inner vlan fields are typically used when sending traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) From 76ec52da11f999d140d86d52b367e66619fd5d82 Mon Sep 17 00:00:00 2001 From: Dan Roscigno Date: Mon, 5 Oct 2020 10:22:58 -0400 Subject: [PATCH 10/45] Mention ECS Mapper in the main documentation (#987) --- docs/converting.asciidoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/docs/converting.asciidoc b/docs/converting.asciidoc index 1db1fc7818..b4edd76e1d 100644 --- a/docs/converting.asciidoc +++ b/docs/converting.asciidoc @@ -44,3 +44,18 @@ Here's the recommended approach for converting an existing implementation to {ec . Set `ecs.version` to the version of the schema you are conforming to. This will allow you to upgrade your sources, pipelines and content (like dashboards) smoothly in the future. + +[float] +[[ecs-conv-spreasheet]] +==== Using a spreadsheet to plan your migration + +Using a spreadsheet to plan the migration from pre-existing source fields to ECS +is a common practice. It's a good way to address each of your fields methodically among colleagues. + +If the data source is either a structured log, or if you already have a pipeline +producing events with these non-ECS field names, the tool +https://github.com/elastic/ecs-mapper[ECS Mapper] may help you get started in performing all of these field renames. + +After exporting your mapping spreadsheet to CSV, ECS Mapper will convert your field mapping +to equivalent pipelines for Beats, Elasticsearch, and Logstash. Learn more at +https://github.com/elastic/ecs-mapper[ECS Mapper]. From 08b1a0845f619a437fc72463dcc923889abacfdf Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Mon, 5 Oct 2020 09:51:04 -0500 Subject: [PATCH 11/45] Introduce experimental artifacts (#993) Co-authored-by: Mathieu Martin --- .gitignore | 4 + Makefile | 7 +- experimental/README.md | 26 + experimental/generated/beats/fields.ecs.yml | 6063 +++++++++ experimental/generated/csv/fields.csv | 720 ++ experimental/generated/ecs/ecs_flat.yml | 8956 +++++++++++++ experimental/generated/ecs/ecs_nested.yml | 10663 ++++++++++++++++ .../generated/elasticsearch/7/template.json | 3332 +++++ experimental/schemas/agent.yml | 5 + experimental/schemas/as.yml | 5 + experimental/schemas/client.yml | 7 + experimental/schemas/destination.yml | 7 + experimental/schemas/dns.yml | 7 + experimental/schemas/error.yml | 9 + experimental/schemas/event.yml | 5 + experimental/schemas/file.yml | 9 + experimental/schemas/geo.yml | 5 + experimental/schemas/host.yml | 4 + experimental/schemas/http.yml | 9 + experimental/schemas/log.yml | 7 + experimental/schemas/organization.yml | 5 + experimental/schemas/os.yml | 7 + experimental/schemas/pe.yml | 5 + experimental/schemas/process.yml | 13 + experimental/schemas/registry.yml | 9 + experimental/schemas/server.yml | 7 + experimental/schemas/source.yml | 7 + experimental/schemas/tls.yml | 11 + experimental/schemas/url.yml | 13 + experimental/schemas/user.yml | 17 + experimental/schemas/user_agent.yml | 5 + experimental/schemas/x509.yml | 7 + 32 files changed, 29955 insertions(+), 1 deletion(-) create mode 100644 experimental/README.md create mode 100644 experimental/generated/beats/fields.ecs.yml create mode 100644 experimental/generated/csv/fields.csv create mode 100644 experimental/generated/ecs/ecs_flat.yml create mode 100644 experimental/generated/ecs/ecs_nested.yml create mode 100644 experimental/generated/elasticsearch/7/template.json create mode 100644 experimental/schemas/agent.yml create mode 100644 experimental/schemas/as.yml create mode 100644 experimental/schemas/client.yml create mode 100644 experimental/schemas/destination.yml create mode 100644 experimental/schemas/dns.yml create mode 100644 experimental/schemas/error.yml create mode 100644 experimental/schemas/event.yml create mode 100644 experimental/schemas/file.yml create mode 100644 experimental/schemas/geo.yml create mode 100644 experimental/schemas/host.yml create mode 100644 experimental/schemas/http.yml create mode 100644 experimental/schemas/log.yml create mode 100644 experimental/schemas/organization.yml create mode 100644 experimental/schemas/os.yml create mode 100644 experimental/schemas/pe.yml create mode 100644 experimental/schemas/process.yml create mode 100644 experimental/schemas/registry.yml create mode 100644 experimental/schemas/server.yml create mode 100644 experimental/schemas/source.yml create mode 100644 experimental/schemas/tls.yml create mode 100644 experimental/schemas/url.yml create mode 100644 experimental/schemas/user.yml create mode 100644 experimental/schemas/user_agent.yml create mode 100644 experimental/schemas/x509.yml diff --git a/.gitignore b/.gitignore index 20c4de146e..a3cabe1d6a 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,7 @@ build .idea *.iml .vscode/* + +# experimental exclusions +experimental/generated/elasticsearch/6 +experimental/generated/docs diff --git a/Makefile b/Makefile index 37617d391e..4261504635 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ VERSION := $(shell cat version) # Check verifies that all of the committed files that are generated are # up-to-date. .PHONY: check -check: generate test fmt misspell makelint check-license-headers +check: generate experimental test fmt misspell makelint check-license-headers # Check if diff is empty. git diff | cat git update-index --refresh @@ -46,6 +46,11 @@ docs: fi ./build/docs/build_docs --asciidoctor --doc ./docs/index.asciidoc --chunk=1 $(OPEN_DOCS) --out ./build/html_docs +# Alias to generate experimental artifacts +.PHONY: experimental +experimental: ve + $(PYTHON) scripts/generator.py --include experimental/schemas --out experimental + # Format code and files in the repo. .PHONY: fmt fmt: ve diff --git a/experimental/README.md b/experimental/README.md new file mode 100644 index 0000000000..c9141e8e6a --- /dev/null +++ b/experimental/README.md @@ -0,0 +1,26 @@ +# ECS Experimental Definitions + +ECS experimental definitions are changes and features which have reached [stage two](https://elastic.github.io/ecs/stages.html) in the ECS [RFC process](../rfcs) + +Stage two changes only appear in the experimental artifacts in this directory, but aren't yet reflected in the official ECS documentation. +Note that stage three and four proposals do appear in the official ECS documentation. + +These experimental changes to ECS are comprehensive but not necessarily final. They are also still subject to breaking changes. + +## Schema Files + +The [experimental/schemas](./schemas) directory contains the YAML files for the experimental field definitions. These are not always complete schemas. They can also be supplemental changes to be merged with the official schema spec, using the `--include` generator flag. + +If you use the ECS generator script as described in [USAGE.md](../USAGE.md) to maintain your custom index templates, here's how you can try these experimental changes in your project: + +```sh +$ python scripts/generator.py --include experimental/schemas \ + --include ../myproject/fields/custom/ \ + --out ../myproject/fields/generated +``` + +The above would include all experimental changes to ECS along with your custom fields, and output the artifacts in `myproject/fields/generated`. + +## Generated Artifacts + +Various files generated based on the experimental ECS spec. The artifacts are generated using `make experimental` and published [here](./generated). diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml new file mode 100644 index 0000000000..0ee843e805 --- /dev/null +++ b/experimental/generated/beats/fields.ecs.yml @@ -0,0 +1,6063 @@ +# WARNING! Do not edit this file directly, it was generated by the ECS project, +# based on ECS version 2.0.0-dev. +# Please visit https://github.com/elastic/ecs to suggest changes to ECS fields. + +- key: ecs + title: ECS + description: ECS Fields. + fields: + - name: '@timestamp' + level: core + required: true + type: date + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + - name: labels + level: core + type: object + object_type: keyword + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + - name: message + level: core + type: text + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + - name: tags + level: core + type: keyword + ignore_above: 1024 + description: List of keywords used to tag each event. + example: '["production", "env2"]' + - name: agent + title: Agent + group: 2 + description: 'The agent fields contain the data about the software entity, if + any, that collects, detects, or observes events on a host, or takes measurements + on a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields + shall be populated with details of the agent running on the host or observer + where the event happened or the measurement was taken.' + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + type: group + fields: + - name: build.original + level: core + type: wildcard + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + default_field: false + - name: ephemeral_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + - name: version + level: core + type: keyword + ignore_above: 1024 + description: Version of the agent. + example: 6.0.0-rc2 + - name: as + title: Autonomous System + group: 2 + description: An autonomous system (AS) is a collection of connected Internet Protocol + (IP) routing prefixes under the control of one or more network operators on + behalf of a single administrative entity or domain that presents a common, clearly + defined routing policy to the internet. + type: group + fields: + - name: number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: organization.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: client + title: Client + group: 2 + description: 'A client is defined as the initiator of a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends + the SYN packet(s). For other protocols, the client is generally the initiator + or requestor in the network transaction. Some systems use the term "originator" + to refer the client in TCP connections. The client fields describe details about + the system acting as the client in the network event. Client fields are usually + populated in conjunction with server fields. Client fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the client to the server. + example: 184 + - name: domain + level: core + type: wildcard + description: Client domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the client (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the client. + - name: nat.ip + level: extended + type: ip + description: 'Translated IP of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the client to the server. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the client. + - name: registered_domain + level: extended + type: wildcard + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: wildcard + description: User email address. + - name: user.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: cloud + title: Cloud + group: 2 + description: Fields related to the cloud or infrastructure the events are coming + from. + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data + from its host, the cloud info contains the data about this machine. If Metricbeat + runs on a remote machine outside the cloud and fetches data from a service running + in the cloud, the field contains cloud data from the machine the service is + running on.' + type: group + fields: + - name: account.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account or organization id used to identify different + entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + - name: account.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud account name or alias used to identify different entities + in a multi-tenant environment. + + Examples: AWS account name, Google Cloud ORG display name.' + example: elastic-dev + default_field: false + - name: availability_zone + level: extended + type: keyword + ignore_above: 1024 + description: Availability zone in which this host is running. + example: us-east-1c + - name: instance.id + level: extended + type: keyword + ignore_above: 1024 + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + - name: instance.name + level: extended + type: keyword + ignore_above: 1024 + description: Instance name of the host machine. + - name: machine.type + level: extended + type: keyword + ignore_above: 1024 + description: Machine type of the host machine. + example: t2.medium + - name: project.id + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud project identifier. + + Examples: Google Cloud Project id, Azure Project id.' + example: my-project + default_field: false + - name: project.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The cloud project name. + + Examples: Google Cloud Project name, Azure Project name.' + example: my project + default_field: false + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: Name of the cloud provider. Example values are aws, azure, gcp, + or digitalocean. + example: aws + - name: region + level: extended + type: keyword + ignore_above: 1024 + description: Region in which this host is running. + example: us-east-1 + - name: code_signature + title: Code Signature + group: 2 + description: These fields contain information about binary code signatures. + type: group + fields: + - name: exists + level: core + type: boolean + description: Boolean to capture if a signature is present. + example: 'true' + default_field: false + - name: status + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + default_field: false + - name: subject_name + level: core + type: keyword + ignore_above: 1024 + description: Subject name of the code signer + example: Microsoft Corporation + default_field: false + - name: trusted + level: extended + type: boolean + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + default_field: false + - name: valid + level: extended + type: boolean + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + default_field: false + - name: container + title: Container + group: 2 + description: 'Container fields are used for meta information about the specific + container that is the source of information. + + These fields help correlate data based containers from any runtime.' + type: group + fields: + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique container id. + - name: image.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the image the container was built on. + - name: image.tag + level: extended + type: keyword + ignore_above: 1024 + description: Container image tags. + - name: labels + level: extended + type: object + object_type: keyword + description: Image labels. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Container name. + - name: runtime + level: extended + type: keyword + ignore_above: 1024 + description: Runtime managing this container. + example: docker + - name: destination + title: Destination + group: 2 + description: 'Destination fields capture details about the receiver of a network + exchange/packet. These fields are populated from a network event, packet, or + other event containing details of a network transaction. + + Destination fields are usually populated in conjunction with source fields. + The source and destination fields are considered the baseline and should always + be filled if an event contains source and destination details from a network + transaction. If the event also contains identification of the client and server + roles, then the client and server fields should also be populated.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the destination to the source. + example: 184 + - name: domain + level: core + type: wildcard + description: Destination domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the destination (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the destination. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the destination to the source. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the destination. + - name: registered_domain + level: extended + type: wildcard + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: wildcard + description: User email address. + - name: user.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: dll + title: DLL + group: 2 + description: 'These fields contain information about code libraries dynamically + loaded into processes. + + + Many operating systems refer to "shared code libraries" with different names, + but this field set refers to all of the following: + + * Dynamic-link library (`.dll`) commonly used on Windows + + * Shared Object (`.so`) commonly used on Unix-like operating systems + + * Dynamic library (`.dylib`) commonly used on macOS' + type: group + fields: + - name: code_signature.exists + level: core + type: boolean + description: Boolean to capture if a signature is present. + example: 'true' + default_field: false + - name: code_signature.status + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + default_field: false + - name: code_signature.subject_name + level: core + type: keyword + ignore_above: 1024 + description: Subject name of the code signer + example: Microsoft Corporation + default_field: false + - name: code_signature.trusted + level: extended + type: boolean + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + default_field: false + - name: code_signature.valid + level: extended + type: boolean + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + default_field: false + - name: hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: MD5 hash. + default_field: false + - name: hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: SHA1 hash. + default_field: false + - name: hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: SHA256 hash. + default_field: false + - name: hash.sha512 + level: extended + type: keyword + ignore_above: 1024 + description: SHA512 hash. + default_field: false + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the library. + + This generally maps to the name of the file on disk.' + example: kernel32.dll + default_field: false + - name: path + level: extended + type: keyword + ignore_above: 1024 + description: Full file path of the library. + example: C:\Windows\System32\kernel32.dll + default_field: false + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: pe.company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: pe.description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: pe.file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: pe.original_file_name + level: extended + type: wildcard + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: pe.product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false + - name: dns + title: DNS + group: 2 + description: 'Fields describing DNS queries and answers. + + DNS events should either represent a single DNS query prior to getting answers + (`dns.type:query`) or they should represent a full exchange and contain the + query details as well as all of the answers that were provided for this query + (`dns.type:answer`).' + type: group + fields: + - name: answers.class + level: extended + type: keyword + ignore_above: 1024 + description: The class of DNS data contained in this resource record. + example: IN + - name: answers.data + level: extended + type: wildcard + description: 'The data describing the resource. + + The meaning of this data depends on the type and class of the resource record.' + example: 10.10.10.10 + - name: answers.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The domain name to which this resource record pertains. + + If a chain of CNAME is being resolved, each answer''s `name` should be the + one that corresponds with the answer''s `data`. It should not simply be the + original `question.name` repeated.' + example: www.example.com + - name: answers.ttl + level: extended + type: long + description: The time interval in seconds that this resource record may be cached + before it should be discarded. Zero values mean that the data should not be + cached. + example: 180 + - name: answers.type + level: extended + type: keyword + ignore_above: 1024 + description: The type of data contained in this resource record. + example: CNAME + - name: header_flags + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of 2 letter DNS header flags. + + Expected values are: AA, TC, RD, RA, AD, CD, DO.' + example: '["RD", "RA"]' + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: The DNS packet identifier assigned by the program that generated + the query. The identifier is copied to the response. + example: 62111 + - name: op_code + level: extended + type: keyword + ignore_above: 1024 + description: The DNS operation code that specifies the kind of query in the + message. This value is set by the originator of a query and copied into the + response. + example: QUERY + - name: question.class + level: extended + type: keyword + ignore_above: 1024 + description: The class of records being queried. + example: IN + - name: question.name + level: extended + type: wildcard + description: 'The name being queried. + + If the name field contains non-printable characters (below 32 or above 126), + those characters should be represented as escaped base 10 integers (\DDD). + Back slashes and quotes should be escaped. Tabs, carriage returns, and line + feeds should be converted to \t, \r, and \n respectively.' + example: www.example.com + - name: question.registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: question.subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain is all of the labels under the registered_domain. + + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: www + - name: question.top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: question.type + level: extended + type: keyword + ignore_above: 1024 + description: The type of record being queried. + example: AAAA + - name: resolved_ip + level: extended + type: ip + description: 'Array containing all IPs seen in `answers.data`. + + The `answers` array can be difficult to use, because of the variety of data + formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` + makes it possible to index them as IP addresses, and makes them easier to + visualize and query for.' + example: '["10.10.10.10", "10.10.10.11"]' + - name: response_code + level: extended + type: keyword + ignore_above: 1024 + description: The DNS response code. + example: NOERROR + - name: type + level: extended + type: keyword + ignore_above: 1024 + description: 'The type of DNS event captured, query or answer. + + If your source of DNS events only gives you DNS queries, you should only create + dns events of type `dns.type:query`. + + If your source of DNS events gives you answers as well, you should create + one event per query (optionally as soon as the query is seen). And a second + event containing all query details as well as an array of answers.' + example: answer + - name: ecs + title: ECS + group: 2 + description: Meta-information specific to ECS. + type: group + fields: + - name: version + level: core + required: true + type: keyword + ignore_above: 1024 + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + - name: error + title: Error + group: 2 + description: 'These fields can represent errors of any kind. + + Use them for errors that happen while fetching events or in cases where the + event itself contains an error.' + type: group + fields: + - name: code + level: core + type: keyword + ignore_above: 1024 + description: Error code describing the error. + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier for the error. + - name: message + level: core + type: text + description: Error message. + - name: stack_trace + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The stack trace of this error in plain text. + index: true + - name: type + level: extended + type: wildcard + description: The type of the error, for example the class name of the exception. + example: java.lang.NullPointerException + - name: event + title: Event + group: 2 + description: 'The event fields are used for context information about the log + or metric event itself. + + A log is defined as an event containing details of something that happened. + Log events must include the time at which the thing happened. Examples of log + events include a process starting on a host, a network packet being sent from + a source to a destination, or a network connection between a client and a server + being initiated or closed. A metric is defined as an event containing one or + more numerical measurements and the time at which the measurement was taken. + Examples of metric events include memory pressure measured on a host and device + temperature. See the `event.kind` definition in this section for additional + details about metric and state events.' + type: group + fields: + - name: action + level: core + type: keyword + ignore_above: 1024 + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + - name: category + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + second level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process + activity. This field is closely related to `event.type`, which is used as + a subcategory. + + This field is an array. This will allow proper categorization of some events + that fall in multiple categories.' + example: authentication + - name: code + level: extended + type: keyword + ignore_above: 1024 + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is + the Windows Event ID.' + example: 4648 + - name: created + level: core + type: date + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + - name: dataset + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes + from. + + It''s recommended but not required to start the dataset name with the module + name, followed by a dot, then the dataset name.' + example: apache.access + - name: duration + level: core + type: long + format: duration + input_format: nanoseconds + output_format: asMilliseconds + output_precision: 1 + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + - name: end + level: extended + type: date + description: event.end contains the date when the event ended or when the activity + was last observed. + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique ID to describe the event. + example: 8a4f500d + - name: ingested + level: core + type: date + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + default_field: false + - name: kind + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + highest level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the + event contains, without being specific to the contents of the event. For example, + values of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, + it may also help understand whether the data coming in at a regular interval + or not.' + example: alert + - name: module + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain + the name of this module.' + example: apache + - name: original + level: core + type: wildcard + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + index: false + - name: outcome + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + lowest level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a + failure from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each + event may populate different values of `event.outcome`, according to their + perspective. + + Also note that in the case of a compound event (a single event that contains + multiple logical events), this field should be populated with the value that + best captures the overall success or failure from the perspective of the event + producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention + the source of an event. It can be the name of the software that generated + the event (e.g. Sysmon, httpd), or of a subsystem of the operating system + (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + - name: reason + level: extended + type: keyword + ignore_above: 1024 + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + default_field: false + - name: reference + level: extended + type: keyword + ignore_above: 1024 + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + default_field: false + - name: risk_score + level: core + type: float + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + - name: risk_score_norm + level: extended + type: float + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + - name: sequence + level: extended + type: long + format: string + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the + exact ordering of events unambiguous, regardless of the timestamp precision.' + - name: severity + level: core + type: long + format: string + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and + use cases. It''s up to the implementer to make sure severities are consistent + across events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` + is meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + - name: start + level: extended + type: date + description: event.start contains the date when the event started or when the + activity was first observed. + - name: timezone + level: extended + type: keyword + ignore_above: 1024 + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + third level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along + with the `event.category` field values, enables filtering events down to a + level appropriate for single visualization. + + This field is an array. This will allow proper categorization of some events + that fall in multiple event types.' + - name: url + level: extended + type: keyword + ignore_above: 1024 + description: 'URL linking to an external system to continue investigation of + this event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + default_field: false + - name: file + title: File + group: 2 + description: 'A file is defined as a set of information that has been created + on, or has existed on a filesystem. + + File objects can be associated with host events, network events, and/or file + events (e.g., those produced by File Integrity Monitoring [FIM] products or + services). File fields provide details about the affected file associated with + the event or metric.' + type: group + fields: + - name: accessed + level: extended + type: date + description: 'Last time the file was accessed. + + Note that not all filesystems keep track of access time.' + - name: attributes + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of file attributes. + + Attributes names will vary by platform. Here''s a non-exhaustive list of values + that are expected in this field: archive, compressed, directory, encrypted, + execute, hidden, read, readonly, system, write.' + example: '["readonly", "system"]' + default_field: false + - name: code_signature.exists + level: core + type: boolean + description: Boolean to capture if a signature is present. + example: 'true' + default_field: false + - name: code_signature.status + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + default_field: false + - name: code_signature.subject_name + level: core + type: keyword + ignore_above: 1024 + description: Subject name of the code signer + example: Microsoft Corporation + default_field: false + - name: code_signature.trusted + level: extended + type: boolean + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + default_field: false + - name: code_signature.valid + level: extended + type: boolean + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + default_field: false + - name: created + level: extended + type: date + description: 'File creation time. + + Note that not all filesystems store the creation time.' + - name: ctime + level: extended + type: date + description: 'Last time the file attributes or metadata changed. + + Note that changes to the file content will update `mtime`. This implies `ctime` + will be adjusted at the same time, since `mtime` is an attribute of the file.' + - name: device + level: extended + type: keyword + ignore_above: 1024 + description: Device that is the source of the file. + example: sda + - name: directory + level: extended + type: wildcard + description: Directory where the file is located. It should include the drive + letter, when appropriate. + example: /home/alice + - name: drive_letter + level: extended + type: keyword + ignore_above: 1 + description: 'Drive letter where the file is located. This field is only relevant + on Windows. + + The value should be uppercase, and not include the colon.' + example: C + default_field: false + - name: extension + level: extended + type: keyword + ignore_above: 1024 + description: File extension. + example: png + - name: gid + level: extended + type: keyword + ignore_above: 1024 + description: Primary group ID (GID) of the file. + example: '1001' + - name: group + level: extended + type: keyword + ignore_above: 1024 + description: Primary group name of the file. + example: alice + - name: hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: MD5 hash. + - name: hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: SHA1 hash. + - name: hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: SHA256 hash. + - name: hash.sha512 + level: extended + type: keyword + ignore_above: 1024 + description: SHA512 hash. + - name: inode + level: extended + type: keyword + ignore_above: 1024 + description: Inode representing the file in the filesystem. + example: '256383' + - name: mime_type + level: extended + type: keyword + ignore_above: 1024 + description: MIME type should identify the format of the file or stream of bytes + using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA + official types], where possible. When more than one type is applicable, the + most specific type should be used. + default_field: false + - name: mode + level: extended + type: keyword + ignore_above: 1024 + description: Mode of the file in octal representation. + example: '0640' + - name: mtime + level: extended + type: date + description: Last time the file content was modified. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the file including the extension, without the directory. + example: example.png + - name: owner + level: extended + type: keyword + ignore_above: 1024 + description: File owner's username. + example: alice + - name: path + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Full path to the file, including the file name. It should include + the drive letter, when appropriate. + example: /home/alice/example.png + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: pe.company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: pe.description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: pe.file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: pe.original_file_name + level: extended + type: wildcard + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: pe.product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false + - name: size + level: extended + type: long + description: 'File size in bytes. + + Only relevant when `file.type` is "file".' + example: 16384 + - name: target_path + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Target path for symlinks. + - name: type + level: extended + type: keyword + ignore_above: 1024 + description: File type (file, dir, or symlink). + example: file + - name: uid + level: extended + type: keyword + ignore_above: 1024 + description: The user ID (UID) or security identifier (SID) of the file owner. + example: '1001' + - name: x509.alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: x509.issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: x509.issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: x509.issuer.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: x509.subject.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false + - name: geo + title: Geo + group: 2 + description: 'Geo fields can carry data about a specific location related to an + event. + + This geolocation information can be derived from techniques such as Geo IP, + or be user-supplied.' + type: group + fields: + - name: city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: group + title: Group + group: 2 + description: The group fields are meant to represent groups that are relevant + to the event. + type: group + fields: + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: hash + title: Hash + group: 2 + description: 'The hash fields represent different hash algorithms and their values. + + Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for + other hashes by lowercasing the hash algorithm name and using underscore separators + as appropriate (snake case, e.g. sha3_512).' + type: group + fields: + - name: md5 + level: extended + type: keyword + ignore_above: 1024 + description: MD5 hash. + - name: sha1 + level: extended + type: keyword + ignore_above: 1024 + description: SHA1 hash. + - name: sha256 + level: extended + type: keyword + ignore_above: 1024 + description: SHA256 hash. + - name: sha512 + level: extended + type: keyword + ignore_above: 1024 + description: SHA512 hash. + - name: host + title: Host + group: 2 + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the + event happened, or from which the measurement was taken. Host types include + hardware, virtual machines, Docker containers, and Kubernetes nodes.' + type: group + fields: + - name: architecture + level: core + type: keyword + ignore_above: 1024 + description: Operating system architecture. + example: x86_64 + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain + or NetBIOS domain name. For Linux this could be the domain of the host''s + LDAP provider.' + example: CONTOSO + default_field: false + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: hostname + level: core + type: wildcard + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + - name: ip + level: core + type: ip + description: Host ip addresses. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: Host mac addresses. + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified + domain name, or a name specified by the user. The sender decides which value + to use.' + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, + this could be the container, for example, or other information meaningful + in your environment.' + - name: uptime + level: extended + type: long + description: Seconds the host has been up. + example: 1325 + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: wildcard + description: User email address. + - name: user.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: http + title: HTTP + group: 2 + description: Fields related to HTTP activity. Use the `url` field set to store + the url of the request. + type: group + fields: + - name: request.body.bytes + level: extended + type: long + format: bytes + description: Size in bytes of the request body. + example: 887 + - name: request.body.content + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The full HTTP request body. + example: Hello world + - name: request.bytes + level: extended + type: long + format: bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + - name: request.method + level: extended + type: keyword + ignore_above: 1024 + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST + - name: request.mime_type + level: extended + type: keyword + ignore_above: 1024 + description: 'Mime type of the body of the request. + + This value must only be populated based on the content of the request body, + not on the `Content-Type` header. Comparing the mime type of a request with + the request''s Content-Type header can be helpful in detecting threats or + misconfigured clients.' + example: image/gif + default_field: false + - name: request.referrer + level: extended + type: wildcard + description: Referrer for this HTTP request. + example: https://blog.example.com/ + - name: response.body.bytes + level: extended + type: long + format: bytes + description: Size in bytes of the response body. + example: 887 + - name: response.body.content + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The full HTTP response body. + example: Hello world + - name: response.bytes + level: extended + type: long + format: bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + - name: response.mime_type + level: extended + type: keyword + ignore_above: 1024 + description: 'Mime type of the body of the response. + + This value must only be populated based on the content of the response body, + not on the `Content-Type` header. Comparing the mime type of a response with + the response''s Content-Type header can be helpful in detecting misconfigured + servers.' + example: image/gif + default_field: false + - name: response.status_code + level: extended + type: long + format: string + description: HTTP response status code. + example: 404 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: HTTP version. + example: 1.1 + - name: interface + title: Interface + group: 2 + description: The interface fields are used to record ingress and egress interface + information when reported by an observer (e.g. firewall, router, load balancer) + in the context of the observer handling a network connection. In the case of + a single observer interface (e.g. network sensor on a span port) only the observer.ingress + information should be populated. + type: group + fields: + - name: alias + level: extended + type: keyword + ignore_above: 1024 + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + default_field: false + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + default_field: false + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Interface name as reported by the system. + example: eth0 + default_field: false + - name: log + title: Log + group: 2 + description: 'Details about the event''s logging mechanism or logging transport. + + The log.* fields are typically populated with details about the logging mechanism + used to create and/or transport the event. For example, syslog details belong + under `log.syslog.*`. + + The details specific to your event source are typically not logged under `log.*`, + but rather in `event.*` or in other ECS fields.' + type: group + fields: + - name: file.path + level: extended + type: wildcard + description: 'Full path to the log file this event came from, including the + file name. It should include the drive letter, when appropriate. + + If the event wasn''t read from a log file, do not populate this field.' + example: /var/log/fun-times.log + default_field: false + - name: level + level: core + type: keyword + ignore_above: 1024 + description: 'Original log level of the log event. + + If the source of the event provides a log level or textual severity, this + is the one that goes in `log.level`. If your source doesn''t specify one, + you may put your event transport''s severity here (e.g. Syslog severity). + + Some examples are `warn`, `err`, `i`, `informational`.' + example: error + - name: logger + level: core + type: wildcard + description: The name of the logger inside an application. This is usually the + name of the class which initialized the logger, or can be a custom name. + example: org.elasticsearch.bootstrap.Bootstrap + - name: origin.file.line + level: extended + type: integer + description: The line number of the file containing the source code which originated + the log event. + example: 42 + - name: origin.file.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The name of the file containing the source code which originated + the log event. + + Note that this field is not meant to capture the log file. The correct field + to capture the log file is `log.file.path`.' + example: Bootstrap.java + - name: origin.function + level: extended + type: keyword + ignore_above: 1024 + description: The name of the function or method which originated the log event. + example: init + - name: original + level: core + type: keyword + ignore_above: 1024 + description: 'This is the original log message and contains the full log message + before splitting it up in multiple parts. + + In contrast to the `message` field which can contain an extracted part of + the log message, this field contains the original, full log message. It can + have already some modifications applied like encoding or new lines removed + to clean up the log message. + + This field is not indexed and doc_values are disabled so it can''t be queried + but the value can be retrieved from `_source`.' + example: Sep 19 08:26:10 localhost My log + index: false + - name: syslog + level: extended + type: object + description: The Syslog metadata of the event, if the event was transmitted + via Syslog. Please see RFCs 5424 or 3164. + - name: syslog.facility.code + level: extended + type: long + format: string + description: 'The Syslog numeric facility of the log event, if available. + + According to RFCs 5424 and 3164, this value should be an integer between 0 + and 23.' + example: 23 + - name: syslog.facility.name + level: extended + type: keyword + ignore_above: 1024 + description: The Syslog text-based facility of the log event, if available. + example: local7 + - name: syslog.priority + level: extended + type: long + format: string + description: 'Syslog numeric priority of the event, if available. + + According to RFCs 5424 and 3164, the priority is 8 * facility + severity. + This number is therefore expected to contain a value between 0 and 191.' + example: 135 + - name: syslog.severity.code + level: extended + type: long + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different numeric severity + value (e.g. firewall, IDS), your source''s numeric severity should go to `event.severity`. + If the event source does not specify a distinct severity, you can optionally + copy the Syslog severity to `event.severity`.' + example: 3 + - name: syslog.severity.name + level: extended + type: keyword + ignore_above: 1024 + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different severity value + (e.g. firewall, IDS), your source''s text severity should go to `log.level`. + If the event source does not specify a distinct severity, you can optionally + copy the Syslog severity to `log.level`.' + example: Error + - name: network + title: Network + group: 2 + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + type: group + fields: + - name: application + level: extended + type: keyword + ignore_above: 1024 + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + - name: bytes + level: core + type: long + format: bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + - name: community_id + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + - name: direction + level: core + type: keyword + ignore_above: 1024 + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * ingress\n * egress\n * inbound\n * outbound\n * internal\n * external\n\ + \ * unknown\n\nWhen mapping events from a host-based monitoring context,\ + \ populate this field from the host's point of view, using the values \"ingress\"\ + \ or \"egress\".\nWhen mapping events from a network or perimeter-based monitoring\ + \ context, populate this field from the point of view of the network perimeter,\ + \ using the values \"inbound\", \"outbound\", \"internal\" or \"external\"\ + .\nNote that \"internal\" is not crossing perimeter boundaries, and is meant\ + \ to describe communication between two hosts within the perimeter. Note also\ + \ that \"external\" is meant to describe traffic between two hosts that are\ + \ external to the perimeter. This could for example be useful for ISPs or\ + \ VPN service providers." + example: inbound + - name: forwarded_ip + level: core + type: ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + - name: iana_number + level: extended + type: keyword + ignore_above: 1024 + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + - name: inner + level: extended + type: object + description: Network.inner fields are added in addition to network.vlan fields + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used + when sending traffic with multiple 802.1q encapsulations to a network sensor + (e.g. Zeek, Wireshark.) + default_field: false + - name: inner.vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: inner.vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name given by operators to sections of their network. + example: Guest Wifi + - name: packets + level: core + type: long + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + - name: protocol + level: core + type: keyword + ignore_above: 1024 + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + - name: transport + level: core + type: keyword + ignore_above: 1024 + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + - name: vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: observer + title: Observer + group: 2 + description: 'An observer is defined as a special network, security, or application + device used to detect, observe, or create network, security, or application-related + events and metrics. + + This could be a custom hardware appliance or a server that has been configured + to run special network, security, or application software. Examples include + firewalls, web proxies, intrusion detection/prevention systems, network monitoring + sensors, web application firewalls, data loss prevention systems, and APM servers. + The observer.* fields shall be populated with details of the system, if any, + that detects, observes and/or creates a network, security, or application event + or metric. Message queues and ETL components used in processing events or metrics + are not considered observers in ECS.' + type: group + fields: + - name: egress + level: extended + type: object + description: Observer.egress holds information like interface number and name, + vlan, and zone information to classify egress traffic. Single armed monitoring + such as a network sensor on a span port should only use observer.ingress + to categorize traffic. + default_field: false + - name: egress.interface.alias + level: extended + type: keyword + ignore_above: 1024 + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + default_field: false + - name: egress.interface.id + level: extended + type: keyword + ignore_above: 1024 + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + default_field: false + - name: egress.interface.name + level: extended + type: keyword + ignore_above: 1024 + description: Interface name as reported by the system. + example: eth0 + default_field: false + - name: egress.vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: egress.vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: egress.zone + level: extended + type: keyword + ignore_above: 1024 + description: Network zone of outbound traffic as reported by the observer to + categorize the destination area of egress traffic, e.g. Internal, External, + DMZ, HR, Legal, etc. + example: Public_Internet + default_field: false + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: hostname + level: core + type: keyword + ignore_above: 1024 + description: Hostname of the observer. + - name: ingress + level: extended + type: object + description: Observer.ingress holds information like interface number and name, + vlan, and zone information to classify ingress traffic. Single armed monitoring + such as a network sensor on a span port should only use observer.ingress + to categorize traffic. + default_field: false + - name: ingress.interface.alias + level: extended + type: keyword + ignore_above: 1024 + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + default_field: false + - name: ingress.interface.id + level: extended + type: keyword + ignore_above: 1024 + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + default_field: false + - name: ingress.interface.name + level: extended + type: keyword + ignore_above: 1024 + description: Interface name as reported by the system. + example: eth0 + default_field: false + - name: ingress.vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: ingress.vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: ingress.zone + level: extended + type: keyword + ignore_above: 1024 + description: Network zone of incoming traffic as reported by the observer to + categorize the source area of ingress traffic. e.g. internal, External, DMZ, + HR, Legal, etc. + example: DMZ + default_field: false + - name: ip + level: core + type: ip + description: IP addresses of the observer. + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC addresses of the observer + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: 'Custom name of the observer. + + This is a name that can be given to an observer. This can be helpful for example + if multiple firewalls of the same model are used in an organization. + + If no custom name is needed, the field can be left empty.' + example: 1_proxySG + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: product + level: extended + type: keyword + ignore_above: 1024 + description: The product name of the observer. + example: s200 + - name: serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Observer serial number. + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'The type of the observer the data is coming from. + + There is no predefined list of observer types. Some examples are `forwarder`, + `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.' + example: firewall + - name: vendor + level: core + type: keyword + ignore_above: 1024 + description: Vendor name of the observer. + example: Symantec + - name: version + level: core + type: keyword + ignore_above: 1024 + description: Observer version. + - name: organization + title: Organization + group: 2 + description: 'The organization fields enrich data with information about the company + or entity the data is associated with. + + These fields help you arrange or filter data stored in an index by one or multiple + organizations.' + type: group + fields: + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the organization. + - name: name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + - name: os + title: Operating System + group: 2 + description: The OS fields contain information about the operating system. + type: group + fields: + - name: family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: full + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: package + title: Package + group: 2 + description: These fields contain information about an installed software package. + It contains general information about a package, such as name, version or size. + It also contains installation details, such as time or location. + type: group + fields: + - name: architecture + level: extended + type: keyword + ignore_above: 1024 + description: Package architecture. + example: x86_64 + - name: build_version + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the build version of the installed + package. + + For example use the commit SHA of a non-released package.' + example: 36f4f7e89dd61b0988b12ee000b98966867710cd + default_field: false + - name: checksum + level: extended + type: keyword + ignore_above: 1024 + description: Checksum of the installed package for verification. + example: 68b329da9893e34099c7d8ad5cb9c940 + - name: description + level: extended + type: keyword + ignore_above: 1024 + description: Description of the package. + example: Open source programming language to build simple/reliable/efficient + software. + - name: install_scope + level: extended + type: keyword + ignore_above: 1024 + description: Indicating how the package was installed, e.g. user-local, global. + example: global + - name: installed + level: extended + type: date + description: Time when package was installed. + - name: license + level: extended + type: keyword + ignore_above: 1024 + description: 'License under which the package was released. + + Use a short name, e.g. the license identifier from SPDX License List where + possible (https://spdx.org/licenses/).' + example: Apache License 2.0 + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Package name + example: go + - name: path + level: extended + type: keyword + ignore_above: 1024 + description: Path where the package is installed. + example: /usr/local/Cellar/go/1.12.9/ + - name: reference + level: extended + type: keyword + ignore_above: 1024 + description: Home page or reference URL of the software in this package, if + available. + example: https://golang.org + default_field: false + - name: size + level: extended + type: long + format: string + description: Package size in bytes. + example: 62231 + - name: type + level: extended + type: keyword + ignore_above: 1024 + description: 'Type of package. + + This should contain the package file type, rather than the package manager + name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.' + example: rpm + default_field: false + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Package version + example: 1.12.9 + - name: pe + title: PE Header + group: 2 + description: These fields contain Windows Portable Executable (PE) metadata. + type: group + fields: + - name: architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: original_file_name + level: extended + type: wildcard + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false + - name: process + title: Process + group: 2 + description: 'These fields contain information about a process. + + These fields can help you correlate metrics information with a process id/name + from a log message. The `process.pid` often stays in the metric itself and + is copied to the global field for correlation.' + type: group + fields: + - name: args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + - name: args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: code_signature.exists + level: core + type: boolean + description: Boolean to capture if a signature is present. + example: 'true' + default_field: false + - name: code_signature.status + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + default_field: false + - name: code_signature.subject_name + level: core + type: keyword + ignore_above: 1024 + description: Subject name of the code signer + example: Microsoft Corporation + default_field: false + - name: code_signature.trusted + level: extended + type: boolean + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + default_field: false + - name: code_signature.valid + level: extended + type: boolean + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + default_field: false + - name: command_line + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + default_field: false + - name: entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: executable + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Absolute path to the process executable. + example: /usr/bin/ssh + - name: exit_code + level: extended + type: long + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + default_field: false + - name: hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: MD5 hash. + - name: hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: SHA1 hash. + - name: hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: SHA256 hash. + - name: hash.sha512 + level: extended + type: keyword + ignore_above: 1024 + description: SHA512 hash. + - name: name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + - name: parent.args + level: extended + type: keyword + ignore_above: 1024 + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + default_field: false + - name: parent.args_count + level: extended + type: long + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + default_field: false + - name: parent.code_signature.exists + level: core + type: boolean + description: Boolean to capture if a signature is present. + example: 'true' + default_field: false + - name: parent.code_signature.status + level: extended + type: keyword + ignore_above: 1024 + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + default_field: false + - name: parent.code_signature.subject_name + level: core + type: keyword + ignore_above: 1024 + description: Subject name of the code signer + example: Microsoft Corporation + default_field: false + - name: parent.code_signature.trusted + level: extended + type: boolean + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + default_field: false + - name: parent.code_signature.valid + level: extended + type: boolean + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + default_field: false + - name: parent.command_line + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + default_field: false + - name: parent.entity_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + default_field: false + - name: parent.executable + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: Absolute path to the process executable. + example: /usr/bin/ssh + default_field: false + - name: parent.exit_code + level: extended + type: long + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + default_field: false + - name: parent.hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: MD5 hash. + default_field: false + - name: parent.hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: SHA1 hash. + default_field: false + - name: parent.hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: SHA256 hash. + default_field: false + - name: parent.hash.sha512 + level: extended + type: keyword + ignore_above: 1024 + description: SHA512 hash. + default_field: false + - name: parent.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + default_field: false + - name: parent.pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: parent.pe.company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: parent.pe.description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: parent.pe.file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: parent.pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: parent.pe.original_file_name + level: extended + type: wildcard + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: parent.pe.product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false + - name: parent.pgid + level: extended + type: long + format: string + description: Identifier of the group of processes the process belongs to. + default_field: false + - name: parent.pid + level: core + type: long + format: string + description: Process id. + example: 4242 + default_field: false + - name: parent.ppid + level: extended + type: long + format: string + description: Parent process' pid. + example: 4241 + default_field: false + - name: parent.start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + default_field: false + - name: parent.thread.id + level: extended + type: long + format: string + description: Thread ID. + example: 4242 + default_field: false + - name: parent.thread.name + level: extended + type: keyword + ignore_above: 1024 + description: Thread name. + example: thread-0 + default_field: false + - name: parent.title + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: + for example a browser setting its title to the web page currently opened.' + default_field: false + - name: parent.uptime + level: extended + type: long + description: Seconds the process has been up. + example: 1325 + default_field: false + - name: parent.working_directory + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: The working directory of the process. + example: /home/alice + default_field: false + - name: pe.architecture + level: extended + type: keyword + ignore_above: 1024 + description: CPU architecture target for the file. + example: x64 + default_field: false + - name: pe.company + level: extended + type: keyword + ignore_above: 1024 + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + default_field: false + - name: pe.description + level: extended + type: keyword + ignore_above: 1024 + description: Internal description of the file, provided at compile-time. + example: Paint + default_field: false + - name: pe.file_version + level: extended + type: keyword + ignore_above: 1024 + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + default_field: false + - name: pe.imphash + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + default_field: false + - name: pe.original_file_name + level: extended + type: wildcard + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + default_field: false + - name: pe.product + level: extended + type: keyword + ignore_above: 1024 + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + default_field: false + - name: pgid + level: extended + type: long + format: string + description: Identifier of the group of processes the process belongs to. + - name: pid + level: core + type: long + format: string + description: Process id. + example: 4242 + - name: ppid + level: extended + type: long + format: string + description: Parent process' pid. + example: 4241 + - name: start + level: extended + type: date + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + - name: thread.id + level: extended + type: long + format: string + description: Thread ID. + example: 4242 + - name: thread.name + level: extended + type: keyword + ignore_above: 1024 + description: Thread name. + example: thread-0 + - name: title + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: + for example a browser setting its title to the web page currently opened.' + - name: uptime + level: extended + type: long + description: Seconds the process has been up. + example: 1325 + - name: working_directory + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The working directory of the process. + example: /home/alice + - name: registry + title: Registry + group: 2 + description: Fields related to Windows Registry operations. + type: group + fields: + - name: data.bytes + level: extended + type: keyword + ignore_above: 1024 + description: 'Original bytes written with base64 encoding. + + For Windows registry operations, such as SetValueEx and RegQueryValueEx, this + corresponds to the data pointed by `lp_data`. This is optional but provides + better recoverability and should be populated for REG_BINARY encoded values.' + example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + default_field: false + - name: data.strings + level: core + type: wildcard + description: 'Content when writing string types. + + Populated as an array when writing string data to the registry. For single + string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with + one string. For sequences of string with REG_MULTI_SZ, this array will be + variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should + be populated with the decimal representation (e.g `"1"`).' + example: '["C:\rta\red_ttp\bin\myapp.exe"]' + default_field: false + - name: data.type + level: core + type: keyword + ignore_above: 1024 + description: Standard registry type for encoding contents + example: REG_SZ + default_field: false + - name: hive + level: core + type: keyword + ignore_above: 1024 + description: Abbreviated name for the hive. + example: HKLM + default_field: false + - name: key + level: core + type: wildcard + description: Hive-relative path of keys. + example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe + default_field: false + - name: path + level: core + type: wildcard + description: Full path, including hive, key and value + example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution + Options\winword.exe\Debugger + default_field: false + - name: value + level: core + type: keyword + ignore_above: 1024 + description: Name of the value written. + example: Debugger + default_field: false + - name: related + title: Related + group: 2 + description: 'This field set is meant to facilitate pivoting around a piece of + data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding + field in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs + to `related.ip`, you can then search for a given IP trivially, no matter where + it appeared, by querying `related.ip:192.0.2.15`.' + type: group + fields: + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: All the hashes seen on your event. Populating this field, then + using it to search for hashes can help in situations where you're unsure what + the hash algorithm is (and therefore which key name to search). + default_field: false + - name: hosts + level: extended + type: keyword + ignore_above: 1024 + description: All hostnames or other host identifiers seen on your event. Example + identifiers include FQDNs, domain names, workstation names, or aliases. + default_field: false + - name: ip + level: extended + type: ip + description: All of the IPs seen on your event. + - name: user + level: extended + type: keyword + ignore_above: 1024 + description: All the user names seen on your event. + default_field: false + - name: rule + title: Rule + group: 2 + description: 'Rule fields are used to capture the specifics of any observer or + agent rules that generate alerts or other notable events. + + Examples of data sources that would populate the rule fields include: network + admission control platforms, network or host IDS/IPS, network firewalls, web + application firewalls, url filters, endpoint detection and response (EDR) systems, + etc.' + type: group + fields: + - name: author + level: extended + type: keyword + ignore_above: 1024 + description: Name, organization, or pseudonym of the author or authors who created + the rule used to generate this event. + example: '["Star-Lord"]' + default_field: false + - name: category + level: extended + type: keyword + ignore_above: 1024 + description: A categorization value keyword used by the entity using the rule + for detection of this event. + example: Attempted Information Leak + default_field: false + - name: description + level: extended + type: keyword + ignore_above: 1024 + description: The description of the rule generating the event. + example: Block requests to public DNS over HTTPS / TLS protocols + default_field: false + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: A rule ID that is unique within the scope of an agent, observer, + or other entity using the rule for detection of this event. + example: 101 + default_field: false + - name: license + level: extended + type: keyword + ignore_above: 1024 + description: Name of the license under which the rule used to generate this + event is made available. + example: Apache 2.0 + default_field: false + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: The name of the rule or signature generating the event. + example: BLOCK_DNS_over_TLS + default_field: false + - name: reference + level: extended + type: keyword + ignore_above: 1024 + description: 'Reference URL to additional information about the rule used to + generate this event. + + The URL can point to the vendor''s documentation about the rule. If that''s + not available, it can also be a link to a more general page describing this + type of alert.' + example: https://en.wikipedia.org/wiki/DNS_over_TLS + default_field: false + - name: ruleset + level: extended + type: keyword + ignore_above: 1024 + description: Name of the ruleset, policy, group, or parent category in which + the rule used to generate this event is a member. + example: Standard_Protocol_Filters + default_field: false + - name: uuid + level: extended + type: keyword + ignore_above: 1024 + description: A rule ID that is unique within the scope of a set or group of + agents, observers, or other entities using the rule for detection of this + event. + example: 1100110011 + default_field: false + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: The version / revision of the rule being used for analysis. + example: 1.1 + default_field: false + - name: server + title: Server + group: 2 + description: 'A Server is defined as the responder in a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the + system acting as the server in the network event. Server fields are usually + populated in conjunction with client fields. Server fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the server to the client. + example: 184 + - name: domain + level: core + type: wildcard + description: Server domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the server (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the server. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the server to the client. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the server. + - name: registered_domain + level: extended + type: wildcard + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: wildcard + description: User email address. + - name: user.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: service + title: Service + group: 2 + description: 'The service fields describe the service for or from which the data + was collected. + + These fields help you find and correlate logs for a specific service and version.' + type: group + fields: + - name: ephemeral_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Ephemeral identifier of this service (if one exists). + + This id normally changes across restarts, but `service.id` does not.' + example: 8a4f500f + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the running service. If the service is comprised + of many nodes, the `service.id` should be the same for all nodes. + + This id should uniquely identify the service. This makes it possible to correlate + logs and metrics for one specific service, no matter which particular node + emitted the event. + + Note that if you need to see the events from one specific host of the service, + you should filter on that `host.name` or `host.id` instead.' + example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the service data is collected from. + + The name of the service is normally user given. This allows for distributed + services that run on multiple hosts to correlate the related instances based + on the name. + + In the case of Elasticsearch the `service.name` could contain the cluster + name. For Beats the `service.name` is by default a copy of the `service.type` + field if no name is specified.' + example: elasticsearch-metrics + - name: node.name + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of a service node. + + This allows for two nodes of the same service running on the same host to + be differentiated. Therefore, `service.node.name` should typically be unique + across nodes of a given service. + + In the case of Elasticsearch, the `service.node.name` could contain the unique + node name within the Elasticsearch cluster. In cases where the service doesn''t + have the concept of a node name, the host name or container name can be used + to distinguish running instances that make up this service. If those do not + provide uniqueness (e.g. multiple instances of the service running on the + same host) - the node name can be manually set.' + example: instance-0000000016 + - name: state + level: core + type: keyword + ignore_above: 1024 + description: Current state of the service. + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'The type of the service data is collected from. + + The type can be used to group and correlate logs and metrics from one service + type. + + Example: If logs or metrics are collected from Elasticsearch, `service.type` + would be `elasticsearch`.' + example: elasticsearch + - name: version + level: core + type: keyword + ignore_above: 1024 + description: 'Version of the service the data was collected from. + + This allows to look at a data set only for a specific version of a service.' + example: 3.2.4 + - name: source + title: Source + group: 2 + description: 'Source fields capture details about the sender of a network exchange/packet. + These fields are populated from a network event, packet, or other event containing + details of a network transaction. + + Source fields are usually populated in conjunction with destination fields. + The source and destination fields are considered the baseline and should always + be filled if an event contains source and destination details from a network + transaction. If the event also contains identification of the client and server + roles, then the client and server fields should also be populated.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the source to the destination. + example: 184 + - name: domain + level: core + type: wildcard + description: Source domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: wildcard + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the source (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the source. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of source based NAT sessions (e.g. internal client + to internet) + + Typically connections traversing load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the source to the destination. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the source. + - name: registered_domain + level: extended + type: wildcard + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: wildcard + description: User email address. + - name: user.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: threat + title: Threat + group: 2 + description: "Fields to classify events and alerts according to a threat taxonomy\ + \ such as the MITRE ATT&CK\xAE framework.\nThese fields are for users to classify\ + \ alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy.\ + \ The threat.tactic.* are meant to capture the high level category of the threat\ + \ (e.g. \"impact\"). The threat.technique.* fields are meant to capture which\ + \ kind of approach is used by this detected threat, to accomplish the goal (e.g.\ + \ \"endpoint denial of service\")." + type: group + fields: + - name: framework + level: extended + type: keyword + ignore_above: 1024 + description: Name of the threat framework used to further categorize and classify + the tactic and technique of the reported threat. Framework classification + can be provided by detecting systems, evaluated at ingest time, or retrospectively + tagged to events. + example: MITRE ATT&CK + - name: tactic.id + level: extended + type: keyword + ignore_above: 1024 + description: "The id of tactic used by this threat. You can use a MITRE ATT&CK\xAE\ + \ tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )" + example: TA0002 + - name: tactic.name + level: extended + type: keyword + ignore_above: 1024 + description: "Name of the type of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/)" + example: Execution + - name: tactic.reference + level: extended + type: keyword + ignore_above: 1024 + description: "The reference url of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/\ + \ )" + example: https://attack.mitre.org/tactics/TA0002/ + - name: technique.id + level: extended + type: keyword + ignore_above: 1024 + description: "The id of technique used by this threat. You can use a MITRE ATT&CK\xAE\ + \ technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: T1059 + - name: technique.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: "The name of technique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: Command and Scripting Interpreter + - name: technique.reference + level: extended + type: keyword + ignore_above: 1024 + description: "The reference url of technique used by this threat. You can use\ + \ a MITRE ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: https://attack.mitre.org/techniques/T1059/ + - name: technique.subtechnique.id + level: extended + type: keyword + ignore_above: 1024 + description: "The full id of subtechnique used by this threat. You can use a\ + \ MITRE ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: T1059.001 + default_field: false + - name: technique.subtechnique.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + description: "The name of subtechnique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: PowerShell + default_field: false + - name: technique.subtechnique.reference + level: extended + type: keyword + ignore_above: 1024 + description: "The reference url of subtechnique used by this threat. You can\ + \ use a MITRE ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: https://attack.mitre.org/techniques/T1059/001/ + default_field: false + - name: tls + title: TLS + group: 2 + description: Fields related to a TLS connection. These fields focus on the TLS + protocol itself and intentionally avoids in-depth analysis of the related x.509 + certificate files. + type: group + fields: + - name: cipher + level: extended + type: keyword + ignore_above: 1024 + description: String indicating the cipher used during the current connection. + example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + default_field: false + - name: client.certificate + level: extended + type: keyword + ignore_above: 1024 + description: PEM-encoded stand-alone certificate offered by the client. This + is usually mutually-exclusive of `client.certificate_chain` since this value + also exists in that list. + example: MII... + default_field: false + - name: client.certificate_chain + level: extended + type: keyword + ignore_above: 1024 + description: Array of PEM-encoded certificates that make up the certificate + chain offered by the client. This is usually mutually-exclusive of `client.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + default_field: false + - name: client.hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + default_field: false + - name: client.hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + default_field: false + - name: client.hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the SHA256 digest of DER-encoded + version of certificate offered by the client. For consistency with other hash + values, this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + default_field: false + - name: client.issuer + level: extended + type: wildcard + description: Distinguished name of subject of the issuer of the x.509 certificate + presented by the client. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + default_field: false + - name: client.ja3 + level: extended + type: keyword + ignore_above: 1024 + description: A hash that identifies clients based on how they perform an SSL/TLS + handshake. + example: d4e5b18d6b55c71272893221c96ba240 + default_field: false + - name: client.not_after + level: extended + type: date + description: Date/Time indicating when client certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + default_field: false + - name: client.not_before + level: extended + type: date + description: Date/Time indicating when client certificate is first considered + valid. + example: '1970-01-01T00:00:00.000Z' + default_field: false + - name: client.server_name + level: extended + type: keyword + ignore_above: 1024 + description: Also called an SNI, this tells the server which hostname to which + the client is attempting to connect to. When this value is available, it should + get copied to `destination.domain`. + example: www.elastic.co + default_field: false + - name: client.subject + level: extended + type: wildcard + description: Distinguished name of subject of the x.509 certificate presented + by the client. + example: CN=myclient, OU=Documentation Team, DC=example, DC=com + default_field: false + - name: client.supported_ciphers + level: extended + type: keyword + ignore_above: 1024 + description: Array of ciphers offered by the client during the client hello. + example: '["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + "..."]' + default_field: false + - name: client.x509.alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: client.x509.issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: client.x509.issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: client.x509.issuer.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: client.x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: client.x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: client.x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: client.x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: client.x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: client.x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: client.x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: client.x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: client.x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: client.x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: client.x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: client.x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: client.x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: client.x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: client.x509.subject.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: client.x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: client.x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: client.x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: client.x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: client.x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false + - name: curve + level: extended + type: keyword + ignore_above: 1024 + description: String indicating the curve used for the given cipher, when applicable. + example: secp256r1 + default_field: false + - name: established + level: extended + type: boolean + description: Boolean flag indicating if the TLS negotiation was successful and + transitioned to an encrypted tunnel. + default_field: false + - name: next_protocol + level: extended + type: keyword + ignore_above: 1024 + description: String indicating the protocol being tunneled. Per the values in + the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), + this string should be lower case. + example: http/1.1 + default_field: false + - name: resumed + level: extended + type: boolean + description: Boolean flag indicating if this TLS connection was resumed from + an existing TLS negotiation. + default_field: false + - name: server.certificate + level: extended + type: keyword + ignore_above: 1024 + description: PEM-encoded stand-alone certificate offered by the server. This + is usually mutually-exclusive of `server.certificate_chain` since this value + also exists in that list. + example: MII... + default_field: false + - name: server.certificate_chain + level: extended + type: keyword + ignore_above: 1024 + description: Array of PEM-encoded certificates that make up the certificate + chain offered by the server. This is usually mutually-exclusive of `server.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + default_field: false + - name: server.hash.md5 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + default_field: false + - name: server.hash.sha1 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + default_field: false + - name: server.hash.sha256 + level: extended + type: keyword + ignore_above: 1024 + description: Certificate fingerprint using the SHA256 digest of DER-encoded + version of certificate offered by the server. For consistency with other hash + values, this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + default_field: false + - name: server.issuer + level: extended + type: wildcard + description: Subject of the issuer of the x.509 certificate presented by the + server. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + default_field: false + - name: server.ja3s + level: extended + type: keyword + ignore_above: 1024 + description: A hash that identifies servers based on how they perform an SSL/TLS + handshake. + example: 394441ab65754e2207b1e1b457b3641d + default_field: false + - name: server.not_after + level: extended + type: date + description: Timestamp indicating when server certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + default_field: false + - name: server.not_before + level: extended + type: date + description: Timestamp indicating when server certificate is first considered + valid. + example: '1970-01-01T00:00:00.000Z' + default_field: false + - name: server.subject + level: extended + type: wildcard + description: Subject of the x.509 certificate presented by the server. + example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + default_field: false + - name: server.x509.alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: server.x509.issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: server.x509.issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: server.x509.issuer.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: server.x509.issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: server.x509.issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: server.x509.issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: server.x509.issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: server.x509.not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: server.x509.not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: server.x509.public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: server.x509.public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: server.x509.public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: server.x509.public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: server.x509.serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: server.x509.signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: server.x509.subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: server.x509.subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: server.x509.subject.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: server.x509.subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: server.x509.subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: server.x509.subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: server.x509.subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: server.x509.version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Numeric part of the version parsed from the original string. + example: '1.2' + default_field: false + - name: version_protocol + level: extended + type: keyword + ignore_above: 1024 + description: Normalized lowercase protocol name parsed from original string. + example: tls + default_field: false + - name: tracing + title: Tracing + group: 2 + description: Distributed tracing makes it possible to analyze performance throughout + a microservice architecture all in one view. This is accomplished by tracing + all of the requests - from the initial web request in the front-end service + - to queries made through multiple back-end services. + type: group + fields: + - name: span.id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the span within the scope of its trace. + + A span represents an operation within a transaction, such as a request to + another service, or a database query.' + example: 3ff9a8981b7ccd5a + default_field: false + - name: trace.id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the trace. + + A trace groups multiple events like transactions that belong together. For + example, a user request handled by multiple inter-connected services.' + example: 4bf92f3577b34da6a3ce929d0e0e4736 + - name: transaction.id + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique identifier of the transaction within the scope of its trace. + + A transaction is the highest level of work measured within a service, such + as a request to a server.' + example: 00f067aa0ba902b7 + - name: url + title: URL + group: 2 + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + type: group + fields: + - name: domain + level: extended + type: wildcard + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + - name: extension + level: extended + type: keyword + ignore_above: 1024 + description: 'The field contains the file extension from the original request + url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + - name: fragment + level: extended + type: keyword + ignore_above: 1024 + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + - name: full + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + - name: original + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + - name: password + level: extended + type: keyword + ignore_above: 1024 + description: Password of the request. + - name: path + level: extended + type: wildcard + description: Path of the request, such as "/search". + - name: port + level: extended + type: long + format: string + description: Port of the request, such as 443. + example: 443 + - name: query + level: extended + type: keyword + ignore_above: 1024 + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + - name: registered_domain + level: extended + type: wildcard + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: scheme + level: extended + type: keyword + ignore_above: 1024 + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + - name: subdomain + level: extended + type: keyword + ignore_above: 1024 + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + default_field: false + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: username + level: extended + type: keyword + ignore_above: 1024 + description: Username of the request. + - name: user + title: User + group: 2 + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + type: group + fields: + - name: changes.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: changes.email + level: extended + type: wildcard + description: User email address. + default_field: false + - name: changes.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: User's full name, if available. + example: Albert Einstein + default_field: false + - name: changes.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: changes.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: changes.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: changes.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + default_field: false + - name: changes.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + default_field: false + - name: changes.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: Short name or login of the user. + example: albert + default_field: false + - name: changes.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: effective.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: effective.email + level: extended + type: wildcard + description: User email address. + default_field: false + - name: effective.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: User's full name, if available. + example: Albert Einstein + default_field: false + - name: effective.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: effective.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: effective.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: effective.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + default_field: false + - name: effective.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + default_field: false + - name: effective.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: Short name or login of the user. + example: albert + default_field: false + - name: effective.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: email + level: extended + type: wildcard + description: User email address. + - name: full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: target.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: target.email + level: extended + type: wildcard + description: User email address. + default_field: false + - name: target.full_name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: User's full name, if available. + example: Albert Einstein + default_field: false + - name: target.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + default_field: false + - name: target.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + default_field: false + - name: target.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + default_field: false + - name: target.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + default_field: false + - name: target.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + default_field: false + - name: target.name + level: core + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: Short name or login of the user. + example: albert + default_field: false + - name: target.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: user_agent + title: User agent + group: 2 + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + type: group + fields: + - name: device.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the device. + example: iPhone + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the user agent. + example: Safari + - name: original + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: wildcard + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Version of the user agent. + example: 12.0 + - name: vlan + title: VLAN + group: 2 + description: 'The VLAN fields are used to identify 802.1q tag(s) of a packet, + as well as ingress and egress VLAN associations of an observer in relation to + a specific packet or connection. + + Network.vlan fields are used to record a single VLAN tag, or the outer tag in + the case of q-in-q encapsulations, for a packet or connection as observed, typically + provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. + + Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple + 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. + Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should + only be used in addition to network.vlan fields to indicate q-in-q tagging. + + Observer.ingress and observer.egress VLAN values are used to record observer + specific information when observer events contain discrete ingress and egress + VLAN information, typically provided by firewalls, routers, or load balancers.' + type: group + fields: + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: vulnerability + title: Vulnerability + group: 2 + description: The vulnerability fields describe information about a vulnerability + that is relevant to an event. + type: group + fields: + - name: category + level: extended + type: keyword + ignore_above: 1024 + description: 'The type of system or architecture that the vulnerability affects. + These may be platform-specific (for example, Debian or SUSE) or general (for + example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys + vulnerability categories]) + + This field must be an array.' + example: '["Firewall"]' + default_field: false + - name: classification + level: extended + type: keyword + ignore_above: 1024 + description: The classification of the vulnerability scoring system. For example + (https://www.first.org/cvss/) + example: CVSS + default_field: false + - name: description + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + description: The description of the vulnerability that provides additional context + of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common + Vulnerabilities and Exposure CVE description]) + example: In macOS before 2.12.6, there is a vulnerability in the RPC... + default_field: false + - name: enumeration + level: extended + type: keyword + ignore_above: 1024 + description: The type of identifier used for this vulnerability. For example + (https://cve.mitre.org/about/) + example: CVE + default_field: false + - name: id + level: extended + type: keyword + ignore_above: 1024 + description: The identification (ID) is the number portion of a vulnerability + entry. It includes a unique identification number for the vulnerability. For + example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities + and Exposure CVE ID] + example: CVE-2019-00001 + default_field: false + - name: reference + level: extended + type: keyword + ignore_above: 1024 + description: A resource that provides additional information, context, and mitigations + for the identified vulnerability. + example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 + default_field: false + - name: report_id + level: extended + type: keyword + ignore_above: 1024 + description: The report or scan identification number. + example: 20191018.0001 + default_field: false + - name: scanner.vendor + level: extended + type: keyword + ignore_above: 1024 + description: The name of the vulnerability scanner vendor. + example: Tenable + default_field: false + - name: score.base + level: extended + type: float + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Base scores cover an assessment for exploitability metrics (attack vector, + complexity, privileges, and user interaction), impact metrics (confidentiality, + integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + default_field: false + - name: score.environmental + level: extended + type: float + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Environmental scores cover an assessment for any modified Base metrics, confidentiality, + integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + default_field: false + - name: score.temporal + level: extended + type: float + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Temporal scores cover an assessment for code maturity, remediation level, + and confidence. For example (https://www.first.org/cvss/specification-document)' + default_field: false + - name: score.version + level: extended + type: keyword + ignore_above: 1024 + description: 'The National Vulnerability Database (NVD) provides qualitative + severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score + ranges in addition to the severity ratings for CVSS v3.0 as they are defined + in the CVSS v3.0 specification. + + CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit + organization, whose mission is to help computer security incident response + teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss)' + example: 2.0 + default_field: false + - name: severity + level: extended + type: keyword + ignore_above: 1024 + description: The severity of the vulnerability can help with metrics and internal + prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) + example: Critical + default_field: false + - name: x509 + title: x509 Certificate + group: 2 + description: This implements the common core fields for x509 certificates. This + information is likely logged with TLS sessions, digital signatures found in + executable binaries, S/MIME information in email bodies, or analysis of files + on disk. When only a single certificate is logged in an event, it should be + nested under `file`. When hashes of the DER-encoded certificate are available, + the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For + events that contain certificate information for both sides of the connection, + the x509 object could be nested under the respective side of the connection + information (e.g. `tls.server.x509`). + type: group + fields: + - name: alternative_names + level: extended + type: keyword + ignore_above: 1024 + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + default_field: false + - name: issuer.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + default_field: false + - name: issuer.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) codes + example: US + default_field: false + - name: issuer.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + default_field: false + - name: issuer.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: Mountain View + default_field: false + - name: issuer.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + default_field: false + - name: issuer.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + default_field: false + - name: issuer.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: not_after + level: extended + type: date + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + default_field: false + - name: not_before + level: extended + type: date + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + default_field: false + - name: public_key_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Algorithm used to generate the public key. + example: RSA + default_field: false + - name: public_key_curve + level: extended + type: keyword + ignore_above: 1024 + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + default_field: false + - name: public_key_exponent + level: extended + type: long + description: Exponent used to derive the public key. This is algorithm specific. + example: 65537 + index: false + default_field: false + - name: public_key_size + level: extended + type: long + description: The size of the public key space in bits. + example: 2048 + default_field: false + - name: serial_number + level: extended + type: keyword + ignore_above: 1024 + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + default_field: false + - name: signature_algorithm + level: extended + type: keyword + ignore_above: 1024 + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + default_field: false + - name: subject.common_name + level: extended + type: keyword + ignore_above: 1024 + description: List of common names (CN) of subject. + example: shared.global.example.net + default_field: false + - name: subject.country + level: extended + type: keyword + ignore_above: 1024 + description: List of country (C) code + example: US + default_field: false + - name: subject.distinguished_name + level: extended + type: wildcard + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + default_field: false + - name: subject.locality + level: extended + type: keyword + ignore_above: 1024 + description: List of locality names (L) + example: San Francisco + default_field: false + - name: subject.organization + level: extended + type: keyword + ignore_above: 1024 + description: List of organizations (O) of subject. + example: Example, Inc. + default_field: false + - name: subject.organizational_unit + level: extended + type: keyword + ignore_above: 1024 + description: List of organizational units (OU) of subject. + default_field: false + - name: subject.state_or_province + level: extended + type: keyword + ignore_above: 1024 + description: List of state or province names (ST, S, or P) + example: California + default_field: false + - name: version_number + level: extended + type: keyword + ignore_above: 1024 + description: Version of x509 format. + example: 3 + default_field: false diff --git a/experimental/generated/csv/fields.csv b/experimental/generated/csv/fields.csv new file mode 100644 index 0000000000..c7fc56ab27 --- /dev/null +++ b/experimental/generated/csv/fields.csv @@ -0,0 +1,720 @@ +ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description +2.0.0-dev,true,base,@timestamp,date,core,,2016-05-23T08:05:34.853Z,Date/time when the event originated. +2.0.0-dev,true,base,labels,object,core,,"{""application"": ""foo-bar"", ""env"": ""production""}",Custom key/value pairs. +2.0.0-dev,true,base,message,text,core,,Hello World,Log message optimized for viewing in a log viewer. +2.0.0-dev,true,base,tags,keyword,core,array,"[""production"", ""env2""]",List of keywords used to tag each event. +2.0.0-dev,true,agent,agent.build.original,wildcard,core,,"metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]",Extended build information for the agent. +2.0.0-dev,true,agent,agent.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this agent. +2.0.0-dev,true,agent,agent.id,keyword,core,,8a4f500d,Unique identifier of this agent. +2.0.0-dev,true,agent,agent.name,keyword,core,,foo,Custom name of the agent. +2.0.0-dev,true,agent,agent.type,keyword,core,,filebeat,Type of the agent. +2.0.0-dev,true,agent,agent.version,keyword,core,,6.0.0-rc2,Version of the agent. +2.0.0-dev,true,client,client.address,keyword,extended,,,Client network address. +2.0.0-dev,true,client,client.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev,true,client,client.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev,true,client,client.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev,true,client,client.bytes,long,core,,184,Bytes sent from the client to the server. +2.0.0-dev,true,client,client.domain,wildcard,core,,,Client domain. +2.0.0-dev,true,client,client.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,client,client.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,client,client.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,client,client.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,client,client.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,client,client.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,client,client.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,client,client.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,client,client.ip,ip,core,,,IP address of the client. +2.0.0-dev,true,client,client.mac,keyword,core,,,MAC address of the client. +2.0.0-dev,true,client,client.nat.ip,ip,extended,,,Client NAT ip address +2.0.0-dev,true,client,client.nat.port,long,extended,,,Client NAT port +2.0.0-dev,true,client,client.packets,long,core,,12,Packets sent from the client to the server. +2.0.0-dev,true,client,client.port,long,core,,,Port of the client. +2.0.0-dev,true,client,client.registered_domain,wildcard,extended,,example.com,"The highest registered client domain, stripped of the subdomain." +2.0.0-dev,true,client,client.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev,true,client,client.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,client,client.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,client,client.user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,client,client.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,client,client.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,client,client.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,client,client.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,client,client.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,client,client.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,client,client.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,client,client.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,client,client.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,client,client.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,cloud,cloud.account.id,keyword,extended,,666777888999,The cloud account or organization id. +2.0.0-dev,true,cloud,cloud.account.name,keyword,extended,,elastic-dev,The cloud account name. +2.0.0-dev,true,cloud,cloud.availability_zone,keyword,extended,,us-east-1c,Availability zone in which this host is running. +2.0.0-dev,true,cloud,cloud.instance.id,keyword,extended,,i-1234567890abcdef0,Instance ID of the host machine. +2.0.0-dev,true,cloud,cloud.instance.name,keyword,extended,,,Instance name of the host machine. +2.0.0-dev,true,cloud,cloud.machine.type,keyword,extended,,t2.medium,Machine type of the host machine. +2.0.0-dev,true,cloud,cloud.project.id,keyword,extended,,my-project,The cloud project id. +2.0.0-dev,true,cloud,cloud.project.name,keyword,extended,,my project,The cloud project name. +2.0.0-dev,true,cloud,cloud.provider,keyword,extended,,aws,Name of the cloud provider. +2.0.0-dev,true,cloud,cloud.region,keyword,extended,,us-east-1,Region in which this host is running. +2.0.0-dev,true,container,container.id,keyword,core,,,Unique container id. +2.0.0-dev,true,container,container.image.name,keyword,extended,,,Name of the image the container was built on. +2.0.0-dev,true,container,container.image.tag,keyword,extended,array,,Container image tags. +2.0.0-dev,true,container,container.labels,object,extended,,,Image labels. +2.0.0-dev,true,container,container.name,keyword,extended,,,Container name. +2.0.0-dev,true,container,container.runtime,keyword,extended,,docker,Runtime managing this container. +2.0.0-dev,true,destination,destination.address,keyword,extended,,,Destination network address. +2.0.0-dev,true,destination,destination.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev,true,destination,destination.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev,true,destination,destination.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev,true,destination,destination.bytes,long,core,,184,Bytes sent from the destination to the source. +2.0.0-dev,true,destination,destination.domain,wildcard,core,,,Destination domain. +2.0.0-dev,true,destination,destination.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,destination,destination.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,destination,destination.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,destination,destination.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,destination,destination.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,destination,destination.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,destination,destination.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,destination,destination.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,destination,destination.ip,ip,core,,,IP address of the destination. +2.0.0-dev,true,destination,destination.mac,keyword,core,,,MAC address of the destination. +2.0.0-dev,true,destination,destination.nat.ip,ip,extended,,,Destination NAT ip +2.0.0-dev,true,destination,destination.nat.port,long,extended,,,Destination NAT Port +2.0.0-dev,true,destination,destination.packets,long,core,,12,Packets sent from the destination to the source. +2.0.0-dev,true,destination,destination.port,long,core,,,Port of the destination. +2.0.0-dev,true,destination,destination.registered_domain,wildcard,extended,,example.com,"The highest registered destination domain, stripped of the subdomain." +2.0.0-dev,true,destination,destination.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev,true,destination,destination.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,destination,destination.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,destination,destination.user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,destination,destination.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,destination,destination.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,destination,destination.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,destination,destination.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,destination,destination.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,destination,destination.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,destination,destination.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,destination,destination.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,destination,destination.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,destination,destination.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,dll,dll.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev,true,dll,dll.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev,true,dll,dll.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev,true,dll,dll.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev,true,dll,dll.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev,true,dll,dll.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev,true,dll,dll.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev,true,dll,dll.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev,true,dll,dll.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev,true,dll,dll.name,keyword,core,,kernel32.dll,Name of the library. +2.0.0-dev,true,dll,dll.path,keyword,extended,,C:\Windows\System32\kernel32.dll,Full file path of the library. +2.0.0-dev,true,dll,dll.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev,true,dll,dll.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev,true,dll,dll.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev,true,dll,dll.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev,true,dll,dll.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev,true,dll,dll.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev,true,dll,dll.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev,true,dns,dns.answers.class,keyword,extended,,IN,The class of DNS data contained in this resource record. +2.0.0-dev,true,dns,dns.answers.data,wildcard,extended,,10.10.10.10,The data describing the resource. +2.0.0-dev,true,dns,dns.answers.name,keyword,extended,,www.example.com,The domain name to which this resource record pertains. +2.0.0-dev,true,dns,dns.answers.ttl,long,extended,,180,The time interval in seconds that this resource record may be cached before it should be discarded. +2.0.0-dev,true,dns,dns.answers.type,keyword,extended,,CNAME,The type of data contained in this resource record. +2.0.0-dev,true,dns,dns.header_flags,keyword,extended,array,"[""RD"", ""RA""]",Array of DNS header flags. +2.0.0-dev,true,dns,dns.id,keyword,extended,,62111,The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. +2.0.0-dev,true,dns,dns.op_code,keyword,extended,,QUERY,The DNS operation code that specifies the kind of query in the message. +2.0.0-dev,true,dns,dns.question.class,keyword,extended,,IN,The class of records being queried. +2.0.0-dev,true,dns,dns.question.name,wildcard,extended,,www.example.com,The name being queried. +2.0.0-dev,true,dns,dns.question.registered_domain,keyword,extended,,example.com,"The highest registered domain, stripped of the subdomain." +2.0.0-dev,true,dns,dns.question.subdomain,keyword,extended,,www,The subdomain of the domain. +2.0.0-dev,true,dns,dns.question.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,dns,dns.question.type,keyword,extended,,AAAA,The type of record being queried. +2.0.0-dev,true,dns,dns.resolved_ip,ip,extended,array,"[""10.10.10.10"", ""10.10.10.11""]",Array containing all IPs seen in answers.data +2.0.0-dev,true,dns,dns.response_code,keyword,extended,,NOERROR,The DNS response code. +2.0.0-dev,true,dns,dns.type,keyword,extended,,answer,"The type of DNS event captured, query or answer." +2.0.0-dev,true,ecs,ecs.version,keyword,core,,1.0.0,ECS version this event conforms to. +2.0.0-dev,true,error,error.code,keyword,core,,,Error code describing the error. +2.0.0-dev,true,error,error.id,keyword,core,,,Unique identifier for the error. +2.0.0-dev,true,error,error.message,text,core,,,Error message. +2.0.0-dev,true,error,error.stack_trace,wildcard,extended,,,The stack trace of this error in plain text. +2.0.0-dev,true,error,error.stack_trace.text,text,extended,,,The stack trace of this error in plain text. +2.0.0-dev,true,error,error.type,wildcard,extended,,java.lang.NullPointerException,"The type of the error, for example the class name of the exception." +2.0.0-dev,true,event,event.action,keyword,core,,user-password-change,The action captured by the event. +2.0.0-dev,true,event,event.category,keyword,core,array,authentication,Event category. The second categorization field in the hierarchy. +2.0.0-dev,true,event,event.code,keyword,extended,,4648,Identification code for this event. +2.0.0-dev,true,event,event.created,date,core,,2016-05-23T08:05:34.857Z,Time when the event was first read by an agent or by your pipeline. +2.0.0-dev,true,event,event.dataset,keyword,core,,apache.access,Name of the dataset. +2.0.0-dev,true,event,event.duration,long,core,,,Duration of the event in nanoseconds. +2.0.0-dev,true,event,event.end,date,extended,,,event.end contains the date when the event ended or when the activity was last observed. +2.0.0-dev,true,event,event.hash,keyword,extended,,123456789012345678901234567890ABCD,Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +2.0.0-dev,true,event,event.id,keyword,core,,8a4f500d,Unique ID to describe the event. +2.0.0-dev,true,event,event.ingested,date,core,,2016-05-23T08:05:35.101Z,Timestamp when an event arrived in the central data store. +2.0.0-dev,true,event,event.kind,keyword,core,,alert,The kind of the event. The highest categorization field in the hierarchy. +2.0.0-dev,true,event,event.module,keyword,core,,apache,Name of the module this data is coming from. +2.0.0-dev,false,event,event.original,wildcard,core,,Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232,Raw text message of entire event. +2.0.0-dev,true,event,event.outcome,keyword,core,,success,The outcome of the event. The lowest level categorization field in the hierarchy. +2.0.0-dev,true,event,event.provider,keyword,extended,,kernel,Source of the event. +2.0.0-dev,true,event,event.reason,keyword,extended,,Terminated an unexpected process,"Reason why this event happened, according to the source" +2.0.0-dev,true,event,event.reference,keyword,extended,,https://system.example.com/event/#0001234,Event reference URL +2.0.0-dev,true,event,event.risk_score,float,core,,,Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +2.0.0-dev,true,event,event.risk_score_norm,float,extended,,,Normalized risk score or priority of the event (0-100). +2.0.0-dev,true,event,event.sequence,long,extended,,,Sequence number of the event. +2.0.0-dev,true,event,event.severity,long,core,,7,Numeric severity of the event. +2.0.0-dev,true,event,event.start,date,extended,,,event.start contains the date when the event started or when the activity was first observed. +2.0.0-dev,true,event,event.timezone,keyword,extended,,,Event time zone. +2.0.0-dev,true,event,event.type,keyword,core,array,,Event type. The third categorization field in the hierarchy. +2.0.0-dev,true,event,event.url,keyword,extended,,https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe,Event investigation URL +2.0.0-dev,true,file,file.accessed,date,extended,,,Last time the file was accessed. +2.0.0-dev,true,file,file.attributes,keyword,extended,array,"[""readonly"", ""system""]",Array of file attributes. +2.0.0-dev,true,file,file.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev,true,file,file.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev,true,file,file.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev,true,file,file.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev,true,file,file.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev,true,file,file.created,date,extended,,,File creation time. +2.0.0-dev,true,file,file.ctime,date,extended,,,Last time the file attributes or metadata changed. +2.0.0-dev,true,file,file.device,keyword,extended,,sda,Device that is the source of the file. +2.0.0-dev,true,file,file.directory,wildcard,extended,,/home/alice,Directory where the file is located. +2.0.0-dev,true,file,file.drive_letter,keyword,extended,,C,Drive letter where the file is located. +2.0.0-dev,true,file,file.extension,keyword,extended,,png,File extension. +2.0.0-dev,true,file,file.gid,keyword,extended,,1001,Primary group ID (GID) of the file. +2.0.0-dev,true,file,file.group,keyword,extended,,alice,Primary group name of the file. +2.0.0-dev,true,file,file.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev,true,file,file.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev,true,file,file.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev,true,file,file.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev,true,file,file.inode,keyword,extended,,256383,Inode representing the file in the filesystem. +2.0.0-dev,true,file,file.mime_type,keyword,extended,,,"Media type of file, document, or arrangement of bytes." +2.0.0-dev,true,file,file.mode,keyword,extended,,0640,Mode of the file in octal representation. +2.0.0-dev,true,file,file.mtime,date,extended,,,Last time the file content was modified. +2.0.0-dev,true,file,file.name,keyword,extended,,example.png,"Name of the file including the extension, without the directory." +2.0.0-dev,true,file,file.owner,keyword,extended,,alice,File owner's username. +2.0.0-dev,true,file,file.path,wildcard,extended,,/home/alice/example.png,"Full path to the file, including the file name." +2.0.0-dev,true,file,file.path.text,text,extended,,/home/alice/example.png,"Full path to the file, including the file name." +2.0.0-dev,true,file,file.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev,true,file,file.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev,true,file,file.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev,true,file,file.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev,true,file,file.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev,true,file,file.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev,true,file,file.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev,true,file,file.size,long,extended,,16384,File size in bytes. +2.0.0-dev,true,file,file.target_path,wildcard,extended,,,Target path for symlinks. +2.0.0-dev,true,file,file.target_path.text,text,extended,,,Target path for symlinks. +2.0.0-dev,true,file,file.type,keyword,extended,,file,"File type (file, dir, or symlink)." +2.0.0-dev,true,file,file.uid,keyword,extended,,1001,The user ID (UID) or security identifier (SID) of the file owner. +2.0.0-dev,true,file,file.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev,true,file,file.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev,true,file,file.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev,true,file,file.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev,true,file,file.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev,true,file,file.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev,true,file,file.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev,true,file,file.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,file,file.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev,true,file,file.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev,true,file,file.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev,true,file,file.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev,false,file,file.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev,true,file,file.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev,true,file,file.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev,true,file,file.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev,true,file,file.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev,true,file,file.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev,true,file,file.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev,true,file,file.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev,true,file,file.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev,true,file,file.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev,true,file,file.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,file,file.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev,true,group,group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,group,group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,group,group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,host,host.architecture,keyword,core,,x86_64,Operating system architecture. +2.0.0-dev,true,host,host.domain,keyword,extended,,CONTOSO,Name of the directory the group is a member of. +2.0.0-dev,true,host,host.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,host,host.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,host,host.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,host,host.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,host,host.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,host,host.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,host,host.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,host,host.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,host,host.hostname,wildcard,core,,,Hostname of the host. +2.0.0-dev,true,host,host.id,keyword,core,,,Unique host id. +2.0.0-dev,true,host,host.ip,ip,core,array,,Host ip addresses. +2.0.0-dev,true,host,host.mac,keyword,core,array,,Host mac addresses. +2.0.0-dev,true,host,host.name,keyword,core,,,Name of the host. +2.0.0-dev,true,host,host.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev,true,host,host.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,host,host.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,host,host.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev,true,host,host.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,host,host.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,host,host.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev,true,host,host.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev,true,host,host.type,keyword,core,,,Type of host. +2.0.0-dev,true,host,host.uptime,long,extended,,1325,Seconds the host has been up. +2.0.0-dev,true,host,host.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,host,host.user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,host,host.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,host,host.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,host,host.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,host,host.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,host,host.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,host,host.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,host,host.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,host,host.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,host,host.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,host,host.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,http,http.request.body.bytes,long,extended,,887,Size in bytes of the request body. +2.0.0-dev,true,http,http.request.body.content,wildcard,extended,,Hello world,The full HTTP request body. +2.0.0-dev,true,http,http.request.body.content.text,text,extended,,Hello world,The full HTTP request body. +2.0.0-dev,true,http,http.request.bytes,long,extended,,1437,Total size in bytes of the request (body and headers). +2.0.0-dev,true,http,http.request.method,keyword,extended,,"GET, POST, PUT, PoST",HTTP request method. +2.0.0-dev,true,http,http.request.mime_type,keyword,extended,,image/gif,Mime type of the body of the request. +2.0.0-dev,true,http,http.request.referrer,wildcard,extended,,https://blog.example.com/,Referrer for this HTTP request. +2.0.0-dev,true,http,http.response.body.bytes,long,extended,,887,Size in bytes of the response body. +2.0.0-dev,true,http,http.response.body.content,wildcard,extended,,Hello world,The full HTTP response body. +2.0.0-dev,true,http,http.response.body.content.text,text,extended,,Hello world,The full HTTP response body. +2.0.0-dev,true,http,http.response.bytes,long,extended,,1437,Total size in bytes of the response (body and headers). +2.0.0-dev,true,http,http.response.mime_type,keyword,extended,,image/gif,Mime type of the body of the response. +2.0.0-dev,true,http,http.response.status_code,long,extended,,404,HTTP response status code. +2.0.0-dev,true,http,http.version,keyword,extended,,1.1,HTTP version. +2.0.0-dev,true,log,log.file.path,wildcard,extended,,/var/log/fun-times.log,Full path to the log file this event came from. +2.0.0-dev,true,log,log.level,keyword,core,,error,Log level of the log event. +2.0.0-dev,true,log,log.logger,wildcard,core,,org.elasticsearch.bootstrap.Bootstrap,Name of the logger. +2.0.0-dev,true,log,log.origin.file.line,integer,extended,,42,The line number of the file which originated the log event. +2.0.0-dev,true,log,log.origin.file.name,keyword,extended,,Bootstrap.java,The code file which originated the log event. +2.0.0-dev,true,log,log.origin.function,keyword,extended,,init,The function which originated the log event. +2.0.0-dev,false,log,log.original,keyword,core,,Sep 19 08:26:10 localhost My log,"Original log message with light interpretation only (encoding, newlines)." +2.0.0-dev,true,log,log.syslog,object,extended,,,Syslog metadata +2.0.0-dev,true,log,log.syslog.facility.code,long,extended,,23,Syslog numeric facility of the event. +2.0.0-dev,true,log,log.syslog.facility.name,keyword,extended,,local7,Syslog text-based facility of the event. +2.0.0-dev,true,log,log.syslog.priority,long,extended,,135,Syslog priority of the event. +2.0.0-dev,true,log,log.syslog.severity.code,long,extended,,3,Syslog numeric severity of the event. +2.0.0-dev,true,log,log.syslog.severity.name,keyword,extended,,Error,Syslog text-based severity of the event. +2.0.0-dev,true,network,network.application,keyword,extended,,aim,Application level protocol name. +2.0.0-dev,true,network,network.bytes,long,core,,368,Total bytes transferred in both directions. +2.0.0-dev,true,network,network.community_id,keyword,extended,,1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=,A hash of source and destination IPs and ports. +2.0.0-dev,true,network,network.direction,keyword,core,,inbound,Direction of the network traffic. +2.0.0-dev,true,network,network.forwarded_ip,ip,core,,192.1.1.2,Host IP address when the source IP address is the proxy. +2.0.0-dev,true,network,network.iana_number,keyword,extended,,6,IANA Protocol Number. +2.0.0-dev,true,network,network.inner,object,extended,,,Inner VLAN tag information +2.0.0-dev,true,network,network.inner.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev,true,network,network.inner.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev,true,network,network.name,keyword,extended,,Guest Wifi,Name given by operators to sections of their network. +2.0.0-dev,true,network,network.packets,long,core,,24,Total packets transferred in both directions. +2.0.0-dev,true,network,network.protocol,keyword,core,,http,L7 Network protocol name. +2.0.0-dev,true,network,network.transport,keyword,core,,tcp,Protocol Name corresponding to the field `iana_number`. +2.0.0-dev,true,network,network.type,keyword,core,,ipv4,"In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc" +2.0.0-dev,true,network,network.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev,true,network,network.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev,true,observer,observer.egress,object,extended,,,Object field for egress information +2.0.0-dev,true,observer,observer.egress.interface.alias,keyword,extended,,outside,Interface alias +2.0.0-dev,true,observer,observer.egress.interface.id,keyword,extended,,10,Interface ID +2.0.0-dev,true,observer,observer.egress.interface.name,keyword,extended,,eth0,Interface name +2.0.0-dev,true,observer,observer.egress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev,true,observer,observer.egress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev,true,observer,observer.egress.zone,keyword,extended,,Public_Internet,Observer Egress zone +2.0.0-dev,true,observer,observer.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,observer,observer.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,observer,observer.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,observer,observer.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,observer,observer.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,observer,observer.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,observer,observer.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,observer,observer.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,observer,observer.hostname,keyword,core,,,Hostname of the observer. +2.0.0-dev,true,observer,observer.ingress,object,extended,,,Object field for ingress information +2.0.0-dev,true,observer,observer.ingress.interface.alias,keyword,extended,,outside,Interface alias +2.0.0-dev,true,observer,observer.ingress.interface.id,keyword,extended,,10,Interface ID +2.0.0-dev,true,observer,observer.ingress.interface.name,keyword,extended,,eth0,Interface name +2.0.0-dev,true,observer,observer.ingress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev,true,observer,observer.ingress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev,true,observer,observer.ingress.zone,keyword,extended,,DMZ,Observer ingress zone +2.0.0-dev,true,observer,observer.ip,ip,core,array,,IP addresses of the observer. +2.0.0-dev,true,observer,observer.mac,keyword,core,array,,MAC addresses of the observer +2.0.0-dev,true,observer,observer.name,keyword,extended,,1_proxySG,Custom name of the observer. +2.0.0-dev,true,observer,observer.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev,true,observer,observer.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,observer,observer.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,observer,observer.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev,true,observer,observer.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,observer,observer.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,observer,observer.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev,true,observer,observer.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev,true,observer,observer.product,keyword,extended,,s200,The product name of the observer. +2.0.0-dev,true,observer,observer.serial_number,keyword,extended,,,Observer serial number. +2.0.0-dev,true,observer,observer.type,keyword,core,,firewall,The type of the observer the data is coming from. +2.0.0-dev,true,observer,observer.vendor,keyword,core,,Symantec,Vendor name of the observer. +2.0.0-dev,true,observer,observer.version,keyword,core,,,Observer version. +2.0.0-dev,true,organization,organization.id,keyword,extended,,,Unique identifier for the organization. +2.0.0-dev,true,organization,organization.name,wildcard,extended,,,Organization name. +2.0.0-dev,true,organization,organization.name.text,text,extended,,,Organization name. +2.0.0-dev,true,package,package.architecture,keyword,extended,,x86_64,Package architecture. +2.0.0-dev,true,package,package.build_version,keyword,extended,,36f4f7e89dd61b0988b12ee000b98966867710cd,Build version information +2.0.0-dev,true,package,package.checksum,keyword,extended,,68b329da9893e34099c7d8ad5cb9c940,Checksum of the installed package for verification. +2.0.0-dev,true,package,package.description,keyword,extended,,Open source programming language to build simple/reliable/efficient software.,Description of the package. +2.0.0-dev,true,package,package.install_scope,keyword,extended,,global,"Indicating how the package was installed, e.g. user-local, global." +2.0.0-dev,true,package,package.installed,date,extended,,,Time when package was installed. +2.0.0-dev,true,package,package.license,keyword,extended,,Apache License 2.0,Package license +2.0.0-dev,true,package,package.name,keyword,extended,,go,Package name +2.0.0-dev,true,package,package.path,keyword,extended,,/usr/local/Cellar/go/1.12.9/,Path where the package is installed. +2.0.0-dev,true,package,package.reference,keyword,extended,,https://golang.org,Package home page or reference URL +2.0.0-dev,true,package,package.size,long,extended,,62231,Package size in bytes. +2.0.0-dev,true,package,package.type,keyword,extended,,rpm,Package type +2.0.0-dev,true,package,package.version,keyword,extended,,1.12.9,Package version +2.0.0-dev,true,process,process.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. +2.0.0-dev,true,process,process.args_count,long,extended,,4,Length of the process.args array. +2.0.0-dev,true,process,process.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev,true,process,process.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev,true,process,process.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev,true,process,process.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev,true,process,process.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev,true,process,process.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev,true,process,process.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev,true,process,process.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. +2.0.0-dev,true,process,process.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev,true,process,process.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev,true,process,process.exit_code,long,extended,,137,The exit code of the process. +2.0.0-dev,true,process,process.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev,true,process,process.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev,true,process,process.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev,true,process,process.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev,true,process,process.name,wildcard,extended,,ssh,Process name. +2.0.0-dev,true,process,process.name.text,text,extended,,ssh,Process name. +2.0.0-dev,true,process,process.parent.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. +2.0.0-dev,true,process,process.parent.args_count,long,extended,,4,Length of the process.args array. +2.0.0-dev,true,process,process.parent.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev,true,process,process.parent.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev,true,process,process.parent.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev,true,process,process.parent.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev,true,process,process.parent.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev,true,process,process.parent.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev,true,process,process.parent.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev,true,process,process.parent.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. +2.0.0-dev,true,process,process.parent.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev,true,process,process.parent.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev,true,process,process.parent.exit_code,long,extended,,137,The exit code of the process. +2.0.0-dev,true,process,process.parent.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev,true,process,process.parent.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev,true,process,process.parent.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev,true,process,process.parent.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev,true,process,process.parent.name,wildcard,extended,,ssh,Process name. +2.0.0-dev,true,process,process.parent.name.text,text,extended,,ssh,Process name. +2.0.0-dev,true,process,process.parent.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev,true,process,process.parent.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev,true,process,process.parent.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev,true,process,process.parent.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev,true,process,process.parent.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev,true,process,process.parent.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev,true,process,process.parent.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev,true,process,process.parent.pgid,long,extended,,,Identifier of the group of processes the process belongs to. +2.0.0-dev,true,process,process.parent.pid,long,core,,4242,Process id. +2.0.0-dev,true,process,process.parent.ppid,long,extended,,4241,Parent process' pid. +2.0.0-dev,true,process,process.parent.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. +2.0.0-dev,true,process,process.parent.thread.id,long,extended,,4242,Thread ID. +2.0.0-dev,true,process,process.parent.thread.name,keyword,extended,,thread-0,Thread name. +2.0.0-dev,true,process,process.parent.title,wildcard,extended,,,Process title. +2.0.0-dev,true,process,process.parent.title.text,text,extended,,,Process title. +2.0.0-dev,true,process,process.parent.uptime,long,extended,,1325,Seconds the process has been up. +2.0.0-dev,true,process,process.parent.working_directory,wildcard,extended,,/home/alice,The working directory of the process. +2.0.0-dev,true,process,process.parent.working_directory.text,text,extended,,/home/alice,The working directory of the process. +2.0.0-dev,true,process,process.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev,true,process,process.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev,true,process,process.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev,true,process,process.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev,true,process,process.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev,true,process,process.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev,true,process,process.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev,true,process,process.pgid,long,extended,,,Identifier of the group of processes the process belongs to. +2.0.0-dev,true,process,process.pid,long,core,,4242,Process id. +2.0.0-dev,true,process,process.ppid,long,extended,,4241,Parent process' pid. +2.0.0-dev,true,process,process.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. +2.0.0-dev,true,process,process.thread.id,long,extended,,4242,Thread ID. +2.0.0-dev,true,process,process.thread.name,keyword,extended,,thread-0,Thread name. +2.0.0-dev,true,process,process.title,wildcard,extended,,,Process title. +2.0.0-dev,true,process,process.title.text,text,extended,,,Process title. +2.0.0-dev,true,process,process.uptime,long,extended,,1325,Seconds the process has been up. +2.0.0-dev,true,process,process.working_directory,wildcard,extended,,/home/alice,The working directory of the process. +2.0.0-dev,true,process,process.working_directory.text,text,extended,,/home/alice,The working directory of the process. +2.0.0-dev,true,registry,registry.data.bytes,keyword,extended,,ZQBuAC0AVQBTAAAAZQBuAAAAAAA=,Original bytes written with base64 encoding. +2.0.0-dev,true,registry,registry.data.strings,wildcard,core,array,"[""C:\rta\red_ttp\bin\myapp.exe""]",List of strings representing what was written to the registry. +2.0.0-dev,true,registry,registry.data.type,keyword,core,,REG_SZ,Standard registry type for encoding contents +2.0.0-dev,true,registry,registry.hive,keyword,core,,HKLM,Abbreviated name for the hive. +2.0.0-dev,true,registry,registry.key,wildcard,core,,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe,Hive-relative path of keys. +2.0.0-dev,true,registry,registry.path,wildcard,core,,HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger,"Full path, including hive, key and value" +2.0.0-dev,true,registry,registry.value,keyword,core,,Debugger,Name of the value written. +2.0.0-dev,true,related,related.hash,keyword,extended,array,,All the hashes seen on your event. +2.0.0-dev,true,related,related.hosts,keyword,extended,array,,All the host identifiers seen on your event. +2.0.0-dev,true,related,related.ip,ip,extended,array,,All of the IPs seen on your event. +2.0.0-dev,true,related,related.user,keyword,extended,array,,All the user names seen on your event. +2.0.0-dev,true,rule,rule.author,keyword,extended,array,"[""Star-Lord""]",Rule author +2.0.0-dev,true,rule,rule.category,keyword,extended,,Attempted Information Leak,Rule category +2.0.0-dev,true,rule,rule.description,keyword,extended,,Block requests to public DNS over HTTPS / TLS protocols,Rule description +2.0.0-dev,true,rule,rule.id,keyword,extended,,101,Rule ID +2.0.0-dev,true,rule,rule.license,keyword,extended,,Apache 2.0,Rule license +2.0.0-dev,true,rule,rule.name,keyword,extended,,BLOCK_DNS_over_TLS,Rule name +2.0.0-dev,true,rule,rule.reference,keyword,extended,,https://en.wikipedia.org/wiki/DNS_over_TLS,Rule reference URL +2.0.0-dev,true,rule,rule.ruleset,keyword,extended,,Standard_Protocol_Filters,Rule ruleset +2.0.0-dev,true,rule,rule.uuid,keyword,extended,,1100110011,Rule UUID +2.0.0-dev,true,rule,rule.version,keyword,extended,,1.1,Rule version +2.0.0-dev,true,server,server.address,keyword,extended,,,Server network address. +2.0.0-dev,true,server,server.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev,true,server,server.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev,true,server,server.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev,true,server,server.bytes,long,core,,184,Bytes sent from the server to the client. +2.0.0-dev,true,server,server.domain,wildcard,core,,,Server domain. +2.0.0-dev,true,server,server.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,server,server.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,server,server.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,server,server.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,server,server.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,server,server.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,server,server.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,server,server.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,server,server.ip,ip,core,,,IP address of the server. +2.0.0-dev,true,server,server.mac,keyword,core,,,MAC address of the server. +2.0.0-dev,true,server,server.nat.ip,ip,extended,,,Server NAT ip +2.0.0-dev,true,server,server.nat.port,long,extended,,,Server NAT port +2.0.0-dev,true,server,server.packets,long,core,,12,Packets sent from the server to the client. +2.0.0-dev,true,server,server.port,long,core,,,Port of the server. +2.0.0-dev,true,server,server.registered_domain,wildcard,extended,,example.com,"The highest registered server domain, stripped of the subdomain." +2.0.0-dev,true,server,server.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev,true,server,server.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,server,server.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,server,server.user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,server,server.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,server,server.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,server,server.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,server,server.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,server,server.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,server,server.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,server,server.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,server,server.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,server,server.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,server,server.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,service,service.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this service. +2.0.0-dev,true,service,service.id,keyword,core,,d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6,Unique identifier of the running service. +2.0.0-dev,true,service,service.name,keyword,core,,elasticsearch-metrics,Name of the service. +2.0.0-dev,true,service,service.node.name,keyword,extended,,instance-0000000016,Name of the service node. +2.0.0-dev,true,service,service.state,keyword,core,,,Current state of the service. +2.0.0-dev,true,service,service.type,keyword,core,,elasticsearch,The type of the service. +2.0.0-dev,true,service,service.version,keyword,core,,3.2.4,Version of the service. +2.0.0-dev,true,source,source.address,keyword,extended,,,Source network address. +2.0.0-dev,true,source,source.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev,true,source,source.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev,true,source,source.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev,true,source,source.bytes,long,core,,184,Bytes sent from the source to the destination. +2.0.0-dev,true,source,source.domain,wildcard,core,,,Source domain. +2.0.0-dev,true,source,source.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev,true,source,source.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev,true,source,source.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev,true,source,source.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev,true,source,source.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev,true,source,source.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev,true,source,source.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev,true,source,source.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev,true,source,source.ip,ip,core,,,IP address of the source. +2.0.0-dev,true,source,source.mac,keyword,core,,,MAC address of the source. +2.0.0-dev,true,source,source.nat.ip,ip,extended,,,Source NAT ip +2.0.0-dev,true,source,source.nat.port,long,extended,,,Source NAT port +2.0.0-dev,true,source,source.packets,long,core,,12,Packets sent from the source to the destination. +2.0.0-dev,true,source,source.port,long,core,,,Port of the source. +2.0.0-dev,true,source,source.registered_domain,wildcard,extended,,example.com,"The highest registered source domain, stripped of the subdomain." +2.0.0-dev,true,source,source.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev,true,source,source.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,source,source.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,source,source.user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,source,source.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,source,source.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,source,source.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,source,source.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,source,source.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,source,source.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,source,source.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,source,source.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,source,source.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,source,source.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,span,span.id,keyword,extended,,3ff9a8981b7ccd5a,Unique identifier of the span within the scope of its trace. +2.0.0-dev,true,threat,threat.framework,keyword,extended,,MITRE ATT&CK,Threat classification framework. +2.0.0-dev,true,threat,threat.tactic.id,keyword,extended,array,TA0002,Threat tactic id. +2.0.0-dev,true,threat,threat.tactic.name,keyword,extended,array,Execution,Threat tactic. +2.0.0-dev,true,threat,threat.tactic.reference,keyword,extended,array,https://attack.mitre.org/tactics/TA0002/,Threat tactic URL reference. +2.0.0-dev,true,threat,threat.technique.id,keyword,extended,array,T1059,Threat technique id. +2.0.0-dev,true,threat,threat.technique.name,keyword,extended,array,Command and Scripting Interpreter,Threat technique name. +2.0.0-dev,true,threat,threat.technique.name.text,text,extended,,Command and Scripting Interpreter,Threat technique name. +2.0.0-dev,true,threat,threat.technique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/,Threat technique URL reference. +2.0.0-dev,true,threat,threat.technique.subtechnique.id,keyword,extended,array,T1059.001,Threat subtechnique id. +2.0.0-dev,true,threat,threat.technique.subtechnique.name,keyword,extended,array,PowerShell,Threat subtechnique name. +2.0.0-dev,true,threat,threat.technique.subtechnique.name.text,text,extended,,PowerShell,Threat subtechnique name. +2.0.0-dev,true,threat,threat.technique.subtechnique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/001/,Threat subtechnique URL reference. +2.0.0-dev,true,tls,tls.cipher,keyword,extended,,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,String indicating the cipher used during the current connection. +2.0.0-dev,true,tls,tls.client.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the client. +2.0.0-dev,true,tls,tls.client.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the client. +2.0.0-dev,true,tls,tls.client.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev,true,tls,tls.client.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev,true,tls,tls.client.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev,true,tls,tls.client.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Distinguished name of subject of the issuer of the x.509 certificate presented by the client. +2.0.0-dev,true,tls,tls.client.ja3,keyword,extended,,d4e5b18d6b55c71272893221c96ba240,A hash that identifies clients based on how they perform an SSL/TLS handshake. +2.0.0-dev,true,tls,tls.client.not_after,date,extended,,2021-01-01T00:00:00.000Z,Date/Time indicating when client certificate is no longer considered valid. +2.0.0-dev,true,tls,tls.client.not_before,date,extended,,1970-01-01T00:00:00.000Z,Date/Time indicating when client certificate is first considered valid. +2.0.0-dev,true,tls,tls.client.server_name,keyword,extended,,www.elastic.co,Hostname the client is trying to connect to. Also called the SNI. +2.0.0-dev,true,tls,tls.client.subject,wildcard,extended,,"CN=myclient, OU=Documentation Team, DC=example, DC=com",Distinguished name of subject of the x.509 certificate presented by the client. +2.0.0-dev,true,tls,tls.client.supported_ciphers,keyword,extended,array,"[""TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"", ""TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"", ""...""]",Array of ciphers offered by the client during the client hello. +2.0.0-dev,true,tls,tls.client.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev,true,tls,tls.client.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev,true,tls,tls.client.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev,true,tls,tls.client.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev,true,tls,tls.client.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev,true,tls,tls.client.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev,true,tls,tls.client.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev,true,tls,tls.client.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,tls,tls.client.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev,true,tls,tls.client.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev,true,tls,tls.client.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev,true,tls,tls.client.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev,false,tls,tls.client.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev,true,tls,tls.client.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev,true,tls,tls.client.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev,true,tls,tls.client.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev,true,tls,tls.client.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev,true,tls,tls.client.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev,true,tls,tls.client.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev,true,tls,tls.client.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev,true,tls,tls.client.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev,true,tls,tls.client.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev,true,tls,tls.client.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,tls,tls.client.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev,true,tls,tls.curve,keyword,extended,,secp256r1,"String indicating the curve used for the given cipher, when applicable." +2.0.0-dev,true,tls,tls.established,boolean,extended,,,Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +2.0.0-dev,true,tls,tls.next_protocol,keyword,extended,,http/1.1,String indicating the protocol being tunneled. +2.0.0-dev,true,tls,tls.resumed,boolean,extended,,,Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +2.0.0-dev,true,tls,tls.server.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the server. +2.0.0-dev,true,tls,tls.server.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the server. +2.0.0-dev,true,tls,tls.server.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev,true,tls,tls.server.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev,true,tls,tls.server.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev,true,tls,tls.server.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Subject of the issuer of the x.509 certificate presented by the server. +2.0.0-dev,true,tls,tls.server.ja3s,keyword,extended,,394441ab65754e2207b1e1b457b3641d,A hash that identifies servers based on how they perform an SSL/TLS handshake. +2.0.0-dev,true,tls,tls.server.not_after,date,extended,,2021-01-01T00:00:00.000Z,Timestamp indicating when server certificate is no longer considered valid. +2.0.0-dev,true,tls,tls.server.not_before,date,extended,,1970-01-01T00:00:00.000Z,Timestamp indicating when server certificate is first considered valid. +2.0.0-dev,true,tls,tls.server.subject,wildcard,extended,,"CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com",Subject of the x.509 certificate presented by the server. +2.0.0-dev,true,tls,tls.server.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev,true,tls,tls.server.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev,true,tls,tls.server.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev,true,tls,tls.server.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev,true,tls,tls.server.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev,true,tls,tls.server.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev,true,tls,tls.server.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev,true,tls,tls.server.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,tls,tls.server.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev,true,tls,tls.server.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev,true,tls,tls.server.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev,true,tls,tls.server.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev,false,tls,tls.server.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev,true,tls,tls.server.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev,true,tls,tls.server.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev,true,tls,tls.server.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev,true,tls,tls.server.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev,true,tls,tls.server.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev,true,tls,tls.server.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev,true,tls,tls.server.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev,true,tls,tls.server.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev,true,tls,tls.server.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev,true,tls,tls.server.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev,true,tls,tls.server.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev,true,tls,tls.version,keyword,extended,,1.2,Numeric part of the version parsed from the original string. +2.0.0-dev,true,tls,tls.version_protocol,keyword,extended,,tls,Normalized lowercase protocol name parsed from original string. +2.0.0-dev,true,trace,trace.id,keyword,extended,,4bf92f3577b34da6a3ce929d0e0e4736,Unique identifier of the trace. +2.0.0-dev,true,transaction,transaction.id,keyword,extended,,00f067aa0ba902b7,Unique identifier of the transaction within the scope of its trace. +2.0.0-dev,true,url,url.domain,wildcard,extended,,www.elastic.co,Domain of the url. +2.0.0-dev,true,url,url.extension,keyword,extended,,png,File extension from the original request url. +2.0.0-dev,true,url,url.fragment,keyword,extended,,,Portion of the url after the `#`. +2.0.0-dev,true,url,url.full,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +2.0.0-dev,true,url,url.full.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +2.0.0-dev,true,url,url.original,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +2.0.0-dev,true,url,url.original.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +2.0.0-dev,true,url,url.password,keyword,extended,,,Password of the request. +2.0.0-dev,true,url,url.path,wildcard,extended,,,"Path of the request, such as ""/search""." +2.0.0-dev,true,url,url.port,long,extended,,443,"Port of the request, such as 443." +2.0.0-dev,true,url,url.query,keyword,extended,,,Query string of the request. +2.0.0-dev,true,url,url.registered_domain,wildcard,extended,,example.com,"The highest registered url domain, stripped of the subdomain." +2.0.0-dev,true,url,url.scheme,keyword,extended,,https,Scheme of the url. +2.0.0-dev,true,url,url.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev,true,url,url.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev,true,url,url.username,keyword,extended,,,Username of the request. +2.0.0-dev,true,user,user.changes.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,user,user.changes.email,wildcard,extended,,,User email address. +2.0.0-dev,true,user,user.changes.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.changes.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.changes.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,user,user.changes.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,user,user.changes.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,user,user.changes.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,user,user.changes.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,user,user.changes.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.changes.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.changes.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,user,user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,user,user.effective.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,user,user.effective.email,wildcard,extended,,,User email address. +2.0.0-dev,true,user,user.effective.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.effective.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.effective.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,user,user.effective.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,user,user.effective.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,user,user.effective.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,user,user.effective.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,user,user.effective.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.effective.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.effective.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,user,user.email,wildcard,extended,,,User email address. +2.0.0-dev,true,user,user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,user,user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,user,user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,user,user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,user,user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,user,user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,user,user.target.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev,true,user,user.target.email,wildcard,extended,,,User email address. +2.0.0-dev,true,user,user.target.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.target.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev,true,user,user.target.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev,true,user,user.target.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev,true,user,user.target.group.name,keyword,extended,,,Name of the group. +2.0.0-dev,true,user,user.target.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev,true,user,user.target.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev,true,user,user.target.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.target.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev,true,user,user.target.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev,true,user_agent,user_agent.device.name,keyword,extended,,iPhone,Name of the device. +2.0.0-dev,true,user_agent,user_agent.name,keyword,extended,,Safari,Name of the user agent. +2.0.0-dev,true,user_agent,user_agent.original,wildcard,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +2.0.0-dev,true,user_agent,user_agent.original.text,text,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +2.0.0-dev,true,user_agent,user_agent.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev,true,user_agent,user_agent.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,user_agent,user_agent.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev,true,user_agent,user_agent.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev,true,user_agent,user_agent.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,user_agent,user_agent.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev,true,user_agent,user_agent.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev,true,user_agent,user_agent.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev,true,user_agent,user_agent.version,keyword,extended,,12.0,Version of the user agent. +2.0.0-dev,true,vulnerability,vulnerability.category,keyword,extended,array,"[""Firewall""]",Category of a vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.classification,keyword,extended,,CVSS,Classification of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.description,keyword,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.description.text,text,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.enumeration,keyword,extended,,CVE,Identifier of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.id,keyword,extended,,CVE-2019-00001,ID of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.reference,keyword,extended,,https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111,Reference of the vulnerability. +2.0.0-dev,true,vulnerability,vulnerability.report_id,keyword,extended,,20191018.0001,Scan identification number. +2.0.0-dev,true,vulnerability,vulnerability.scanner.vendor,keyword,extended,,Tenable,Name of the scanner vendor. +2.0.0-dev,true,vulnerability,vulnerability.score.base,float,extended,,5.5,Vulnerability Base score. +2.0.0-dev,true,vulnerability,vulnerability.score.environmental,float,extended,,5.5,Vulnerability Environmental score. +2.0.0-dev,true,vulnerability,vulnerability.score.temporal,float,extended,,,Vulnerability Temporal score. +2.0.0-dev,true,vulnerability,vulnerability.score.version,keyword,extended,,2.0,CVSS version. +2.0.0-dev,true,vulnerability,vulnerability.severity,keyword,extended,,Critical,Severity of the vulnerability. diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml new file mode 100644 index 0000000000..5f27925261 --- /dev/null +++ b/experimental/generated/ecs/ecs_flat.yml @@ -0,0 +1,8956 @@ +'@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when the + event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date +agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source may + provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: wildcard +agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword +agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword +agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword +agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. In + case of Filebeat the agent would always be Filebeat also if two Filebeat instances + are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword +agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword +client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword +client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard +client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long +client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + level: core + name: domain + normalize: [] + short: Client domain. + type: wildcard +client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip +client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword +client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client to + internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip +client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long +client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long +client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long +client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: wildcard +client.subdomain: + dashed_name: client-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: client.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +cloud.account.id: + dashed_name: cloud-account-id + description: 'The cloud account or organization id used to identify different entities + in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + flat_name: cloud.account.id + ignore_above: 1024 + level: extended + name: account.id + normalize: [] + short: The cloud account or organization id. + type: keyword +cloud.account.name: + dashed_name: cloud-account-name + description: 'The cloud account name or alias used to identify different entities + in a multi-tenant environment. + + Examples: AWS account name, Google Cloud ORG display name.' + example: elastic-dev + flat_name: cloud.account.name + ignore_above: 1024 + level: extended + name: account.name + normalize: [] + short: The cloud account name. + type: keyword +cloud.availability_zone: + dashed_name: cloud-availability-zone + description: Availability zone in which this host is running. + example: us-east-1c + flat_name: cloud.availability_zone + ignore_above: 1024 + level: extended + name: availability_zone + normalize: [] + short: Availability zone in which this host is running. + type: keyword +cloud.instance.id: + dashed_name: cloud-instance-id + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + flat_name: cloud.instance.id + ignore_above: 1024 + level: extended + name: instance.id + normalize: [] + short: Instance ID of the host machine. + type: keyword +cloud.instance.name: + dashed_name: cloud-instance-name + description: Instance name of the host machine. + flat_name: cloud.instance.name + ignore_above: 1024 + level: extended + name: instance.name + normalize: [] + short: Instance name of the host machine. + type: keyword +cloud.machine.type: + dashed_name: cloud-machine-type + description: Machine type of the host machine. + example: t2.medium + flat_name: cloud.machine.type + ignore_above: 1024 + level: extended + name: machine.type + normalize: [] + short: Machine type of the host machine. + type: keyword +cloud.project.id: + dashed_name: cloud-project-id + description: 'The cloud project identifier. + + Examples: Google Cloud Project id, Azure Project id.' + example: my-project + flat_name: cloud.project.id + ignore_above: 1024 + level: extended + name: project.id + normalize: [] + short: The cloud project id. + type: keyword +cloud.project.name: + dashed_name: cloud-project-name + description: 'The cloud project name. + + Examples: Google Cloud Project name, Azure Project name.' + example: my project + flat_name: cloud.project.name + ignore_above: 1024 + level: extended + name: project.name + normalize: [] + short: The cloud project name. + type: keyword +cloud.provider: + dashed_name: cloud-provider + description: Name of the cloud provider. Example values are aws, azure, gcp, or + digitalocean. + example: aws + flat_name: cloud.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Name of the cloud provider. + type: keyword +cloud.region: + dashed_name: cloud-region + description: Region in which this host is running. + example: us-east-1 + flat_name: cloud.region + ignore_above: 1024 + level: extended + name: region + normalize: [] + short: Region in which this host is running. + type: keyword +container.id: + dashed_name: container-id + description: Unique container id. + flat_name: container.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique container id. + type: keyword +container.image.name: + dashed_name: container-image-name + description: Name of the image the container was built on. + flat_name: container.image.name + ignore_above: 1024 + level: extended + name: image.name + normalize: [] + short: Name of the image the container was built on. + type: keyword +container.image.tag: + dashed_name: container-image-tag + description: Container image tags. + flat_name: container.image.tag + ignore_above: 1024 + level: extended + name: image.tag + normalize: + - array + short: Container image tags. + type: keyword +container.labels: + dashed_name: container-labels + description: Image labels. + flat_name: container.labels + level: extended + name: labels + normalize: [] + object_type: keyword + short: Image labels. + type: object +container.name: + dashed_name: container-name + description: Container name. + flat_name: container.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Container name. + type: keyword +container.runtime: + dashed_name: container-runtime + description: Runtime managing this container. + example: docker + flat_name: container.runtime + ignore_above: 1024 + level: extended + name: runtime + normalize: [] + short: Runtime managing this container. + type: keyword +destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword +destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard +destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long +destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + level: core + name: domain + normalize: [] + short: Destination domain. + type: wildcard +destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip +destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword +destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip +destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long +destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long +destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long +destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: wildcard +destination.subdomain: + dashed_name: destination-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: destination.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +dll.code_signature.exists: + dashed_name: dll-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: dll.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean +dll.code_signature.status: + dashed_name: dll-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: dll.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword +dll.code_signature.subject_name: + dashed_name: dll-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: dll.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword +dll.code_signature.trusted: + dashed_name: dll-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this field + should only be populated by tools that actively check the status.' + example: 'true' + flat_name: dll.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean +dll.code_signature.valid: + dashed_name: dll-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against the + binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: dll.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean +dll.hash.md5: + dashed_name: dll-hash-md5 + description: MD5 hash. + flat_name: dll.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword +dll.hash.sha1: + dashed_name: dll-hash-sha1 + description: SHA1 hash. + flat_name: dll.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword +dll.hash.sha256: + dashed_name: dll-hash-sha256 + description: SHA256 hash. + flat_name: dll.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword +dll.hash.sha512: + dashed_name: dll-hash-sha512 + description: SHA512 hash. + flat_name: dll.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword +dll.name: + dashed_name: dll-name + description: 'Name of the library. + + This generally maps to the name of the file on disk.' + example: kernel32.dll + flat_name: dll.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the library. + type: keyword +dll.path: + dashed_name: dll-path + description: Full file path of the library. + example: C:\Windows\System32\kernel32.dll + flat_name: dll.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Full file path of the library. + type: keyword +dll.pe.architecture: + dashed_name: dll-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: dll.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword +dll.pe.company: + dashed_name: dll-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: dll.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword +dll.pe.description: + dashed_name: dll-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: dll.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword +dll.pe.file_version: + dashed_name: dll-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: dll.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword +dll.pe.imphash: + dashed_name: dll-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash -- + can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: dll.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword +dll.pe.original_file_name: + dashed_name: dll-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: dll.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard +dll.pe.product: + dashed_name: dll-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: dll.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword +dns.answers.class: + dashed_name: dns-answers-class + description: The class of DNS data contained in this resource record. + example: IN + flat_name: dns.answers.class + ignore_above: 1024 + level: extended + name: answers.class + normalize: [] + short: The class of DNS data contained in this resource record. + type: keyword +dns.answers.data: + dashed_name: dns-answers-data + description: 'The data describing the resource. + + The meaning of this data depends on the type and class of the resource record.' + example: 10.10.10.10 + flat_name: dns.answers.data + level: extended + name: answers.data + normalize: [] + short: The data describing the resource. + type: wildcard +dns.answers.name: + dashed_name: dns-answers-name + description: 'The domain name to which this resource record pertains. + + If a chain of CNAME is being resolved, each answer''s `name` should be the one + that corresponds with the answer''s `data`. It should not simply be the original + `question.name` repeated.' + example: www.example.com + flat_name: dns.answers.name + ignore_above: 1024 + level: extended + name: answers.name + normalize: [] + short: The domain name to which this resource record pertains. + type: keyword +dns.answers.ttl: + dashed_name: dns-answers-ttl + description: The time interval in seconds that this resource record may be cached + before it should be discarded. Zero values mean that the data should not be cached. + example: 180 + flat_name: dns.answers.ttl + level: extended + name: answers.ttl + normalize: [] + short: The time interval in seconds that this resource record may be cached before + it should be discarded. + type: long +dns.answers.type: + dashed_name: dns-answers-type + description: The type of data contained in this resource record. + example: CNAME + flat_name: dns.answers.type + ignore_above: 1024 + level: extended + name: answers.type + normalize: [] + short: The type of data contained in this resource record. + type: keyword +dns.header_flags: + dashed_name: dns-header-flags + description: 'Array of 2 letter DNS header flags. + + Expected values are: AA, TC, RD, RA, AD, CD, DO.' + example: '["RD", "RA"]' + flat_name: dns.header_flags + ignore_above: 1024 + level: extended + name: header_flags + normalize: + - array + short: Array of DNS header flags. + type: keyword +dns.id: + dashed_name: dns-id + description: The DNS packet identifier assigned by the program that generated the + query. The identifier is copied to the response. + example: 62111 + flat_name: dns.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: The DNS packet identifier assigned by the program that generated the query. + The identifier is copied to the response. + type: keyword +dns.op_code: + dashed_name: dns-op-code + description: The DNS operation code that specifies the kind of query in the message. + This value is set by the originator of a query and copied into the response. + example: QUERY + flat_name: dns.op_code + ignore_above: 1024 + level: extended + name: op_code + normalize: [] + short: The DNS operation code that specifies the kind of query in the message. + type: keyword +dns.question.class: + dashed_name: dns-question-class + description: The class of records being queried. + example: IN + flat_name: dns.question.class + ignore_above: 1024 + level: extended + name: question.class + normalize: [] + short: The class of records being queried. + type: keyword +dns.question.name: + dashed_name: dns-question-name + description: 'The name being queried. + + If the name field contains non-printable characters (below 32 or above 126), those + characters should be represented as escaped base 10 integers (\DDD). Back slashes + and quotes should be escaped. Tabs, carriage returns, and line feeds should be + converted to \t, \r, and \n respectively.' + example: www.example.com + flat_name: dns.question.name + level: extended + name: question.name + normalize: [] + short: The name being queried. + type: wildcard +dns.question.registered_domain: + dashed_name: dns-question-registered-domain + description: 'The highest registered domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: dns.question.registered_domain + ignore_above: 1024 + level: extended + name: question.registered_domain + normalize: [] + short: The highest registered domain, stripped of the subdomain. + type: keyword +dns.question.subdomain: + dashed_name: dns-question-subdomain + description: 'The subdomain is all of the labels under the registered_domain. + + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: www + flat_name: dns.question.subdomain + ignore_above: 1024 + level: extended + name: question.subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +dns.question.top_level_domain: + dashed_name: dns-question-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: dns.question.top_level_domain + ignore_above: 1024 + level: extended + name: question.top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +dns.question.type: + dashed_name: dns-question-type + description: The type of record being queried. + example: AAAA + flat_name: dns.question.type + ignore_above: 1024 + level: extended + name: question.type + normalize: [] + short: The type of record being queried. + type: keyword +dns.resolved_ip: + dashed_name: dns-resolved-ip + description: 'Array containing all IPs seen in `answers.data`. + + The `answers` array can be difficult to use, because of the variety of data formats + it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` + makes it possible to index them as IP addresses, and makes them easier to visualize + and query for.' + example: '["10.10.10.10", "10.10.10.11"]' + flat_name: dns.resolved_ip + level: extended + name: resolved_ip + normalize: + - array + short: Array containing all IPs seen in answers.data + type: ip +dns.response_code: + dashed_name: dns-response-code + description: The DNS response code. + example: NOERROR + flat_name: dns.response_code + ignore_above: 1024 + level: extended + name: response_code + normalize: [] + short: The DNS response code. + type: keyword +dns.type: + dashed_name: dns-type + description: 'The type of DNS event captured, query or answer. + + If your source of DNS events only gives you DNS queries, you should only create + dns events of type `dns.type:query`. + + If your source of DNS events gives you answers as well, you should create one + event per query (optionally as soon as the query is seen). And a second event + containing all query details as well as an array of answers.' + example: answer + flat_name: dns.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: The type of DNS event captured, query or answer. + type: keyword +ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required field + and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version of the + events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword +error.code: + dashed_name: error-code + description: Error code describing the error. + flat_name: error.code + ignore_above: 1024 + level: core + name: code + normalize: [] + short: Error code describing the error. + type: keyword +error.id: + dashed_name: error-id + description: Unique identifier for the error. + flat_name: error.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier for the error. + type: keyword +error.message: + dashed_name: error-message + description: Error message. + flat_name: error.message + level: core + name: message + normalize: [] + norms: false + short: Error message. + type: text +error.stack_trace: + dashed_name: error-stack-trace + description: The stack trace of this error in plain text. + flat_name: error.stack_trace + index: true + level: extended + multi_fields: + - flat_name: error.stack_trace.text + name: text + norms: false + type: text + name: stack_trace + normalize: [] + short: The stack trace of this error in plain text. + type: wildcard +error.type: + dashed_name: error-type + description: The type of the error, for example the class name of the exception. + example: java.lang.NullPointerException + flat_name: error.type + level: extended + name: type + normalize: [] + short: The type of the error, for example the class name of the exception. + type: wildcard +event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is normally + defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword +event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh logs. + Visualize and analyze events in this category to look for failed logins, and + other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: 'Events in the configuration category have to deal with creating, + modifying, or deleting the settings or parameters of an application, process, + or system. + + Example sources include security policy change logs, configuration auditing + logging, and system integrity monitoring.' + expected_event_types: + - access + - change + - creation + - deletion + - info + name: configuration + - description: The database category denotes events and metrics relating to a data + storage and retrieval system. Note that use of this category is not limited + to relational database systems. Examples include event logs from MS SQL, MySQL, + Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database + activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system device + drivers and similar software entities such as Windows drivers, kernel extensions, + kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or has + existed on a filesystem. Use this category of events to visualize and analyze + the creation, access, and deletions of files. Events in this category can come + from both host-based and network-based sources. An example source of a network-based + detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such as host + inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can also + be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is not + meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, groups, + and administration. Use this category to visualize and analyze IAM-related logs + and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze intrusion + detection alerts from systems such as Snort, Suricata, and Palo Alto threat + detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems + such as Suricata, or other sources of malware-related events such as Palo Alto + Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection lifecycle, + network traffic, and essentially any event that includes an IP address. Many + events containing decoded network protocol transactions fit into this category. + Use events in this category to visualize or analyze counts of network ports, + protocols, addresses, geolocation information, etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, or + to determine host vulnerability in the absence of vulnerability scan data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a dashboard + of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: + events from network observers such as Zeek http log may also be included in + this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the second + level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process activity. + This field is closely related to `event.type`, which is used as a subcategory. + + This field is an array. This will allow proper categorization of some events that + fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword +event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is the + Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword +event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first read + by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain the + time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, and + the time when your agent first processed it. This can be used to monitor your + agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date +event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes from. + + It''s recommended but not required to start the dataset name with the module name, + followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword +event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference between + the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long +event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity was + last observed. + type: date +event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword +event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword +event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date +event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, intrusion + detection systems, endpoint detection and response systems, and so on.' + name: alert + - description: This value is the most general and most common value for this field. + It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once every + few seconds, or once a minute, but can also be used to describe ad-hoc numeric + metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state of a + host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard (compliant, + not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the more + general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once every + few seconds, once a minute, once an hour, or once a day, but can also be used + to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful happened + and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the highest + level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the event + contains, without being specific to the contents of the event. For example, values + of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, it + may also help understand whether the data coming in at a regular interval or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword +event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain the + name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword +event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: wildcard +event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common example + is `event.category:file AND event.type:access AND event.outcome:failure` to + indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which the + result is unknown from the perspective of the event producer. For example, if + the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome doesn't + make logical sense for the event. In such cases `event.outcome` should not be + populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the lowest + level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a failure + from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each event + may populate different values of `event.outcome`, according to their perspective. + + Also note that in the case of a compound event (a single event that contains multiple + logical events), this field should be populated with the value that best captures + the overall success or failure from the perspective of the event producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the hierarchy. + type: keyword +event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention the + source of an event. It can be the name of the software that generated the event + (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword +event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` which + denied the request may also populate `event.reason` with the reason why (e.g. + `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword +event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword +event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). Use + your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your system's + original value here. + type: float +event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of 0 to + 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float +event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the exact + ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long +event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and use + cases. It''s up to the implementer to make sure severities are consistent across + events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is + meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long +event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the activity + was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date +event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does not + include timezone information already (e.g. default Syslog timestamps). It''s optional + otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated + (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword +event.type: + allowed_values: + - description: The access event type is used for the subset of events within a category + that indicate that something was accessed. Common examples include `event.category:database + AND event.type:access`, or `event.category:file AND event.type:access`. Note + for file access, both directory listings and file opens should be included in + this subcategory. You can further distinguish access operations using the ECS + `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within a category + that are related to admin objects. For example, administrative changes within + an IAM framework that do not specifically affect a user or group (e.g., adding + new applications to a federation solution or connecting discrete forests in + Active Directory) would fall into this subcategory. Common example: `event.category:iam + AND event.type:change AND event.type:admin`. You can further distinguish admin + operations using the ECS `event.action` field.' + name: admin + - description: The allowed event type is used for the subset of events within a + category that indicate that something was allowed. Common examples include `event.category:network + AND event.type:connection AND event.type:allowed` (to indicate a network firewall + event for which the firewall disposition was to allow the connection to complete) + and `event.category:intrusion_detection AND event.type:allowed` (to indicate + a network intrusion prevention system event for which the IPS disposition was + to allow the connection to complete). You can further distinguish allowed operations + using the ECS `event.action` field, populating with values of your choosing, + such as "allow", "detect", or "pass". + name: allowed + - description: The change event type is used for the subset of events within a category + that indicate that something has changed. If semantics best describe an event + as modified, then include them in this subcategory. Common examples include + `event.category:process AND event.type:change`, and `event.category:file AND + event.type:change`. You can further distinguish change operations using the + ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used for + the subset of network traffic that includes sufficient information for the event + to be included in flow or connection analysis. Events in this subcategory will + contain at least source and destination IP addresses, source and destination + TCP/UDP ports, and will usually contain counts of bytes and/or packets transferred. + Events in this subcategory may contain unidirectional or bidirectional information, + including summary information. Use this subcategory to visualize and analyze + network connections. Flow analysis, including Netflow, IPFIX, and other flow-related + events fit in this subcategory. Note that firewall events from many Next-Generation + Firewall (NGFW) devices will also fit into this subcategory. A common filter + for flow/connection information would be `event.category:network AND event.type:connection + AND event.type:end` (to view or analyze all completed network connections, ignoring + mid-flow reports). You can further distinguish connection events using the ECS + `event.action` field, populating with values of your choosing, such as "timeout", + or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is `event.category:file + AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within a + category that indicate that something was deleted. A common example is `event.category:file + AND event.type:deletion` to indicate that a file has been deleted. + name: deletion + - description: The denied event type is used for the subset of events within a category + that indicate that something was denied. Common examples include `event.category:network + AND event.type:denied` (to indicate a network firewall event for which the firewall + disposition was to deny the connection) and `event.category:intrusion_detection + AND event.type:denied` (to indicate a network intrusion prevention system event + for which the IPS disposition was to deny the connection to complete). You can + further distinguish denied operations using the ECS `event.action` field, populating + with values of your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a category + that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within a category + that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they should + use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within a category + that are related to group objects. Common example: `event.category:iam AND event.type:creation + AND event.type:group`. You can further distinguish group operations using the + ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a category + that indicate that they are purely informational, and don't report a state change, + or any type of action. For example, an initial run of a file integrity monitoring + system (FIM), where an agent reports all files under management, would fall + into the "info" subcategory. Similarly, an event containing a dump of all currently + running processes (as opposed to reporting that a process started/ended) would + fall into the "info" subcategory. An additional common examples is `event.category:intrusion_detection + AND event.type:info`. + name: info + - description: The installation event type is used for the subset of events within + a category that indicate that something was installed. A common example is `event.category:package` + AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within a + category that indicate that they contain protocol details or analysis, beyond + simply identifying the protocol. Generally, network events that contain specific + protocol details will fall into this subcategory. A common example is `event.category:network + AND event.type:protocol AND event.type:connection AND event.type:end` (to indicate + that the event is a network connection event sent at the end of a connection + that also includes a protocol detail breakdown). Note that events that only + indicate the name or id of the protocol should not use the protocol value. Further + note that when the protocol subcategory is used, the identified protocol is + populated in the ECS `network.protocol` field. + name: protocol + - description: The start event type is used for the subset of events within a category + that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within a category + that are related to user objects. Common example: `event.category:iam AND event.type:deletion + AND event.type:user`. You can further distinguish user operations using the + ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the third + level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along with + the `event.category` field values, enables filtering events down to a level appropriate + for single visualization. + + This field is an array. This will allow proper categorization of some events that + fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword +event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of this + event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword +file.accessed: + dashed_name: file-accessed + description: 'Last time the file was accessed. + + Note that not all filesystems keep track of access time.' + flat_name: file.accessed + level: extended + name: accessed + normalize: [] + short: Last time the file was accessed. + type: date +file.attributes: + dashed_name: file-attributes + description: 'Array of file attributes. + + Attributes names will vary by platform. Here''s a non-exhaustive list of values + that are expected in this field: archive, compressed, directory, encrypted, execute, + hidden, read, readonly, system, write.' + example: '["readonly", "system"]' + flat_name: file.attributes + ignore_above: 1024 + level: extended + name: attributes + normalize: + - array + short: Array of file attributes. + type: keyword +file.code_signature.exists: + dashed_name: file-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: file.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean +file.code_signature.status: + dashed_name: file-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: file.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword +file.code_signature.subject_name: + dashed_name: file-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: file.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword +file.code_signature.trusted: + dashed_name: file-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this field + should only be populated by tools that actively check the status.' + example: 'true' + flat_name: file.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean +file.code_signature.valid: + dashed_name: file-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against the + binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: file.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean +file.created: + dashed_name: file-created + description: 'File creation time. + + Note that not all filesystems store the creation time.' + flat_name: file.created + level: extended + name: created + normalize: [] + short: File creation time. + type: date +file.ctime: + dashed_name: file-ctime + description: 'Last time the file attributes or metadata changed. + + Note that changes to the file content will update `mtime`. This implies `ctime` + will be adjusted at the same time, since `mtime` is an attribute of the file.' + flat_name: file.ctime + level: extended + name: ctime + normalize: [] + short: Last time the file attributes or metadata changed. + type: date +file.device: + dashed_name: file-device + description: Device that is the source of the file. + example: sda + flat_name: file.device + ignore_above: 1024 + level: extended + name: device + normalize: [] + short: Device that is the source of the file. + type: keyword +file.directory: + dashed_name: file-directory + description: Directory where the file is located. It should include the drive letter, + when appropriate. + example: /home/alice + flat_name: file.directory + level: extended + name: directory + normalize: [] + short: Directory where the file is located. + type: wildcard +file.drive_letter: + dashed_name: file-drive-letter + description: 'Drive letter where the file is located. This field is only relevant + on Windows. + + The value should be uppercase, and not include the colon.' + example: C + flat_name: file.drive_letter + ignore_above: 1 + level: extended + name: drive_letter + normalize: [] + short: Drive letter where the file is located. + type: keyword +file.extension: + dashed_name: file-extension + description: File extension. + example: png + flat_name: file.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension. + type: keyword +file.gid: + dashed_name: file-gid + description: Primary group ID (GID) of the file. + example: '1001' + flat_name: file.gid + ignore_above: 1024 + level: extended + name: gid + normalize: [] + short: Primary group ID (GID) of the file. + type: keyword +file.group: + dashed_name: file-group + description: Primary group name of the file. + example: alice + flat_name: file.group + ignore_above: 1024 + level: extended + name: group + normalize: [] + short: Primary group name of the file. + type: keyword +file.hash.md5: + dashed_name: file-hash-md5 + description: MD5 hash. + flat_name: file.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword +file.hash.sha1: + dashed_name: file-hash-sha1 + description: SHA1 hash. + flat_name: file.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword +file.hash.sha256: + dashed_name: file-hash-sha256 + description: SHA256 hash. + flat_name: file.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword +file.hash.sha512: + dashed_name: file-hash-sha512 + description: SHA512 hash. + flat_name: file.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword +file.inode: + dashed_name: file-inode + description: Inode representing the file in the filesystem. + example: '256383' + flat_name: file.inode + ignore_above: 1024 + level: extended + name: inode + normalize: [] + short: Inode representing the file in the filesystem. + type: keyword +file.mime_type: + dashed_name: file-mime-type + description: MIME type should identify the format of the file or stream of bytes + using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA official + types], where possible. When more than one type is applicable, the most specific + type should be used. + flat_name: file.mime_type + ignore_above: 1024 + level: extended + name: mime_type + normalize: [] + short: Media type of file, document, or arrangement of bytes. + type: keyword +file.mode: + dashed_name: file-mode + description: Mode of the file in octal representation. + example: '0640' + flat_name: file.mode + ignore_above: 1024 + level: extended + name: mode + normalize: [] + short: Mode of the file in octal representation. + type: keyword +file.mtime: + dashed_name: file-mtime + description: Last time the file content was modified. + flat_name: file.mtime + level: extended + name: mtime + normalize: [] + short: Last time the file content was modified. + type: date +file.name: + dashed_name: file-name + description: Name of the file including the extension, without the directory. + example: example.png + flat_name: file.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the file including the extension, without the directory. + type: keyword +file.owner: + dashed_name: file-owner + description: File owner's username. + example: alice + flat_name: file.owner + ignore_above: 1024 + level: extended + name: owner + normalize: [] + short: File owner's username. + type: keyword +file.path: + dashed_name: file-path + description: Full path to the file, including the file name. It should include the + drive letter, when appropriate. + example: /home/alice/example.png + flat_name: file.path + level: extended + multi_fields: + - flat_name: file.path.text + name: text + norms: false + type: text + name: path + normalize: [] + short: Full path to the file, including the file name. + type: wildcard +file.pe.architecture: + dashed_name: file-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: file.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword +file.pe.company: + dashed_name: file-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: file.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword +file.pe.description: + dashed_name: file-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: file.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword +file.pe.file_version: + dashed_name: file-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: file.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword +file.pe.imphash: + dashed_name: file-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash -- + can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: file.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword +file.pe.original_file_name: + dashed_name: file-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: file.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard +file.pe.product: + dashed_name: file-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: file.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword +file.size: + dashed_name: file-size + description: 'File size in bytes. + + Only relevant when `file.type` is "file".' + example: 16384 + flat_name: file.size + level: extended + name: size + normalize: [] + short: File size in bytes. + type: long +file.target_path: + dashed_name: file-target-path + description: Target path for symlinks. + flat_name: file.target_path + level: extended + multi_fields: + - flat_name: file.target_path.text + name: text + norms: false + type: text + name: target_path + normalize: [] + short: Target path for symlinks. + type: wildcard +file.type: + dashed_name: file-type + description: File type (file, dir, or symlink). + example: file + flat_name: file.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: File type (file, dir, or symlink). + type: keyword +file.uid: + dashed_name: file-uid + description: The user ID (UID) or security identifier (SID) of the file owner. + example: '1001' + flat_name: file.uid + ignore_above: 1024 + level: extended + name: uid + normalize: [] + short: The user ID (UID) or security identifier (SID) of the file owner. + type: keyword +file.x509.alternative_names: + dashed_name: file-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names (and + wildcards), and email addresses. + example: '*.elastic.co' + flat_name: file.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword +file.x509.issuer.common_name: + dashed_name: file-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: file.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword +file.x509.issuer.country: + dashed_name: file-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: file.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword +file.x509.issuer.distinguished_name: + dashed_name: file-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: file.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard +file.x509.issuer.locality: + dashed_name: file-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: file.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +file.x509.issuer.organization: + dashed_name: file-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: file.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword +file.x509.issuer.organizational_unit: + dashed_name: file-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: file.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword +file.x509.issuer.state_or_province: + dashed_name: file-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: file.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +file.x509.not_after: + dashed_name: file-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: file.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date +file.x509.not_before: + dashed_name: file-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: file.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date +file.x509.public_key_algorithm: + dashed_name: file-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: file.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword +file.x509.public_key_curve: + dashed_name: file-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This is + algorithm specific. + example: nistp521 + flat_name: file.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword +file.x509.public_key_exponent: + dashed_name: file-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: file.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long +file.x509.public_key_size: + dashed_name: file-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: file.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long +file.x509.serial_number: + dashed_name: file-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: file.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword +file.x509.signature_algorithm: + dashed_name: file-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: file.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword +file.x509.subject.common_name: + dashed_name: file-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: file.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword +file.x509.subject.country: + dashed_name: file-x509-subject-country + description: List of country (C) code + example: US + flat_name: file.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword +file.x509.subject.distinguished_name: + dashed_name: file-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: file.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard +file.x509.subject.locality: + dashed_name: file-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: file.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +file.x509.subject.organization: + dashed_name: file-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: file.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword +file.x509.subject.organizational_unit: + dashed_name: file-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: file.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword +file.x509.subject.state_or_province: + dashed_name: file-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: file.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +file.x509.version_number: + dashed_name: file-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: file.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword +group.domain: + dashed_name: group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the group is a member of. + type: keyword +group.id: + dashed_name: group-id + description: Unique identifier for the group on the system/platform. + flat_name: group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Unique identifier for the group on the system/platform. + type: keyword +group.name: + dashed_name: group-name + description: Name of the group. + flat_name: group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the group. + type: keyword +host.architecture: + dashed_name: host-architecture + description: Operating system architecture. + example: x86_64 + flat_name: host.architecture + ignore_above: 1024 + level: core + name: architecture + normalize: [] + short: Operating system architecture. + type: keyword +host.domain: + dashed_name: host-domain + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain or NetBIOS + domain name. For Linux this could be the domain of the host''s LDAP provider.' + example: CONTOSO + flat_name: host.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the group is a member of. + type: keyword +host.geo.city_name: + dashed_name: host-geo-city-name + description: City name. + example: Montreal + flat_name: host.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +host.geo.continent_name: + dashed_name: host-geo-continent-name + description: Name of the continent. + example: North America + flat_name: host.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +host.geo.country_iso_code: + dashed_name: host-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: host.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +host.geo.country_name: + dashed_name: host-geo-country-name + description: Country name. + example: Canada + flat_name: host.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +host.geo.location: + dashed_name: host-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: host.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +host.geo.name: + dashed_name: host-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: host.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +host.geo.region_iso_code: + dashed_name: host-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: host.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +host.geo.region_name: + dashed_name: host-geo-region-name + description: Region name. + example: Quebec + flat_name: host.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +host.hostname: + dashed_name: host-hostname + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + flat_name: host.hostname + level: core + name: hostname + normalize: [] + short: Hostname of the host. + type: wildcard +host.id: + dashed_name: host-id + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + flat_name: host.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique host id. + type: keyword +host.ip: + dashed_name: host-ip + description: Host ip addresses. + flat_name: host.ip + level: core + name: ip + normalize: + - array + short: Host ip addresses. + type: ip +host.mac: + dashed_name: host-mac + description: Host mac addresses. + flat_name: host.mac + ignore_above: 1024 + level: core + name: mac + normalize: + - array + short: Host mac addresses. + type: keyword +host.name: + dashed_name: host-name + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified domain + name, or a name specified by the user. The sender decides which value to use.' + flat_name: host.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the host. + type: keyword +host.os.family: + dashed_name: host-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: host.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword +host.os.full: + dashed_name: host-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: host.os.full + level: extended + multi_fields: + - flat_name: host.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard +host.os.kernel: + dashed_name: host-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: host.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword +host.os.name: + dashed_name: host-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: host.os.name + level: extended + multi_fields: + - flat_name: host.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard +host.os.platform: + dashed_name: host-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: host.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword +host.os.version: + dashed_name: host-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: host.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword +host.type: + dashed_name: host-type + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, this + could be the container, for example, or other information meaningful in your environment.' + flat_name: host.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of host. + type: keyword +host.uptime: + dashed_name: host-uptime + description: Seconds the host has been up. + example: 1325 + flat_name: host.uptime + level: extended + name: uptime + normalize: [] + short: Seconds the host has been up. + type: long +host.user.domain: + dashed_name: host-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: host.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +host.user.email: + dashed_name: host-user-email + description: User email address. + flat_name: host.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +host.user.full_name: + dashed_name: host-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: host.user.full_name + level: extended + multi_fields: + - flat_name: host.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +host.user.group.domain: + dashed_name: host-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: host.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +host.user.group.id: + dashed_name: host-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: host.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +host.user.group.name: + dashed_name: host-user-group-name + description: Name of the group. + flat_name: host.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +host.user.hash: + dashed_name: host-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: host.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +host.user.id: + dashed_name: host-user-id + description: Unique identifier of the user. + flat_name: host.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +host.user.name: + dashed_name: host-user-name + description: Short name or login of the user. + example: albert + flat_name: host.user.name + level: core + multi_fields: + - flat_name: host.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +host.user.roles: + dashed_name: host-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: host.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long +http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: wildcard +http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long +http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the method + may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword +http.request.mime_type: + dashed_name: http-request-mime-type + description: 'Mime type of the body of the request. + + This value must only be populated based on the content of the request body, not + on the `Content-Type` header. Comparing the mime type of a request with the request''s + Content-Type header can be helpful in detecting threats or misconfigured clients.' + example: image/gif + flat_name: http.request.mime_type + ignore_above: 1024 + level: extended + name: request.mime_type + normalize: [] + short: Mime type of the body of the request. + type: keyword +http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: wildcard +http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long +http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: wildcard +http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long +http.response.mime_type: + dashed_name: http-response-mime-type + description: 'Mime type of the body of the response. + + This value must only be populated based on the content of the response body, not + on the `Content-Type` header. Comparing the mime type of a response with the response''s + Content-Type header can be helpful in detecting misconfigured servers.' + example: image/gif + flat_name: http.response.mime_type + ignore_above: 1024 + level: extended + name: response.mime_type + normalize: [] + short: Mime type of the body of the response. + type: keyword +http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long +http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword +labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object +log.file.path: + dashed_name: log-file-path + description: 'Full path to the log file this event came from, including the file + name. It should include the drive letter, when appropriate. + + If the event wasn''t read from a log file, do not populate this field.' + example: /var/log/fun-times.log + flat_name: log.file.path + level: extended + name: file.path + normalize: [] + short: Full path to the log file this event came from. + type: wildcard +log.level: + dashed_name: log-level + description: 'Original log level of the log event. + + If the source of the event provides a log level or textual severity, this is the + one that goes in `log.level`. If your source doesn''t specify one, you may put + your event transport''s severity here (e.g. Syslog severity). + + Some examples are `warn`, `err`, `i`, `informational`.' + example: error + flat_name: log.level + ignore_above: 1024 + level: core + name: level + normalize: [] + short: Log level of the log event. + type: keyword +log.logger: + dashed_name: log-logger + description: The name of the logger inside an application. This is usually the name + of the class which initialized the logger, or can be a custom name. + example: org.elasticsearch.bootstrap.Bootstrap + flat_name: log.logger + level: core + name: logger + normalize: [] + short: Name of the logger. + type: wildcard +log.origin.file.line: + dashed_name: log-origin-file-line + description: The line number of the file containing the source code which originated + the log event. + example: 42 + flat_name: log.origin.file.line + level: extended + name: origin.file.line + normalize: [] + short: The line number of the file which originated the log event. + type: integer +log.origin.file.name: + dashed_name: log-origin-file-name + description: 'The name of the file containing the source code which originated the + log event. + + Note that this field is not meant to capture the log file. The correct field to + capture the log file is `log.file.path`.' + example: Bootstrap.java + flat_name: log.origin.file.name + ignore_above: 1024 + level: extended + name: origin.file.name + normalize: [] + short: The code file which originated the log event. + type: keyword +log.origin.function: + dashed_name: log-origin-function + description: The name of the function or method which originated the log event. + example: init + flat_name: log.origin.function + ignore_above: 1024 + level: extended + name: origin.function + normalize: [] + short: The function which originated the log event. + type: keyword +log.original: + dashed_name: log-original + description: 'This is the original log message and contains the full log message + before splitting it up in multiple parts. + + In contrast to the `message` field which can contain an extracted part of the + log message, this field contains the original, full log message. It can have already + some modifications applied like encoding or new lines removed to clean up the + log message. + + This field is not indexed and doc_values are disabled so it can''t be queried + but the value can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 localhost My log + flat_name: log.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Original log message with light interpretation only (encoding, newlines). + type: keyword +log.syslog: + dashed_name: log-syslog + description: The Syslog metadata of the event, if the event was transmitted via + Syslog. Please see RFCs 5424 or 3164. + flat_name: log.syslog + level: extended + name: syslog + normalize: [] + short: Syslog metadata + type: object +log.syslog.facility.code: + dashed_name: log-syslog-facility-code + description: 'The Syslog numeric facility of the log event, if available. + + According to RFCs 5424 and 3164, this value should be an integer between 0 and + 23.' + example: 23 + flat_name: log.syslog.facility.code + format: string + level: extended + name: syslog.facility.code + normalize: [] + short: Syslog numeric facility of the event. + type: long +log.syslog.facility.name: + dashed_name: log-syslog-facility-name + description: The Syslog text-based facility of the log event, if available. + example: local7 + flat_name: log.syslog.facility.name + ignore_above: 1024 + level: extended + name: syslog.facility.name + normalize: [] + short: Syslog text-based facility of the event. + type: keyword +log.syslog.priority: + dashed_name: log-syslog-priority + description: 'Syslog numeric priority of the event, if available. + + According to RFCs 5424 and 3164, the priority is 8 * facility + severity. This + number is therefore expected to contain a value between 0 and 191.' + example: 135 + flat_name: log.syslog.priority + format: string + level: extended + name: syslog.priority + normalize: [] + short: Syslog priority of the event. + type: long +log.syslog.severity.code: + dashed_name: log-syslog-severity-code + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different numeric severity + value (e.g. firewall, IDS), your source''s numeric severity should go to `event.severity`. + If the event source does not specify a distinct severity, you can optionally copy + the Syslog severity to `event.severity`.' + example: 3 + flat_name: log.syslog.severity.code + level: extended + name: syslog.severity.code + normalize: [] + short: Syslog numeric severity of the event. + type: long +log.syslog.severity.name: + dashed_name: log-syslog-severity-name + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different severity value + (e.g. firewall, IDS), your source''s text severity should go to `log.level`. If + the event source does not specify a distinct severity, you can optionally copy + the Syslog severity to `log.level`.' + example: Error + flat_name: log.syslog.severity.name + ignore_above: 1024 + level: extended + name: syslog.severity.name + normalize: [] + short: Syslog text-based severity of the event. + type: keyword +message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text +network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, icq, + facebook, twitter. This would be used in situations where the vendor or service + can be decoded such as from the source/dest IP owners, ports, or wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword +network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long +network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the protocol + used in a communication. This is a tool-agnostic standard to identify flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword +network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n * ingress\n\ + \ * egress\n * inbound\n * outbound\n * internal\n * external\n * unknown\n\ + \nWhen mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view, using the values \"ingress\" or \"egress\".\n\ + When mapping events from a network or perimeter-based monitoring context, populate\ + \ this field from the point of view of the network perimeter, using the values\ + \ \"inbound\", \"outbound\", \"internal\" or \"external\".\nNote that \"internal\"\ + \ is not crossing perimeter boundaries, and is meant to describe communication\ + \ between two hosts within the perimeter. Note also that \"external\" is meant\ + \ to describe traffic between two hosts that are external to the perimeter. This\ + \ could for example be useful for ISPs or VPN service providers." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword +network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip +network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword +network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields to + describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields + include vlan.id and vlan.name. Inner vlan fields are typically used when sending + traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object +network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword +network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` is + their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long +network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword +network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name of + the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword +network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, + etc + type: keyword +network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +observer.egress: + dashed_name: observer-egress + description: Observer.egress holds information like interface number and name, vlan, + and zone information to classify egress traffic. Single armed monitoring such + as a network sensor on a span port should only use observer.ingress to categorize + traffic. + flat_name: observer.egress + level: extended + name: egress + normalize: [] + short: Object field for egress information + type: object +observer.egress.interface.alias: + dashed_name: observer-egress-interface-alias + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + flat_name: observer.egress.interface.alias + ignore_above: 1024 + level: extended + name: alias + normalize: [] + original_fieldset: interface + short: Interface alias + type: keyword +observer.egress.interface.id: + dashed_name: observer-egress-interface-id + description: Interface ID as reported by an observer (typically SNMP interface ID). + example: 10 + flat_name: observer.egress.interface.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: interface + short: Interface ID + type: keyword +observer.egress.interface.name: + dashed_name: observer-egress-interface-name + description: Interface name as reported by the system. + example: eth0 + flat_name: observer.egress.interface.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: interface + short: Interface name + type: keyword +observer.egress.vlan.id: + dashed_name: observer-egress-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: observer.egress.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +observer.egress.vlan.name: + dashed_name: observer-egress-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: observer.egress.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +observer.egress.zone: + dashed_name: observer-egress-zone + description: Network zone of outbound traffic as reported by the observer to categorize + the destination area of egress traffic, e.g. Internal, External, DMZ, HR, Legal, + etc. + example: Public_Internet + flat_name: observer.egress.zone + ignore_above: 1024 + level: extended + name: egress.zone + normalize: [] + short: Observer Egress zone + type: keyword +observer.geo.city_name: + dashed_name: observer-geo-city-name + description: City name. + example: Montreal + flat_name: observer.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +observer.geo.continent_name: + dashed_name: observer-geo-continent-name + description: Name of the continent. + example: North America + flat_name: observer.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +observer.geo.country_iso_code: + dashed_name: observer-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: observer.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +observer.geo.country_name: + dashed_name: observer-geo-country-name + description: Country name. + example: Canada + flat_name: observer.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +observer.geo.location: + dashed_name: observer-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: observer.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +observer.geo.name: + dashed_name: observer-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: observer.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +observer.geo.region_iso_code: + dashed_name: observer-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: observer.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +observer.geo.region_name: + dashed_name: observer-geo-region-name + description: Region name. + example: Quebec + flat_name: observer.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +observer.hostname: + dashed_name: observer-hostname + description: Hostname of the observer. + flat_name: observer.hostname + ignore_above: 1024 + level: core + name: hostname + normalize: [] + short: Hostname of the observer. + type: keyword +observer.ingress: + dashed_name: observer-ingress + description: Observer.ingress holds information like interface number and name, + vlan, and zone information to classify ingress traffic. Single armed monitoring + such as a network sensor on a span port should only use observer.ingress to categorize + traffic. + flat_name: observer.ingress + level: extended + name: ingress + normalize: [] + short: Object field for ingress information + type: object +observer.ingress.interface.alias: + dashed_name: observer-ingress-interface-alias + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + flat_name: observer.ingress.interface.alias + ignore_above: 1024 + level: extended + name: alias + normalize: [] + original_fieldset: interface + short: Interface alias + type: keyword +observer.ingress.interface.id: + dashed_name: observer-ingress-interface-id + description: Interface ID as reported by an observer (typically SNMP interface ID). + example: 10 + flat_name: observer.ingress.interface.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: interface + short: Interface ID + type: keyword +observer.ingress.interface.name: + dashed_name: observer-ingress-interface-name + description: Interface name as reported by the system. + example: eth0 + flat_name: observer.ingress.interface.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: interface + short: Interface name + type: keyword +observer.ingress.vlan.id: + dashed_name: observer-ingress-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: observer.ingress.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +observer.ingress.vlan.name: + dashed_name: observer-ingress-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: observer.ingress.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +observer.ingress.zone: + dashed_name: observer-ingress-zone + description: Network zone of incoming traffic as reported by the observer to categorize + the source area of ingress traffic. e.g. internal, External, DMZ, HR, Legal, + etc. + example: DMZ + flat_name: observer.ingress.zone + ignore_above: 1024 + level: extended + name: ingress.zone + normalize: [] + short: Observer ingress zone + type: keyword +observer.ip: + dashed_name: observer-ip + description: IP addresses of the observer. + flat_name: observer.ip + level: core + name: ip + normalize: + - array + short: IP addresses of the observer. + type: ip +observer.mac: + dashed_name: observer-mac + description: MAC addresses of the observer + flat_name: observer.mac + ignore_above: 1024 + level: core + name: mac + normalize: + - array + short: MAC addresses of the observer + type: keyword +observer.name: + dashed_name: observer-name + description: 'Custom name of the observer. + + This is a name that can be given to an observer. This can be helpful for example + if multiple firewalls of the same model are used in an organization. + + If no custom name is needed, the field can be left empty.' + example: 1_proxySG + flat_name: observer.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Custom name of the observer. + type: keyword +observer.os.family: + dashed_name: observer-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: observer.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword +observer.os.full: + dashed_name: observer-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: observer.os.full + level: extended + multi_fields: + - flat_name: observer.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard +observer.os.kernel: + dashed_name: observer-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: observer.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword +observer.os.name: + dashed_name: observer-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: observer.os.name + level: extended + multi_fields: + - flat_name: observer.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard +observer.os.platform: + dashed_name: observer-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: observer.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword +observer.os.version: + dashed_name: observer-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: observer.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword +observer.product: + dashed_name: observer-product + description: The product name of the observer. + example: s200 + flat_name: observer.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + short: The product name of the observer. + type: keyword +observer.serial_number: + dashed_name: observer-serial-number + description: Observer serial number. + flat_name: observer.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + short: Observer serial number. + type: keyword +observer.type: + dashed_name: observer-type + description: 'The type of the observer the data is coming from. + + There is no predefined list of observer types. Some examples are `forwarder`, + `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.' + example: firewall + flat_name: observer.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: The type of the observer the data is coming from. + type: keyword +observer.vendor: + dashed_name: observer-vendor + description: Vendor name of the observer. + example: Symantec + flat_name: observer.vendor + ignore_above: 1024 + level: core + name: vendor + normalize: [] + short: Vendor name of the observer. + type: keyword +observer.version: + dashed_name: observer-version + description: Observer version. + flat_name: observer.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Observer version. + type: keyword +organization.id: + dashed_name: organization-id + description: Unique identifier for the organization. + flat_name: organization.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Unique identifier for the organization. + type: keyword +organization.name: + dashed_name: organization-name + description: Organization name. + flat_name: organization.name + level: extended + multi_fields: + - flat_name: organization.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Organization name. + type: wildcard +package.architecture: + dashed_name: package-architecture + description: Package architecture. + example: x86_64 + flat_name: package.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + short: Package architecture. + type: keyword +package.build_version: + dashed_name: package-build-version + description: 'Additional information about the build version of the installed package. + + For example use the commit SHA of a non-released package.' + example: 36f4f7e89dd61b0988b12ee000b98966867710cd + flat_name: package.build_version + ignore_above: 1024 + level: extended + name: build_version + normalize: [] + short: Build version information + type: keyword +package.checksum: + dashed_name: package-checksum + description: Checksum of the installed package for verification. + example: 68b329da9893e34099c7d8ad5cb9c940 + flat_name: package.checksum + ignore_above: 1024 + level: extended + name: checksum + normalize: [] + short: Checksum of the installed package for verification. + type: keyword +package.description: + dashed_name: package-description + description: Description of the package. + example: Open source programming language to build simple/reliable/efficient software. + flat_name: package.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + short: Description of the package. + type: keyword +package.install_scope: + dashed_name: package-install-scope + description: Indicating how the package was installed, e.g. user-local, global. + example: global + flat_name: package.install_scope + ignore_above: 1024 + level: extended + name: install_scope + normalize: [] + short: Indicating how the package was installed, e.g. user-local, global. + type: keyword +package.installed: + dashed_name: package-installed + description: Time when package was installed. + flat_name: package.installed + level: extended + name: installed + normalize: [] + short: Time when package was installed. + type: date +package.license: + dashed_name: package-license + description: 'License under which the package was released. + + Use a short name, e.g. the license identifier from SPDX License List where possible + (https://spdx.org/licenses/).' + example: Apache License 2.0 + flat_name: package.license + ignore_above: 1024 + level: extended + name: license + normalize: [] + short: Package license + type: keyword +package.name: + dashed_name: package-name + description: Package name + example: go + flat_name: package.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Package name + type: keyword +package.path: + dashed_name: package-path + description: Path where the package is installed. + example: /usr/local/Cellar/go/1.12.9/ + flat_name: package.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path where the package is installed. + type: keyword +package.reference: + dashed_name: package-reference + description: Home page or reference URL of the software in this package, if available. + example: https://golang.org + flat_name: package.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Package home page or reference URL + type: keyword +package.size: + dashed_name: package-size + description: Package size in bytes. + example: 62231 + flat_name: package.size + format: string + level: extended + name: size + normalize: [] + short: Package size in bytes. + type: long +package.type: + dashed_name: package-type + description: 'Type of package. + + This should contain the package file type, rather than the package manager name. + Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.' + example: rpm + flat_name: package.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: Package type + type: keyword +package.version: + dashed_name: package-version + description: Package version + example: 1.12.9 + flat_name: package.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Package version + type: keyword +process.args: + dashed_name: process-args + description: 'Array of process arguments, starting with the absolute path to the + executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + flat_name: process.args + ignore_above: 1024 + level: extended + name: args + normalize: + - array + short: Array of process arguments. + type: keyword +process.args_count: + dashed_name: process-args-count + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how many + arguments were provided to start a process. More arguments may be an indication + of suspicious activity.' + example: 4 + flat_name: process.args_count + level: extended + name: args_count + normalize: [] + short: Length of the process.args array. + type: long +process.code_signature.exists: + dashed_name: process-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: process.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean +process.code_signature.status: + dashed_name: process-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: process.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword +process.code_signature.subject_name: + dashed_name: process-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: process.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword +process.code_signature.trusted: + dashed_name: process-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this field + should only be populated by tools that actively check the status.' + example: 'true' + flat_name: process.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean +process.code_signature.valid: + dashed_name: process-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against the + binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: process.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean +process.command_line: + dashed_name: process-command-line + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + flat_name: process.command_line + level: extended + multi_fields: + - flat_name: process.command_line.text + name: text + norms: false + type: text + name: command_line + normalize: [] + short: Full command line that started the process. + type: wildcard +process.entity_id: + dashed_name: process-entity-id + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate PID + reuse as well as to identify a specific process over time, across multiple monitored + hosts.' + example: c2c455d9f99375d + flat_name: process.entity_id + ignore_above: 1024 + level: extended + name: entity_id + normalize: [] + short: Unique identifier for the process. + type: keyword +process.executable: + dashed_name: process-executable + description: Absolute path to the process executable. + example: /usr/bin/ssh + flat_name: process.executable + level: extended + multi_fields: + - flat_name: process.executable.text + name: text + norms: false + type: text + name: executable + normalize: [] + short: Absolute path to the process executable. + type: wildcard +process.exit_code: + dashed_name: process-exit-code + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + flat_name: process.exit_code + level: extended + name: exit_code + normalize: [] + short: The exit code of the process. + type: long +process.hash.md5: + dashed_name: process-hash-md5 + description: MD5 hash. + flat_name: process.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword +process.hash.sha1: + dashed_name: process-hash-sha1 + description: SHA1 hash. + flat_name: process.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword +process.hash.sha256: + dashed_name: process-hash-sha256 + description: SHA256 hash. + flat_name: process.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword +process.hash.sha512: + dashed_name: process-hash-sha512 + description: SHA512 hash. + flat_name: process.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword +process.name: + dashed_name: process-name + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + flat_name: process.name + level: extended + multi_fields: + - flat_name: process.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Process name. + type: wildcard +process.parent.args: + dashed_name: process-parent-args + description: 'Array of process arguments, starting with the absolute path to the + executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + flat_name: process.parent.args + ignore_above: 1024 + level: extended + name: args + normalize: + - array + original_fieldset: process + short: Array of process arguments. + type: keyword +process.parent.args_count: + dashed_name: process-parent-args-count + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how many + arguments were provided to start a process. More arguments may be an indication + of suspicious activity.' + example: 4 + flat_name: process.parent.args_count + level: extended + name: args_count + normalize: [] + original_fieldset: process + short: Length of the process.args array. + type: long +process.parent.code_signature.exists: + dashed_name: process-parent-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: process.parent.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean +process.parent.code_signature.status: + dashed_name: process-parent-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: process.parent.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword +process.parent.code_signature.subject_name: + dashed_name: process-parent-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: process.parent.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword +process.parent.code_signature.trusted: + dashed_name: process-parent-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this field + should only be populated by tools that actively check the status.' + example: 'true' + flat_name: process.parent.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean +process.parent.code_signature.valid: + dashed_name: process-parent-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against the + binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: process.parent.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean +process.parent.command_line: + dashed_name: process-parent-command-line + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + flat_name: process.parent.command_line + level: extended + multi_fields: + - flat_name: process.parent.command_line.text + name: text + norms: false + type: text + name: command_line + normalize: [] + original_fieldset: process + short: Full command line that started the process. + type: wildcard +process.parent.entity_id: + dashed_name: process-parent-entity-id + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate PID + reuse as well as to identify a specific process over time, across multiple monitored + hosts.' + example: c2c455d9f99375d + flat_name: process.parent.entity_id + ignore_above: 1024 + level: extended + name: entity_id + normalize: [] + original_fieldset: process + short: Unique identifier for the process. + type: keyword +process.parent.executable: + dashed_name: process-parent-executable + description: Absolute path to the process executable. + example: /usr/bin/ssh + flat_name: process.parent.executable + level: extended + multi_fields: + - flat_name: process.parent.executable.text + name: text + norms: false + type: text + name: executable + normalize: [] + original_fieldset: process + short: Absolute path to the process executable. + type: wildcard +process.parent.exit_code: + dashed_name: process-parent-exit-code + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + flat_name: process.parent.exit_code + level: extended + name: exit_code + normalize: [] + original_fieldset: process + short: The exit code of the process. + type: long +process.parent.hash.md5: + dashed_name: process-parent-hash-md5 + description: MD5 hash. + flat_name: process.parent.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword +process.parent.hash.sha1: + dashed_name: process-parent-hash-sha1 + description: SHA1 hash. + flat_name: process.parent.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword +process.parent.hash.sha256: + dashed_name: process-parent-hash-sha256 + description: SHA256 hash. + flat_name: process.parent.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword +process.parent.hash.sha512: + dashed_name: process-parent-hash-sha512 + description: SHA512 hash. + flat_name: process.parent.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword +process.parent.name: + dashed_name: process-parent-name + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + flat_name: process.parent.name + level: extended + multi_fields: + - flat_name: process.parent.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: process + short: Process name. + type: wildcard +process.parent.pe.architecture: + dashed_name: process-parent-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: process.parent.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword +process.parent.pe.company: + dashed_name: process-parent-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: process.parent.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword +process.parent.pe.description: + dashed_name: process-parent-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: process.parent.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword +process.parent.pe.file_version: + dashed_name: process-parent-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: process.parent.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword +process.parent.pe.imphash: + dashed_name: process-parent-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash -- + can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: process.parent.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword +process.parent.pe.original_file_name: + dashed_name: process-parent-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: process.parent.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard +process.parent.pe.product: + dashed_name: process-parent-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: process.parent.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword +process.parent.pgid: + dashed_name: process-parent-pgid + description: Identifier of the group of processes the process belongs to. + flat_name: process.parent.pgid + format: string + level: extended + name: pgid + normalize: [] + original_fieldset: process + short: Identifier of the group of processes the process belongs to. + type: long +process.parent.pid: + dashed_name: process-parent-pid + description: Process id. + example: 4242 + flat_name: process.parent.pid + format: string + level: core + name: pid + normalize: [] + original_fieldset: process + short: Process id. + type: long +process.parent.ppid: + dashed_name: process-parent-ppid + description: Parent process' pid. + example: 4241 + flat_name: process.parent.ppid + format: string + level: extended + name: ppid + normalize: [] + original_fieldset: process + short: Parent process' pid. + type: long +process.parent.start: + dashed_name: process-parent-start + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + flat_name: process.parent.start + level: extended + name: start + normalize: [] + original_fieldset: process + short: The time the process started. + type: date +process.parent.thread.id: + dashed_name: process-parent-thread-id + description: Thread ID. + example: 4242 + flat_name: process.parent.thread.id + format: string + level: extended + name: thread.id + normalize: [] + original_fieldset: process + short: Thread ID. + type: long +process.parent.thread.name: + dashed_name: process-parent-thread-name + description: Thread name. + example: thread-0 + flat_name: process.parent.thread.name + ignore_above: 1024 + level: extended + name: thread.name + normalize: [] + original_fieldset: process + short: Thread name. + type: keyword +process.parent.title: + dashed_name: process-parent-title + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: for + example a browser setting its title to the web page currently opened.' + flat_name: process.parent.title + level: extended + multi_fields: + - flat_name: process.parent.title.text + name: text + norms: false + type: text + name: title + normalize: [] + original_fieldset: process + short: Process title. + type: wildcard +process.parent.uptime: + dashed_name: process-parent-uptime + description: Seconds the process has been up. + example: 1325 + flat_name: process.parent.uptime + level: extended + name: uptime + normalize: [] + original_fieldset: process + short: Seconds the process has been up. + type: long +process.parent.working_directory: + dashed_name: process-parent-working-directory + description: The working directory of the process. + example: /home/alice + flat_name: process.parent.working_directory + level: extended + multi_fields: + - flat_name: process.parent.working_directory.text + name: text + norms: false + type: text + name: working_directory + normalize: [] + original_fieldset: process + short: The working directory of the process. + type: wildcard +process.pe.architecture: + dashed_name: process-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: process.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword +process.pe.company: + dashed_name: process-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: process.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword +process.pe.description: + dashed_name: process-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: process.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword +process.pe.file_version: + dashed_name: process-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: process.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword +process.pe.imphash: + dashed_name: process-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash -- + can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: process.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword +process.pe.original_file_name: + dashed_name: process-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: process.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard +process.pe.product: + dashed_name: process-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: process.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword +process.pgid: + dashed_name: process-pgid + description: Identifier of the group of processes the process belongs to. + flat_name: process.pgid + format: string + level: extended + name: pgid + normalize: [] + short: Identifier of the group of processes the process belongs to. + type: long +process.pid: + dashed_name: process-pid + description: Process id. + example: 4242 + flat_name: process.pid + format: string + level: core + name: pid + normalize: [] + short: Process id. + type: long +process.ppid: + dashed_name: process-ppid + description: Parent process' pid. + example: 4241 + flat_name: process.ppid + format: string + level: extended + name: ppid + normalize: [] + short: Parent process' pid. + type: long +process.start: + dashed_name: process-start + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + flat_name: process.start + level: extended + name: start + normalize: [] + short: The time the process started. + type: date +process.thread.id: + dashed_name: process-thread-id + description: Thread ID. + example: 4242 + flat_name: process.thread.id + format: string + level: extended + name: thread.id + normalize: [] + short: Thread ID. + type: long +process.thread.name: + dashed_name: process-thread-name + description: Thread name. + example: thread-0 + flat_name: process.thread.name + ignore_above: 1024 + level: extended + name: thread.name + normalize: [] + short: Thread name. + type: keyword +process.title: + dashed_name: process-title + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: for + example a browser setting its title to the web page currently opened.' + flat_name: process.title + level: extended + multi_fields: + - flat_name: process.title.text + name: text + norms: false + type: text + name: title + normalize: [] + short: Process title. + type: wildcard +process.uptime: + dashed_name: process-uptime + description: Seconds the process has been up. + example: 1325 + flat_name: process.uptime + level: extended + name: uptime + normalize: [] + short: Seconds the process has been up. + type: long +process.working_directory: + dashed_name: process-working-directory + description: The working directory of the process. + example: /home/alice + flat_name: process.working_directory + level: extended + multi_fields: + - flat_name: process.working_directory.text + name: text + norms: false + type: text + name: working_directory + normalize: [] + short: The working directory of the process. + type: wildcard +registry.data.bytes: + dashed_name: registry-data-bytes + description: 'Original bytes written with base64 encoding. + + For Windows registry operations, such as SetValueEx and RegQueryValueEx, this + corresponds to the data pointed by `lp_data`. This is optional but provides better + recoverability and should be populated for REG_BINARY encoded values.' + example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + flat_name: registry.data.bytes + ignore_above: 1024 + level: extended + name: data.bytes + normalize: [] + short: Original bytes written with base64 encoding. + type: keyword +registry.data.strings: + dashed_name: registry-data-strings + description: 'Content when writing string types. + + Populated as an array when writing string data to the registry. For single string + registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with one string. + For sequences of string with REG_MULTI_SZ, this array will be variable length. + For numeric data, such as REG_DWORD and REG_QWORD, this should be populated with + the decimal representation (e.g `"1"`).' + example: '["C:\rta\red_ttp\bin\myapp.exe"]' + flat_name: registry.data.strings + level: core + name: data.strings + normalize: + - array + short: List of strings representing what was written to the registry. + type: wildcard +registry.data.type: + dashed_name: registry-data-type + description: Standard registry type for encoding contents + example: REG_SZ + flat_name: registry.data.type + ignore_above: 1024 + level: core + name: data.type + normalize: [] + short: Standard registry type for encoding contents + type: keyword +registry.hive: + dashed_name: registry-hive + description: Abbreviated name for the hive. + example: HKLM + flat_name: registry.hive + ignore_above: 1024 + level: core + name: hive + normalize: [] + short: Abbreviated name for the hive. + type: keyword +registry.key: + dashed_name: registry-key + description: Hive-relative path of keys. + example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe + flat_name: registry.key + level: core + name: key + normalize: [] + short: Hive-relative path of keys. + type: wildcard +registry.path: + dashed_name: registry-path + description: Full path, including hive, key and value + example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution + Options\winword.exe\Debugger + flat_name: registry.path + level: core + name: path + normalize: [] + short: Full path, including hive, key and value + type: wildcard +registry.value: + dashed_name: registry-value + description: Name of the value written. + example: Debugger + flat_name: registry.value + ignore_above: 1024 + level: core + name: value + normalize: [] + short: Name of the value written. + type: keyword +related.hash: + dashed_name: related-hash + description: All the hashes seen on your event. Populating this field, then using + it to search for hashes can help in situations where you're unsure what the hash + algorithm is (and therefore which key name to search). + flat_name: related.hash + ignore_above: 1024 + level: extended + name: hash + normalize: + - array + short: All the hashes seen on your event. + type: keyword +related.hosts: + dashed_name: related-hosts + description: All hostnames or other host identifiers seen on your event. Example + identifiers include FQDNs, domain names, workstation names, or aliases. + flat_name: related.hosts + ignore_above: 1024 + level: extended + name: hosts + normalize: + - array + short: All the host identifiers seen on your event. + type: keyword +related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip +related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword +rule.author: + dashed_name: rule-author + description: Name, organization, or pseudonym of the author or authors who created + the rule used to generate this event. + example: '["Star-Lord"]' + flat_name: rule.author + ignore_above: 1024 + level: extended + name: author + normalize: + - array + short: Rule author + type: keyword +rule.category: + dashed_name: rule-category + description: A categorization value keyword used by the entity using the rule for + detection of this event. + example: Attempted Information Leak + flat_name: rule.category + ignore_above: 1024 + level: extended + name: category + normalize: [] + short: Rule category + type: keyword +rule.description: + dashed_name: rule-description + description: The description of the rule generating the event. + example: Block requests to public DNS over HTTPS / TLS protocols + flat_name: rule.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + short: Rule description + type: keyword +rule.id: + dashed_name: rule-id + description: A rule ID that is unique within the scope of an agent, observer, or + other entity using the rule for detection of this event. + example: 101 + flat_name: rule.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Rule ID + type: keyword +rule.license: + dashed_name: rule-license + description: Name of the license under which the rule used to generate this event + is made available. + example: Apache 2.0 + flat_name: rule.license + ignore_above: 1024 + level: extended + name: license + normalize: [] + short: Rule license + type: keyword +rule.name: + dashed_name: rule-name + description: The name of the rule or signature generating the event. + example: BLOCK_DNS_over_TLS + flat_name: rule.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Rule name + type: keyword +rule.reference: + dashed_name: rule-reference + description: 'Reference URL to additional information about the rule used to generate + this event. + + The URL can point to the vendor''s documentation about the rule. If that''s not + available, it can also be a link to a more general page describing this type of + alert.' + example: https://en.wikipedia.org/wiki/DNS_over_TLS + flat_name: rule.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Rule reference URL + type: keyword +rule.ruleset: + dashed_name: rule-ruleset + description: Name of the ruleset, policy, group, or parent category in which the + rule used to generate this event is a member. + example: Standard_Protocol_Filters + flat_name: rule.ruleset + ignore_above: 1024 + level: extended + name: ruleset + normalize: [] + short: Rule ruleset + type: keyword +rule.uuid: + dashed_name: rule-uuid + description: A rule ID that is unique within the scope of a set or group of agents, + observers, or other entities using the rule for detection of this event. + example: 1100110011 + flat_name: rule.uuid + ignore_above: 1024 + level: extended + name: uuid + normalize: [] + short: Rule UUID + type: keyword +rule.version: + dashed_name: rule-version + description: The version / revision of the rule being used for analysis. + example: 1.1 + flat_name: rule.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Rule version + type: keyword +server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword +server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard +server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long +server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + level: core + name: domain + normalize: [] + short: Server domain. + type: wildcard +server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip +server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword +server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip +server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long +server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long +server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long +server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: wildcard +server.subdomain: + dashed_name: server-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: server.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +service.ephemeral_id: + dashed_name: service-ephemeral-id + description: 'Ephemeral identifier of this service (if one exists). + + This id normally changes across restarts, but `service.id` does not.' + example: 8a4f500f + flat_name: service.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this service. + type: keyword +service.id: + dashed_name: service-id + description: 'Unique identifier of the running service. If the service is comprised + of many nodes, the `service.id` should be the same for all nodes. + + This id should uniquely identify the service. This makes it possible to correlate + logs and metrics for one specific service, no matter which particular node emitted + the event. + + Note that if you need to see the events from one specific host of the service, + you should filter on that `host.name` or `host.id` instead.' + example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 + flat_name: service.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of the running service. + type: keyword +service.name: + dashed_name: service-name + description: 'Name of the service data is collected from. + + The name of the service is normally user given. This allows for distributed services + that run on multiple hosts to correlate the related instances based on the name. + + In the case of Elasticsearch the `service.name` could contain the cluster name. + For Beats the `service.name` is by default a copy of the `service.type` field + if no name is specified.' + example: elasticsearch-metrics + flat_name: service.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the service. + type: keyword +service.node.name: + dashed_name: service-node-name + description: 'Name of a service node. + + This allows for two nodes of the same service running on the same host to be differentiated. + Therefore, `service.node.name` should typically be unique across nodes of a given + service. + + In the case of Elasticsearch, the `service.node.name` could contain the unique + node name within the Elasticsearch cluster. In cases where the service doesn''t + have the concept of a node name, the host name or container name can be used to + distinguish running instances that make up this service. If those do not provide + uniqueness (e.g. multiple instances of the service running on the same host) - + the node name can be manually set.' + example: instance-0000000016 + flat_name: service.node.name + ignore_above: 1024 + level: extended + name: node.name + normalize: [] + short: Name of the service node. + type: keyword +service.state: + dashed_name: service-state + description: Current state of the service. + flat_name: service.state + ignore_above: 1024 + level: core + name: state + normalize: [] + short: Current state of the service. + type: keyword +service.type: + dashed_name: service-type + description: 'The type of the service data is collected from. + + The type can be used to group and correlate logs and metrics from one service + type. + + Example: If logs or metrics are collected from Elasticsearch, `service.type` would + be `elasticsearch`.' + example: elasticsearch + flat_name: service.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: The type of the service. + type: keyword +service.version: + dashed_name: service-version + description: 'Version of the service the data was collected from. + + This allows to look at a data set only for a specific version of a service.' + example: 3.2.4 + flat_name: service.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the service. + type: keyword +source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword +source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard +source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long +source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + level: core + name: domain + normalize: [] + short: Source domain. + type: wildcard +source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard +source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip +source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword +source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client to + internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip +source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long +source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long +source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long +source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: wildcard +source.subdomain: + dashed_name: source-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: source.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +span.id: + dashed_name: span-id + description: 'Unique identifier of the span within the scope of its trace. + + A span represents an operation within a transaction, such as a request to another + service, or a database query.' + example: 3ff9a8981b7ccd5a + flat_name: span.id + ignore_above: 1024 + level: extended + name: span.id + normalize: [] + short: Unique identifier of the span within the scope of its trace. + type: keyword +tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword +threat.framework: + dashed_name: threat-framework + description: Name of the threat framework used to further categorize and classify + the tactic and technique of the reported threat. Framework classification can + be provided by detecting systems, evaluated at ingest time, or retrospectively + tagged to events. + example: MITRE ATT&CK + flat_name: threat.framework + ignore_above: 1024 + level: extended + name: framework + normalize: [] + short: Threat classification framework. + type: keyword +threat.tactic.id: + dashed_name: threat-tactic-id + description: "The id of tactic used by this threat. You can use a MITRE ATT&CK\xAE\ + \ tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )" + example: TA0002 + flat_name: threat.tactic.id + ignore_above: 1024 + level: extended + name: tactic.id + normalize: + - array + short: Threat tactic id. + type: keyword +threat.tactic.name: + dashed_name: threat-tactic-name + description: "Name of the type of tactic used by this threat. You can use a MITRE\ + \ ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/)" + example: Execution + flat_name: threat.tactic.name + ignore_above: 1024 + level: extended + name: tactic.name + normalize: + - array + short: Threat tactic. + type: keyword +threat.tactic.reference: + dashed_name: threat-tactic-reference + description: "The reference url of tactic used by this threat. You can use a MITRE\ + \ ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/\ + \ )" + example: https://attack.mitre.org/tactics/TA0002/ + flat_name: threat.tactic.reference + ignore_above: 1024 + level: extended + name: tactic.reference + normalize: + - array + short: Threat tactic URL reference. + type: keyword +threat.technique.id: + dashed_name: threat-technique-id + description: "The id of technique used by this threat. You can use a MITRE ATT&CK\xAE\ + \ technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: T1059 + flat_name: threat.technique.id + ignore_above: 1024 + level: extended + name: technique.id + normalize: + - array + short: Threat technique id. + type: keyword +threat.technique.name: + dashed_name: threat-technique-name + description: "The name of technique used by this threat. You can use a MITRE ATT&CK\xAE\ + \ technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: Command and Scripting Interpreter + flat_name: threat.technique.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: threat.technique.name.text + name: text + norms: false + type: text + name: technique.name + normalize: + - array + short: Threat technique name. + type: keyword +threat.technique.reference: + dashed_name: threat-technique-reference + description: "The reference url of technique used by this threat. You can use a\ + \ MITRE ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: https://attack.mitre.org/techniques/T1059/ + flat_name: threat.technique.reference + ignore_above: 1024 + level: extended + name: technique.reference + normalize: + - array + short: Threat technique URL reference. + type: keyword +threat.technique.subtechnique.id: + dashed_name: threat-technique-subtechnique-id + description: "The full id of subtechnique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: T1059.001 + flat_name: threat.technique.subtechnique.id + ignore_above: 1024 + level: extended + name: technique.subtechnique.id + normalize: + - array + short: Threat subtechnique id. + type: keyword +threat.technique.subtechnique.name: + dashed_name: threat-technique-subtechnique-name + description: "The name of subtechnique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: PowerShell + flat_name: threat.technique.subtechnique.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: threat.technique.subtechnique.name.text + name: text + norms: false + type: text + name: technique.subtechnique.name + normalize: + - array + short: Threat subtechnique name. + type: keyword +threat.technique.subtechnique.reference: + dashed_name: threat-technique-subtechnique-reference + description: "The reference url of subtechnique used by this threat. You can use\ + \ a MITRE ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: https://attack.mitre.org/techniques/T1059/001/ + flat_name: threat.technique.subtechnique.reference + ignore_above: 1024 + level: extended + name: technique.subtechnique.reference + normalize: + - array + short: Threat subtechnique URL reference. + type: keyword +tls.cipher: + dashed_name: tls-cipher + description: String indicating the cipher used during the current connection. + example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + flat_name: tls.cipher + ignore_above: 1024 + level: extended + name: cipher + normalize: [] + short: String indicating the cipher used during the current connection. + type: keyword +tls.client.certificate: + dashed_name: tls-client-certificate + description: PEM-encoded stand-alone certificate offered by the client. This is + usually mutually-exclusive of `client.certificate_chain` since this value also + exists in that list. + example: MII... + flat_name: tls.client.certificate + ignore_above: 1024 + level: extended + name: client.certificate + normalize: [] + short: PEM-encoded stand-alone certificate offered by the client. + type: keyword +tls.client.certificate_chain: + dashed_name: tls-client-certificate-chain + description: Array of PEM-encoded certificates that make up the certificate chain + offered by the client. This is usually mutually-exclusive of `client.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + flat_name: tls.client.certificate_chain + ignore_above: 1024 + level: extended + name: client.certificate_chain + normalize: + - array + short: Array of PEM-encoded certificates that make up the certificate chain offered + by the client. + type: keyword +tls.client.hash.md5: + dashed_name: tls-client-hash-md5 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + flat_name: tls.client.hash.md5 + ignore_above: 1024 + level: extended + name: client.hash.md5 + normalize: [] + short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate + offered by the client. + type: keyword +tls.client.hash.sha1: + dashed_name: tls-client-hash-sha1 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + flat_name: tls.client.hash.sha1 + ignore_above: 1024 + level: extended + name: client.hash.sha1 + normalize: [] + short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate + offered by the client. + type: keyword +tls.client.hash.sha256: + dashed_name: tls-client-hash-sha256 + description: Certificate fingerprint using the SHA256 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + flat_name: tls.client.hash.sha256 + ignore_above: 1024 + level: extended + name: client.hash.sha256 + normalize: [] + short: Certificate fingerprint using the SHA256 digest of DER-encoded version of + certificate offered by the client. + type: keyword +tls.client.issuer: + dashed_name: tls-client-issuer + description: Distinguished name of subject of the issuer of the x.509 certificate + presented by the client. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.client.issuer + level: extended + name: client.issuer + normalize: [] + short: Distinguished name of subject of the issuer of the x.509 certificate presented + by the client. + type: wildcard +tls.client.ja3: + dashed_name: tls-client-ja3 + description: A hash that identifies clients based on how they perform an SSL/TLS + handshake. + example: d4e5b18d6b55c71272893221c96ba240 + flat_name: tls.client.ja3 + ignore_above: 1024 + level: extended + name: client.ja3 + normalize: [] + short: A hash that identifies clients based on how they perform an SSL/TLS handshake. + type: keyword +tls.client.not_after: + dashed_name: tls-client-not-after + description: Date/Time indicating when client certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + flat_name: tls.client.not_after + level: extended + name: client.not_after + normalize: [] + short: Date/Time indicating when client certificate is no longer considered valid. + type: date +tls.client.not_before: + dashed_name: tls-client-not-before + description: Date/Time indicating when client certificate is first considered valid. + example: '1970-01-01T00:00:00.000Z' + flat_name: tls.client.not_before + level: extended + name: client.not_before + normalize: [] + short: Date/Time indicating when client certificate is first considered valid. + type: date +tls.client.server_name: + dashed_name: tls-client-server-name + description: Also called an SNI, this tells the server which hostname to which the + client is attempting to connect to. When this value is available, it should get + copied to `destination.domain`. + example: www.elastic.co + flat_name: tls.client.server_name + ignore_above: 1024 + level: extended + name: client.server_name + normalize: [] + short: Hostname the client is trying to connect to. Also called the SNI. + type: keyword +tls.client.subject: + dashed_name: tls-client-subject + description: Distinguished name of subject of the x.509 certificate presented by + the client. + example: CN=myclient, OU=Documentation Team, DC=example, DC=com + flat_name: tls.client.subject + level: extended + name: client.subject + normalize: [] + short: Distinguished name of subject of the x.509 certificate presented by the client. + type: wildcard +tls.client.supported_ciphers: + dashed_name: tls-client-supported-ciphers + description: Array of ciphers offered by the client during the client hello. + example: '["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + "..."]' + flat_name: tls.client.supported_ciphers + ignore_above: 1024 + level: extended + name: client.supported_ciphers + normalize: + - array + short: Array of ciphers offered by the client during the client hello. + type: keyword +tls.client.x509.alternative_names: + dashed_name: tls-client-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names (and + wildcards), and email addresses. + example: '*.elastic.co' + flat_name: tls.client.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword +tls.client.x509.issuer.common_name: + dashed_name: tls-client-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: tls.client.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword +tls.client.x509.issuer.country: + dashed_name: tls-client-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: tls.client.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword +tls.client.x509.issuer.distinguished_name: + dashed_name: tls-client-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: tls.client.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard +tls.client.x509.issuer.locality: + dashed_name: tls-client-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: tls.client.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +tls.client.x509.issuer.organization: + dashed_name: tls-client-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: tls.client.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword +tls.client.x509.issuer.organizational_unit: + dashed_name: tls-client-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: tls.client.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword +tls.client.x509.issuer.state_or_province: + dashed_name: tls-client-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.client.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +tls.client.x509.not_after: + dashed_name: tls-client-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: tls.client.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date +tls.client.x509.not_before: + dashed_name: tls-client-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: tls.client.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date +tls.client.x509.public_key_algorithm: + dashed_name: tls-client-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: tls.client.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword +tls.client.x509.public_key_curve: + dashed_name: tls-client-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This is + algorithm specific. + example: nistp521 + flat_name: tls.client.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword +tls.client.x509.public_key_exponent: + dashed_name: tls-client-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: tls.client.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long +tls.client.x509.public_key_size: + dashed_name: tls-client-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: tls.client.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long +tls.client.x509.serial_number: + dashed_name: tls-client-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: tls.client.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword +tls.client.x509.signature_algorithm: + dashed_name: tls-client-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: tls.client.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword +tls.client.x509.subject.common_name: + dashed_name: tls-client-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: tls.client.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword +tls.client.x509.subject.country: + dashed_name: tls-client-x509-subject-country + description: List of country (C) code + example: US + flat_name: tls.client.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword +tls.client.x509.subject.distinguished_name: + dashed_name: tls-client-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: tls.client.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard +tls.client.x509.subject.locality: + dashed_name: tls-client-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: tls.client.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +tls.client.x509.subject.organization: + dashed_name: tls-client-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: tls.client.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword +tls.client.x509.subject.organizational_unit: + dashed_name: tls-client-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: tls.client.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword +tls.client.x509.subject.state_or_province: + dashed_name: tls-client-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.client.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +tls.client.x509.version_number: + dashed_name: tls-client-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: tls.client.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword +tls.curve: + dashed_name: tls-curve + description: String indicating the curve used for the given cipher, when applicable. + example: secp256r1 + flat_name: tls.curve + ignore_above: 1024 + level: extended + name: curve + normalize: [] + short: String indicating the curve used for the given cipher, when applicable. + type: keyword +tls.established: + dashed_name: tls-established + description: Boolean flag indicating if the TLS negotiation was successful and transitioned + to an encrypted tunnel. + flat_name: tls.established + level: extended + name: established + normalize: [] + short: Boolean flag indicating if the TLS negotiation was successful and transitioned + to an encrypted tunnel. + type: boolean +tls.next_protocol: + dashed_name: tls-next-protocol + description: String indicating the protocol being tunneled. Per the values in the + IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), + this string should be lower case. + example: http/1.1 + flat_name: tls.next_protocol + ignore_above: 1024 + level: extended + name: next_protocol + normalize: [] + short: String indicating the protocol being tunneled. + type: keyword +tls.resumed: + dashed_name: tls-resumed + description: Boolean flag indicating if this TLS connection was resumed from an + existing TLS negotiation. + flat_name: tls.resumed + level: extended + name: resumed + normalize: [] + short: Boolean flag indicating if this TLS connection was resumed from an existing + TLS negotiation. + type: boolean +tls.server.certificate: + dashed_name: tls-server-certificate + description: PEM-encoded stand-alone certificate offered by the server. This is + usually mutually-exclusive of `server.certificate_chain` since this value also + exists in that list. + example: MII... + flat_name: tls.server.certificate + ignore_above: 1024 + level: extended + name: server.certificate + normalize: [] + short: PEM-encoded stand-alone certificate offered by the server. + type: keyword +tls.server.certificate_chain: + dashed_name: tls-server-certificate-chain + description: Array of PEM-encoded certificates that make up the certificate chain + offered by the server. This is usually mutually-exclusive of `server.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + flat_name: tls.server.certificate_chain + ignore_above: 1024 + level: extended + name: server.certificate_chain + normalize: + - array + short: Array of PEM-encoded certificates that make up the certificate chain offered + by the server. + type: keyword +tls.server.hash.md5: + dashed_name: tls-server-hash-md5 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + flat_name: tls.server.hash.md5 + ignore_above: 1024 + level: extended + name: server.hash.md5 + normalize: [] + short: Certificate fingerprint using the MD5 digest of DER-encoded version of certificate + offered by the server. + type: keyword +tls.server.hash.sha1: + dashed_name: tls-server-hash-sha1 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + flat_name: tls.server.hash.sha1 + ignore_above: 1024 + level: extended + name: server.hash.sha1 + normalize: [] + short: Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate + offered by the server. + type: keyword +tls.server.hash.sha256: + dashed_name: tls-server-hash-sha256 + description: Certificate fingerprint using the SHA256 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + flat_name: tls.server.hash.sha256 + ignore_above: 1024 + level: extended + name: server.hash.sha256 + normalize: [] + short: Certificate fingerprint using the SHA256 digest of DER-encoded version of + certificate offered by the server. + type: keyword +tls.server.issuer: + dashed_name: tls-server-issuer + description: Subject of the issuer of the x.509 certificate presented by the server. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.server.issuer + level: extended + name: server.issuer + normalize: [] + short: Subject of the issuer of the x.509 certificate presented by the server. + type: wildcard +tls.server.ja3s: + dashed_name: tls-server-ja3s + description: A hash that identifies servers based on how they perform an SSL/TLS + handshake. + example: 394441ab65754e2207b1e1b457b3641d + flat_name: tls.server.ja3s + ignore_above: 1024 + level: extended + name: server.ja3s + normalize: [] + short: A hash that identifies servers based on how they perform an SSL/TLS handshake. + type: keyword +tls.server.not_after: + dashed_name: tls-server-not-after + description: Timestamp indicating when server certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + flat_name: tls.server.not_after + level: extended + name: server.not_after + normalize: [] + short: Timestamp indicating when server certificate is no longer considered valid. + type: date +tls.server.not_before: + dashed_name: tls-server-not-before + description: Timestamp indicating when server certificate is first considered valid. + example: '1970-01-01T00:00:00.000Z' + flat_name: tls.server.not_before + level: extended + name: server.not_before + normalize: [] + short: Timestamp indicating when server certificate is first considered valid. + type: date +tls.server.subject: + dashed_name: tls-server-subject + description: Subject of the x.509 certificate presented by the server. + example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.server.subject + level: extended + name: server.subject + normalize: [] + short: Subject of the x.509 certificate presented by the server. + type: wildcard +tls.server.x509.alternative_names: + dashed_name: tls-server-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names (and + wildcards), and email addresses. + example: '*.elastic.co' + flat_name: tls.server.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword +tls.server.x509.issuer.common_name: + dashed_name: tls-server-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: tls.server.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword +tls.server.x509.issuer.country: + dashed_name: tls-server-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: tls.server.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword +tls.server.x509.issuer.distinguished_name: + dashed_name: tls-server-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: tls.server.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard +tls.server.x509.issuer.locality: + dashed_name: tls-server-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: tls.server.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +tls.server.x509.issuer.organization: + dashed_name: tls-server-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: tls.server.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword +tls.server.x509.issuer.organizational_unit: + dashed_name: tls-server-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: tls.server.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword +tls.server.x509.issuer.state_or_province: + dashed_name: tls-server-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.server.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +tls.server.x509.not_after: + dashed_name: tls-server-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: tls.server.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date +tls.server.x509.not_before: + dashed_name: tls-server-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: tls.server.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date +tls.server.x509.public_key_algorithm: + dashed_name: tls-server-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: tls.server.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword +tls.server.x509.public_key_curve: + dashed_name: tls-server-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This is + algorithm specific. + example: nistp521 + flat_name: tls.server.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword +tls.server.x509.public_key_exponent: + dashed_name: tls-server-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: tls.server.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long +tls.server.x509.public_key_size: + dashed_name: tls-server-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: tls.server.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long +tls.server.x509.serial_number: + dashed_name: tls-server-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: tls.server.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword +tls.server.x509.signature_algorithm: + dashed_name: tls-server-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: tls.server.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword +tls.server.x509.subject.common_name: + dashed_name: tls-server-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: tls.server.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword +tls.server.x509.subject.country: + dashed_name: tls-server-x509-subject-country + description: List of country (C) code + example: US + flat_name: tls.server.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword +tls.server.x509.subject.distinguished_name: + dashed_name: tls-server-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: tls.server.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard +tls.server.x509.subject.locality: + dashed_name: tls-server-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: tls.server.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword +tls.server.x509.subject.organization: + dashed_name: tls-server-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: tls.server.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword +tls.server.x509.subject.organizational_unit: + dashed_name: tls-server-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: tls.server.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword +tls.server.x509.subject.state_or_province: + dashed_name: tls-server-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.server.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword +tls.server.x509.version_number: + dashed_name: tls-server-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: tls.server.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword +tls.version: + dashed_name: tls-version + description: Numeric part of the version parsed from the original string. + example: '1.2' + flat_name: tls.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Numeric part of the version parsed from the original string. + type: keyword +tls.version_protocol: + dashed_name: tls-version-protocol + description: Normalized lowercase protocol name parsed from original string. + example: tls + flat_name: tls.version_protocol + ignore_above: 1024 + level: extended + name: version_protocol + normalize: [] + short: Normalized lowercase protocol name parsed from original string. + type: keyword +trace.id: + dashed_name: trace-id + description: 'Unique identifier of the trace. + + A trace groups multiple events like transactions that belong together. For example, + a user request handled by multiple inter-connected services.' + example: 4bf92f3577b34da6a3ce929d0e0e4736 + flat_name: trace.id + ignore_above: 1024 + level: extended + name: trace.id + normalize: [] + short: Unique identifier of the trace. + type: keyword +transaction.id: + dashed_name: transaction-id + description: 'Unique identifier of the transaction within the scope of its trace. + + A transaction is the highest level of work measured within a service, such as + a request to a server.' + example: 00f067aa0ba902b7 + flat_name: transaction.id + ignore_above: 1024 + level: extended + name: transaction.id + normalize: [] + short: Unique identifier of the transaction within the scope of its trace. + type: keyword +url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: wildcard +url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword +url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword +url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: wildcard +url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas in + access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: wildcard +url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword +url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: wildcard +url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long +url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such as + "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there is + no query field. If there is a `?` but no query, the query field exists with an + empty string. The `exists` query can be used to differentiate between the two + cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword +url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: wildcard +url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword +url.subdomain: + dashed_name: url-subdomain + description: 'The subdomain portion of a fully qualified domain name includes all + of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot be + determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". If the + domain has multiple levels of subdomain, such as "sub2.sub1.example.com", the + subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: url.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword +url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword +user.changes.domain: + dashed_name: user-changes-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.changes.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +user.changes.email: + dashed_name: user-changes-email + description: User email address. + flat_name: user.changes.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +user.changes.full_name: + dashed_name: user-changes-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.changes.full_name + level: extended + multi_fields: + - flat_name: user.changes.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +user.changes.group.domain: + dashed_name: user-changes-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.changes.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +user.changes.group.id: + dashed_name: user-changes-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.changes.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +user.changes.group.name: + dashed_name: user-changes-group-name + description: Name of the group. + flat_name: user.changes.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +user.changes.hash: + dashed_name: user-changes-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.changes.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +user.changes.id: + dashed_name: user-changes-id + description: Unique identifier of the user. + flat_name: user.changes.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +user.changes.name: + dashed_name: user-changes-name + description: Short name or login of the user. + example: albert + flat_name: user.changes.name + level: core + multi_fields: + - flat_name: user.changes.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +user.changes.roles: + dashed_name: user-changes-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.changes.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +user.domain: + dashed_name: user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the user is a member of. + type: keyword +user.effective.domain: + dashed_name: user-effective-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.effective.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +user.effective.email: + dashed_name: user-effective-email + description: User email address. + flat_name: user.effective.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +user.effective.full_name: + dashed_name: user-effective-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.effective.full_name + level: extended + multi_fields: + - flat_name: user.effective.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +user.effective.group.domain: + dashed_name: user-effective-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.effective.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +user.effective.group.id: + dashed_name: user-effective-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.effective.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +user.effective.group.name: + dashed_name: user-effective-group-name + description: Name of the group. + flat_name: user.effective.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +user.effective.hash: + dashed_name: user-effective-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.effective.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +user.effective.id: + dashed_name: user-effective-id + description: Unique identifier of the user. + flat_name: user.effective.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +user.effective.name: + dashed_name: user-effective-name + description: Short name or login of the user. + example: albert + flat_name: user.effective.name + level: core + multi_fields: + - flat_name: user.effective.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +user.effective.roles: + dashed_name: user-effective-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.effective.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +user.email: + dashed_name: user-email + description: User email address. + flat_name: user.email + level: extended + name: email + normalize: [] + short: User email address. + type: wildcard +user.full_name: + dashed_name: user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.full_name + level: extended + multi_fields: + - flat_name: user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + short: User's full name, if available. + type: wildcard +user.group.domain: + dashed_name: user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +user.group.id: + dashed_name: user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +user.group.name: + dashed_name: user-group-name + description: Name of the group. + flat_name: user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +user.hash: + dashed_name: user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +user.id: + dashed_name: user-id + description: Unique identifier of the user. + flat_name: user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of the user. + type: keyword +user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: wildcard +user.roles: + dashed_name: user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + short: Array of user roles at the time of the event. + type: keyword +user.target.domain: + dashed_name: user-target-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.target.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +user.target.email: + dashed_name: user-target-email + description: User email address. + flat_name: user.target.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard +user.target.full_name: + dashed_name: user-target-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.target.full_name + level: extended + multi_fields: + - flat_name: user.target.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard +user.target.group.domain: + dashed_name: user-target-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.target.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +user.target.group.id: + dashed_name: user-target-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.target.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +user.target.group.name: + dashed_name: user-target-group-name + description: Name of the group. + flat_name: user.target.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +user.target.hash: + dashed_name: user-target-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.target.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +user.target.id: + dashed_name: user-target-id + description: Unique identifier of the user. + flat_name: user.target.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +user.target.name: + dashed_name: user-target-name + description: Short name or login of the user. + example: albert + flat_name: user.target.name + level: core + multi_fields: + - flat_name: user.target.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard +user.target.roles: + dashed_name: user-target-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.target.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword +user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword +user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: wildcard +user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword +user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard +user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword +user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard +user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword +user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword +user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword +vulnerability.category: + dashed_name: vulnerability-category + description: 'The type of system or architecture that the vulnerability affects. + These may be platform-specific (for example, Debian or SUSE) or general (for example, + Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys + vulnerability categories]) + + This field must be an array.' + example: '["Firewall"]' + flat_name: vulnerability.category + ignore_above: 1024 + level: extended + name: category + normalize: + - array + short: Category of a vulnerability. + type: keyword +vulnerability.classification: + dashed_name: vulnerability-classification + description: The classification of the vulnerability scoring system. For example + (https://www.first.org/cvss/) + example: CVSS + flat_name: vulnerability.classification + ignore_above: 1024 + level: extended + name: classification + normalize: [] + short: Classification of the vulnerability. + type: keyword +vulnerability.description: + dashed_name: vulnerability-description + description: The description of the vulnerability that provides additional context + of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common + Vulnerabilities and Exposure CVE description]) + example: In macOS before 2.12.6, there is a vulnerability in the RPC... + flat_name: vulnerability.description + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: vulnerability.description.text + name: text + norms: false + type: text + name: description + normalize: [] + short: Description of the vulnerability. + type: keyword +vulnerability.enumeration: + dashed_name: vulnerability-enumeration + description: The type of identifier used for this vulnerability. For example (https://cve.mitre.org/about/) + example: CVE + flat_name: vulnerability.enumeration + ignore_above: 1024 + level: extended + name: enumeration + normalize: [] + short: Identifier of the vulnerability. + type: keyword +vulnerability.id: + dashed_name: vulnerability-id + description: The identification (ID) is the number portion of a vulnerability entry. + It includes a unique identification number for the vulnerability. For example + (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities + and Exposure CVE ID] + example: CVE-2019-00001 + flat_name: vulnerability.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: ID of the vulnerability. + type: keyword +vulnerability.reference: + dashed_name: vulnerability-reference + description: A resource that provides additional information, context, and mitigations + for the identified vulnerability. + example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 + flat_name: vulnerability.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Reference of the vulnerability. + type: keyword +vulnerability.report_id: + dashed_name: vulnerability-report-id + description: The report or scan identification number. + example: 20191018.0001 + flat_name: vulnerability.report_id + ignore_above: 1024 + level: extended + name: report_id + normalize: [] + short: Scan identification number. + type: keyword +vulnerability.scanner.vendor: + dashed_name: vulnerability-scanner-vendor + description: The name of the vulnerability scanner vendor. + example: Tenable + flat_name: vulnerability.scanner.vendor + ignore_above: 1024 + level: extended + name: scanner.vendor + normalize: [] + short: Name of the scanner vendor. + type: keyword +vulnerability.score.base: + dashed_name: vulnerability-score-base + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Base scores cover an assessment for exploitability metrics (attack vector, complexity, + privileges, and user interaction), impact metrics (confidentiality, integrity, + and availability), and scope. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + flat_name: vulnerability.score.base + level: extended + name: score.base + normalize: [] + short: Vulnerability Base score. + type: float +vulnerability.score.environmental: + dashed_name: vulnerability-score-environmental + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Environmental scores cover an assessment for any modified Base metrics, confidentiality, + integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + flat_name: vulnerability.score.environmental + level: extended + name: score.environmental + normalize: [] + short: Vulnerability Environmental score. + type: float +vulnerability.score.temporal: + dashed_name: vulnerability-score-temporal + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Temporal scores cover an assessment for code maturity, remediation level, and + confidence. For example (https://www.first.org/cvss/specification-document)' + flat_name: vulnerability.score.temporal + level: extended + name: score.temporal + normalize: [] + short: Vulnerability Temporal score. + type: float +vulnerability.score.version: + dashed_name: vulnerability-score-version + description: 'The National Vulnerability Database (NVD) provides qualitative severity + rankings of "Low", "Medium", and "High" for CVSS v2.0 base score ranges in addition + to the severity ratings for CVSS v3.0 as they are defined in the CVSS v3.0 specification. + + CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit organization, + whose mission is to help computer security incident response teams across the + world. For example (https://nvd.nist.gov/vuln-metrics/cvss)' + example: 2.0 + flat_name: vulnerability.score.version + ignore_above: 1024 + level: extended + name: score.version + normalize: [] + short: CVSS version. + type: keyword +vulnerability.severity: + dashed_name: vulnerability-severity + description: The severity of the vulnerability can help with metrics and internal + prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) + example: Critical + flat_name: vulnerability.severity + ignore_above: 1024 + level: extended + name: severity + normalize: [] + short: Severity of the vulnerability. + type: keyword diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml new file mode 100644 index 0000000000..1c40d63dfd --- /dev/null +++ b/experimental/generated/ecs/ecs_nested.yml @@ -0,0 +1,10663 @@ +agent: + description: 'The agent fields contain the data about the software entity, if any, + that collects, detects, or observes events on a host, or takes measurements on + a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields shall + be populated with details of the agent running on the host or observer where the + event happened or the measurement was taken.' + fields: + agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: wildcard + agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword + agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword + agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword + agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword + agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + group: 2 + name: agent + prefix: agent. + short: Fields about the monitoring agent. + title: Agent + type: group +as: + description: An autonomous system (AS) is a collection of connected Internet Protocol + (IP) routing prefixes under the control of one or more network operators on behalf + of a single administrative entity or domain that presents a common, clearly defined + routing policy to the internet. + fields: + as.number: + dashed_name: as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: as.number + level: extended + name: number + normalize: [] + short: Unique number allocated to the autonomous system. + type: long + as.organization.name: + dashed_name: as-organization-name + description: Organization name. + example: Google LLC + flat_name: as.organization.name + level: extended + multi_fields: + - flat_name: as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + short: Organization name. + type: wildcard + group: 2 + name: as + prefix: as. + reusable: + expected: + - as: as + at: client + full: client.as + - as: as + at: destination + full: destination.as + - as: as + at: server + full: server.as + - as: as + at: source + full: source.as + top_level: false + short: Fields describing an Autonomous System (Internet routing prefix). + title: Autonomous System + type: group +base: + description: The `base` field set contains all fields which are at the root of the + events. These fields are common across all types of events. + fields: + '@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date + labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object + message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be + concatenated to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text + tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword + group: 1 + name: base + prefix: '' + root: true + short: All fields defined directly at the root of the events. + title: Base + type: group +client: + description: 'A client is defined as the initiator of a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends the + SYN packet(s). For other protocols, the client is generally the initiator or requestor + in the network transaction. Some systems use the term "originator" to refer the + client in TCP connections. The client fields describe details about the system + acting as the client in the network event. Client fields are usually populated + in conjunction with server fields. Client fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword + client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard + client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long + client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + level: core + name: domain + normalize: [] + short: Client domain. + type: wildcard + client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip + client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword + client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip + client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long + client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long + client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long + client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: wildcard + client.subdomain: + dashed_name: client-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: client.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: client + nestings: + - client.as + - client.geo + - client.user + prefix: client. + reused_here: + - full: client.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: client.geo + schema_name: geo + short: Fields describing a location. + - full: client.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the client side of a network connection, used with server. + title: Client + type: group +cloud: + description: Fields related to the cloud or infrastructure the events are coming + from. + fields: + cloud.account.id: + dashed_name: cloud-account-id + description: 'The cloud account or organization id used to identify different + entities in a multi-tenant environment. + + Examples: AWS account id, Google Cloud ORG Id, or other unique identifier.' + example: 666777888999 + flat_name: cloud.account.id + ignore_above: 1024 + level: extended + name: account.id + normalize: [] + short: The cloud account or organization id. + type: keyword + cloud.account.name: + dashed_name: cloud-account-name + description: 'The cloud account name or alias used to identify different entities + in a multi-tenant environment. + + Examples: AWS account name, Google Cloud ORG display name.' + example: elastic-dev + flat_name: cloud.account.name + ignore_above: 1024 + level: extended + name: account.name + normalize: [] + short: The cloud account name. + type: keyword + cloud.availability_zone: + dashed_name: cloud-availability-zone + description: Availability zone in which this host is running. + example: us-east-1c + flat_name: cloud.availability_zone + ignore_above: 1024 + level: extended + name: availability_zone + normalize: [] + short: Availability zone in which this host is running. + type: keyword + cloud.instance.id: + dashed_name: cloud-instance-id + description: Instance ID of the host machine. + example: i-1234567890abcdef0 + flat_name: cloud.instance.id + ignore_above: 1024 + level: extended + name: instance.id + normalize: [] + short: Instance ID of the host machine. + type: keyword + cloud.instance.name: + dashed_name: cloud-instance-name + description: Instance name of the host machine. + flat_name: cloud.instance.name + ignore_above: 1024 + level: extended + name: instance.name + normalize: [] + short: Instance name of the host machine. + type: keyword + cloud.machine.type: + dashed_name: cloud-machine-type + description: Machine type of the host machine. + example: t2.medium + flat_name: cloud.machine.type + ignore_above: 1024 + level: extended + name: machine.type + normalize: [] + short: Machine type of the host machine. + type: keyword + cloud.project.id: + dashed_name: cloud-project-id + description: 'The cloud project identifier. + + Examples: Google Cloud Project id, Azure Project id.' + example: my-project + flat_name: cloud.project.id + ignore_above: 1024 + level: extended + name: project.id + normalize: [] + short: The cloud project id. + type: keyword + cloud.project.name: + dashed_name: cloud-project-name + description: 'The cloud project name. + + Examples: Google Cloud Project name, Azure Project name.' + example: my project + flat_name: cloud.project.name + ignore_above: 1024 + level: extended + name: project.name + normalize: [] + short: The cloud project name. + type: keyword + cloud.provider: + dashed_name: cloud-provider + description: Name of the cloud provider. Example values are aws, azure, gcp, + or digitalocean. + example: aws + flat_name: cloud.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Name of the cloud provider. + type: keyword + cloud.region: + dashed_name: cloud-region + description: Region in which this host is running. + example: us-east-1 + flat_name: cloud.region + ignore_above: 1024 + level: extended + name: region + normalize: [] + short: Region in which this host is running. + type: keyword + footnote: 'Examples: If Metricbeat is running on an EC2 host and fetches data from + its host, the cloud info contains the data about this machine. If Metricbeat runs + on a remote machine outside the cloud and fetches data from a service running + in the cloud, the field contains cloud data from the machine the service is running + on.' + group: 2 + name: cloud + prefix: cloud. + short: Fields about the cloud resource. + title: Cloud + type: group +code_signature: + description: These fields contain information about binary code signatures. + fields: + code_signature.exists: + dashed_name: code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: code_signature.exists + level: core + name: exists + normalize: [] + short: Boolean to capture if a signature is present. + type: boolean + code_signature.status: + dashed_name: code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + short: Additional information about the certificate status. + type: keyword + code_signature.subject_name: + dashed_name: code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + short: Subject name of the code signer + type: keyword + code_signature.trusted: + dashed_name: code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + flat_name: code_signature.trusted + level: extended + name: trusted + normalize: [] + short: Stores the trust status of the certificate chain. + type: boolean + code_signature.valid: + dashed_name: code-signature-valid + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: code_signature.valid + level: extended + name: valid + normalize: [] + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean + group: 2 + name: code_signature + prefix: code_signature. + reusable: + expected: + - as: code_signature + at: file + full: file.code_signature + - as: code_signature + at: process + full: process.code_signature + - as: code_signature + at: dll + full: dll.code_signature + top_level: false + short: These fields contain information about binary code signatures. + title: Code Signature + type: group +container: + description: 'Container fields are used for meta information about the specific + container that is the source of information. + + These fields help correlate data based containers from any runtime.' + fields: + container.id: + dashed_name: container-id + description: Unique container id. + flat_name: container.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique container id. + type: keyword + container.image.name: + dashed_name: container-image-name + description: Name of the image the container was built on. + flat_name: container.image.name + ignore_above: 1024 + level: extended + name: image.name + normalize: [] + short: Name of the image the container was built on. + type: keyword + container.image.tag: + dashed_name: container-image-tag + description: Container image tags. + flat_name: container.image.tag + ignore_above: 1024 + level: extended + name: image.tag + normalize: + - array + short: Container image tags. + type: keyword + container.labels: + dashed_name: container-labels + description: Image labels. + flat_name: container.labels + level: extended + name: labels + normalize: [] + object_type: keyword + short: Image labels. + type: object + container.name: + dashed_name: container-name + description: Container name. + flat_name: container.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Container name. + type: keyword + container.runtime: + dashed_name: container-runtime + description: Runtime managing this container. + example: docker + flat_name: container.runtime + ignore_above: 1024 + level: extended + name: runtime + normalize: [] + short: Runtime managing this container. + type: keyword + group: 2 + name: container + prefix: container. + short: Fields describing the container that generated this event. + title: Container + type: group +destination: + description: 'Destination fields capture details about the receiver of a network + exchange/packet. These fields are populated from a network event, packet, or other + event containing details of a network transaction. + + Destination fields are usually populated in conjunction with source fields. The + source and destination fields are considered the baseline and should always be + filled if an event contains source and destination details from a network transaction. + If the event also contains identification of the client and server roles, then + the client and server fields should also be populated.' + fields: + destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword + destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard + destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long + destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + level: core + name: domain + normalize: [] + short: Destination domain. + type: wildcard + destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip + destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword + destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip + destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long + destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long + destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long + destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: wildcard + destination.subdomain: + dashed_name: destination-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: destination.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: destination + nestings: + - destination.as + - destination.geo + - destination.user + prefix: destination. + reused_here: + - full: destination.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: destination.geo + schema_name: geo + short: Fields describing a location. + - full: destination.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the destination side of a network connection, used with source. + title: Destination + type: group +dll: + description: 'These fields contain information about code libraries dynamically + loaded into processes. + + + Many operating systems refer to "shared code libraries" with different names, + but this field set refers to all of the following: + + * Dynamic-link library (`.dll`) commonly used on Windows + + * Shared Object (`.so`) commonly used on Unix-like operating systems + + * Dynamic library (`.dylib`) commonly used on macOS' + fields: + dll.code_signature.exists: + dashed_name: dll-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: dll.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean + dll.code_signature.status: + dashed_name: dll-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: dll.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword + dll.code_signature.subject_name: + dashed_name: dll-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: dll.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword + dll.code_signature.trusted: + dashed_name: dll-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + flat_name: dll.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean + dll.code_signature.valid: + dashed_name: dll-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: dll.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean + dll.hash.md5: + dashed_name: dll-hash-md5 + description: MD5 hash. + flat_name: dll.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword + dll.hash.sha1: + dashed_name: dll-hash-sha1 + description: SHA1 hash. + flat_name: dll.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword + dll.hash.sha256: + dashed_name: dll-hash-sha256 + description: SHA256 hash. + flat_name: dll.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword + dll.hash.sha512: + dashed_name: dll-hash-sha512 + description: SHA512 hash. + flat_name: dll.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword + dll.name: + dashed_name: dll-name + description: 'Name of the library. + + This generally maps to the name of the file on disk.' + example: kernel32.dll + flat_name: dll.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the library. + type: keyword + dll.path: + dashed_name: dll-path + description: Full file path of the library. + example: C:\Windows\System32\kernel32.dll + flat_name: dll.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Full file path of the library. + type: keyword + dll.pe.architecture: + dashed_name: dll-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: dll.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword + dll.pe.company: + dashed_name: dll-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: dll.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword + dll.pe.description: + dashed_name: dll-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: dll.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword + dll.pe.file_version: + dashed_name: dll-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: dll.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword + dll.pe.imphash: + dashed_name: dll-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: dll.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword + dll.pe.original_file_name: + dashed_name: dll-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: dll.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard + dll.pe.product: + dashed_name: dll-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: dll.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword + group: 2 + name: dll + nestings: + - dll.code_signature + - dll.hash + - dll.pe + prefix: dll. + reused_here: + - full: dll.code_signature + schema_name: code_signature + short: These fields contain information about binary code signatures. + - full: dll.hash + schema_name: hash + short: Hashes, usually file hashes. + - full: dll.pe + schema_name: pe + short: These fields contain Windows Portable Executable (PE) metadata. + short: These fields contain information about code libraries dynamically loaded + into processes. + title: DLL + type: group +dns: + description: 'Fields describing DNS queries and answers. + + DNS events should either represent a single DNS query prior to getting answers + (`dns.type:query`) or they should represent a full exchange and contain the query + details as well as all of the answers that were provided for this query (`dns.type:answer`).' + fields: + dns.answers.class: + dashed_name: dns-answers-class + description: The class of DNS data contained in this resource record. + example: IN + flat_name: dns.answers.class + ignore_above: 1024 + level: extended + name: answers.class + normalize: [] + short: The class of DNS data contained in this resource record. + type: keyword + dns.answers.data: + dashed_name: dns-answers-data + description: 'The data describing the resource. + + The meaning of this data depends on the type and class of the resource record.' + example: 10.10.10.10 + flat_name: dns.answers.data + level: extended + name: answers.data + normalize: [] + short: The data describing the resource. + type: wildcard + dns.answers.name: + dashed_name: dns-answers-name + description: 'The domain name to which this resource record pertains. + + If a chain of CNAME is being resolved, each answer''s `name` should be the + one that corresponds with the answer''s `data`. It should not simply be the + original `question.name` repeated.' + example: www.example.com + flat_name: dns.answers.name + ignore_above: 1024 + level: extended + name: answers.name + normalize: [] + short: The domain name to which this resource record pertains. + type: keyword + dns.answers.ttl: + dashed_name: dns-answers-ttl + description: The time interval in seconds that this resource record may be cached + before it should be discarded. Zero values mean that the data should not be + cached. + example: 180 + flat_name: dns.answers.ttl + level: extended + name: answers.ttl + normalize: [] + short: The time interval in seconds that this resource record may be cached + before it should be discarded. + type: long + dns.answers.type: + dashed_name: dns-answers-type + description: The type of data contained in this resource record. + example: CNAME + flat_name: dns.answers.type + ignore_above: 1024 + level: extended + name: answers.type + normalize: [] + short: The type of data contained in this resource record. + type: keyword + dns.header_flags: + dashed_name: dns-header-flags + description: 'Array of 2 letter DNS header flags. + + Expected values are: AA, TC, RD, RA, AD, CD, DO.' + example: '["RD", "RA"]' + flat_name: dns.header_flags + ignore_above: 1024 + level: extended + name: header_flags + normalize: + - array + short: Array of DNS header flags. + type: keyword + dns.id: + dashed_name: dns-id + description: The DNS packet identifier assigned by the program that generated + the query. The identifier is copied to the response. + example: 62111 + flat_name: dns.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: The DNS packet identifier assigned by the program that generated the + query. The identifier is copied to the response. + type: keyword + dns.op_code: + dashed_name: dns-op-code + description: The DNS operation code that specifies the kind of query in the + message. This value is set by the originator of a query and copied into the + response. + example: QUERY + flat_name: dns.op_code + ignore_above: 1024 + level: extended + name: op_code + normalize: [] + short: The DNS operation code that specifies the kind of query in the message. + type: keyword + dns.question.class: + dashed_name: dns-question-class + description: The class of records being queried. + example: IN + flat_name: dns.question.class + ignore_above: 1024 + level: extended + name: question.class + normalize: [] + short: The class of records being queried. + type: keyword + dns.question.name: + dashed_name: dns-question-name + description: 'The name being queried. + + If the name field contains non-printable characters (below 32 or above 126), + those characters should be represented as escaped base 10 integers (\DDD). + Back slashes and quotes should be escaped. Tabs, carriage returns, and line + feeds should be converted to \t, \r, and \n respectively.' + example: www.example.com + flat_name: dns.question.name + level: extended + name: question.name + normalize: [] + short: The name being queried. + type: wildcard + dns.question.registered_domain: + dashed_name: dns-question-registered-domain + description: 'The highest registered domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: dns.question.registered_domain + ignore_above: 1024 + level: extended + name: question.registered_domain + normalize: [] + short: The highest registered domain, stripped of the subdomain. + type: keyword + dns.question.subdomain: + dashed_name: dns-question-subdomain + description: 'The subdomain is all of the labels under the registered_domain. + + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: www + flat_name: dns.question.subdomain + ignore_above: 1024 + level: extended + name: question.subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + dns.question.top_level_domain: + dashed_name: dns-question-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: dns.question.top_level_domain + ignore_above: 1024 + level: extended + name: question.top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + dns.question.type: + dashed_name: dns-question-type + description: The type of record being queried. + example: AAAA + flat_name: dns.question.type + ignore_above: 1024 + level: extended + name: question.type + normalize: [] + short: The type of record being queried. + type: keyword + dns.resolved_ip: + dashed_name: dns-resolved-ip + description: 'Array containing all IPs seen in `answers.data`. + + The `answers` array can be difficult to use, because of the variety of data + formats it can contain. Extracting all IP addresses seen in there to `dns.resolved_ip` + makes it possible to index them as IP addresses, and makes them easier to + visualize and query for.' + example: '["10.10.10.10", "10.10.10.11"]' + flat_name: dns.resolved_ip + level: extended + name: resolved_ip + normalize: + - array + short: Array containing all IPs seen in answers.data + type: ip + dns.response_code: + dashed_name: dns-response-code + description: The DNS response code. + example: NOERROR + flat_name: dns.response_code + ignore_above: 1024 + level: extended + name: response_code + normalize: [] + short: The DNS response code. + type: keyword + dns.type: + dashed_name: dns-type + description: 'The type of DNS event captured, query or answer. + + If your source of DNS events only gives you DNS queries, you should only create + dns events of type `dns.type:query`. + + If your source of DNS events gives you answers as well, you should create + one event per query (optionally as soon as the query is seen). And a second + event containing all query details as well as an array of answers.' + example: answer + flat_name: dns.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: The type of DNS event captured, query or answer. + type: keyword + group: 2 + name: dns + prefix: dns. + short: Fields describing DNS queries and answers. + title: DNS + type: group +ecs: + description: Meta-information specific to ECS. + fields: + ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword + group: 2 + name: ecs + prefix: ecs. + short: Meta-information specific to ECS. + title: ECS + type: group +error: + description: 'These fields can represent errors of any kind. + + Use them for errors that happen while fetching events or in cases where the event + itself contains an error.' + fields: + error.code: + dashed_name: error-code + description: Error code describing the error. + flat_name: error.code + ignore_above: 1024 + level: core + name: code + normalize: [] + short: Error code describing the error. + type: keyword + error.id: + dashed_name: error-id + description: Unique identifier for the error. + flat_name: error.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier for the error. + type: keyword + error.message: + dashed_name: error-message + description: Error message. + flat_name: error.message + level: core + name: message + normalize: [] + norms: false + short: Error message. + type: text + error.stack_trace: + dashed_name: error-stack-trace + description: The stack trace of this error in plain text. + flat_name: error.stack_trace + index: true + level: extended + multi_fields: + - flat_name: error.stack_trace.text + name: text + norms: false + type: text + name: stack_trace + normalize: [] + short: The stack trace of this error in plain text. + type: wildcard + error.type: + dashed_name: error-type + description: The type of the error, for example the class name of the exception. + example: java.lang.NullPointerException + flat_name: error.type + level: extended + name: type + normalize: [] + short: The type of the error, for example the class name of the exception. + type: wildcard + group: 2 + name: error + prefix: error. + short: Fields about errors of any kind. + title: Error + type: group +event: + description: 'The event fields are used for context information about the log or + metric event itself. + + A log is defined as an event containing details of something that happened. Log + events must include the time at which the thing happened. Examples of log events + include a process starting on a host, a network packet being sent from a source + to a destination, or a network connection between a client and a server being + initiated or closed. A metric is defined as an event containing one or more numerical + measurements and the time at which the measurement was taken. Examples of metric + events include memory pressure measured on a host and device temperature. See + the `event.kind` definition in this section for additional details about metric + and state events.' + fields: + event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword + event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh + logs. Visualize and analyze events in this category to look for failed logins, + and other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: 'Events in the configuration category have to deal with creating, + modifying, or deleting the settings or parameters of an application, process, + or system. + + Example sources include security policy change logs, configuration auditing + logging, and system integrity monitoring.' + expected_event_types: + - access + - change + - creation + - deletion + - info + name: configuration + - description: The database category denotes events and metrics relating to + a data storage and retrieval system. Note that use of this category is not + limited to relational database systems. Examples include event logs from + MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize + and analyze database activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system + device drivers and similar software entities such as Windows drivers, kernel + extensions, kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or + has existed on a filesystem. Use this category of events to visualize and + analyze the creation, access, and deletions of files. Events in this category + can come from both host-based and network-based sources. An example source + of a network-based detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such + as host inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can + also be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is + not meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, + groups, and administration. Use this category to visualize and analyze IAM-related + logs and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze + intrusion detection alerts from systems such as Snort, Suricata, and Palo + Alto threat detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS + systems such as Suricata, or other sources of malware-related events such + as Palo Alto Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection + lifecycle, network traffic, and essentially any event that includes an IP + address. Many events containing decoded network protocol transactions fit + into this category. Use events in this category to visualize or analyze + counts of network ports, protocols, addresses, geolocation information, + etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, + or to determine host vulnerability in the absence of vulnerability scan + data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a + dashboard of web server/proxy activity from apache, IIS, nginx web servers, + etc. Note: events from network observers such as Zeek http log may also + be included in this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the + second level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process + activity. This field is closely related to `event.type`, which is used as + a subcategory. + + This field is an array. This will allow proper categorization of some events + that fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword + event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is + the Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword + event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date + event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes + from. + + It''s recommended but not required to start the dataset name with the module + name, followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword + event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long + event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity + was last observed. + type: date + event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword + event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword + event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date + event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, + intrusion detection systems, endpoint detection and response systems, and + so on.' + name: alert + - description: This value is the most general and most common value for this + field. It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once + every few seconds, or once a minute, but can also be used to describe ad-hoc + numeric metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state + of a host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard + (compliant, not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the + more general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once + every few seconds, once a minute, once an hour, or once a day, but can also + be used to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful + happened and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the + highest level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the + event contains, without being specific to the contents of the event. For example, + values of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, + it may also help understand whether the data coming in at a regular interval + or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword + event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain + the name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword + event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: wildcard + event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common + example is `event.category:file AND event.type:access AND event.outcome:failure` + to indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which + the result is unknown from the perspective of the event producer. For example, + if the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome + doesn't make logical sense for the event. In such cases `event.outcome` + should not be populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the + lowest level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a + failure from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each + event may populate different values of `event.outcome`, according to their + perspective. + + Also note that in the case of a compound event (a single event that contains + multiple logical events), this field should be populated with the value that + best captures the overall success or failure from the perspective of the event + producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the + hierarchy. + type: keyword + event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention + the source of an event. It can be the name of the software that generated + the event (e.g. Sysmon, httpd), or of a subsystem of the operating system + (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword + event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword + event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword + event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your + system's original value here. + type: float + event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float + event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the + exact ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long + event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and + use cases. It''s up to the implementer to make sure severities are consistent + across events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` + is meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long + event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the + activity was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date + event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword + event.type: + allowed_values: + - description: The access event type is used for the subset of events within + a category that indicate that something was accessed. Common examples include + `event.category:database AND event.type:access`, or `event.category:file + AND event.type:access`. Note for file access, both directory listings and + file opens should be included in this subcategory. You can further distinguish + access operations using the ECS `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within + a category that are related to admin objects. For example, administrative + changes within an IAM framework that do not specifically affect a user or + group (e.g., adding new applications to a federation solution or connecting + discrete forests in Active Directory) would fall into this subcategory. + Common example: `event.category:iam AND event.type:change AND event.type:admin`. + You can further distinguish admin operations using the ECS `event.action` + field.' + name: admin + - description: The allowed event type is used for the subset of events within + a category that indicate that something was allowed. Common examples include + `event.category:network AND event.type:connection AND event.type:allowed` + (to indicate a network firewall event for which the firewall disposition + was to allow the connection to complete) and `event.category:intrusion_detection + AND event.type:allowed` (to indicate a network intrusion prevention system + event for which the IPS disposition was to allow the connection to complete). + You can further distinguish allowed operations using the ECS `event.action` + field, populating with values of your choosing, such as "allow", "detect", + or "pass". + name: allowed + - description: The change event type is used for the subset of events within + a category that indicate that something has changed. If semantics best describe + an event as modified, then include them in this subcategory. Common examples + include `event.category:process AND event.type:change`, and `event.category:file + AND event.type:change`. You can further distinguish change operations using + the ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used + for the subset of network traffic that includes sufficient information for + the event to be included in flow or connection analysis. Events in this + subcategory will contain at least source and destination IP addresses, source + and destination TCP/UDP ports, and will usually contain counts of bytes + and/or packets transferred. Events in this subcategory may contain unidirectional + or bidirectional information, including summary information. Use this subcategory + to visualize and analyze network connections. Flow analysis, including Netflow, + IPFIX, and other flow-related events fit in this subcategory. Note that + firewall events from many Next-Generation Firewall (NGFW) devices will also + fit into this subcategory. A common filter for flow/connection information + would be `event.category:network AND event.type:connection AND event.type:end` + (to view or analyze all completed network connections, ignoring mid-flow + reports). You can further distinguish connection events using the ECS `event.action` + field, populating with values of your choosing, such as "timeout", or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is + `event.category:file AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within + a category that indicate that something was deleted. A common example is + `event.category:file AND event.type:deletion` to indicate that a file has + been deleted. + name: deletion + - description: The denied event type is used for the subset of events within + a category that indicate that something was denied. Common examples include + `event.category:network AND event.type:denied` (to indicate a network firewall + event for which the firewall disposition was to deny the connection) and + `event.category:intrusion_detection AND event.type:denied` (to indicate + a network intrusion prevention system event for which the IPS disposition + was to deny the connection to complete). You can further distinguish denied + operations using the ECS `event.action` field, populating with values of + your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a + category that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within + a category that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they + should use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within + a category that are related to group objects. Common example: `event.category:iam + AND event.type:creation AND event.type:group`. You can further distinguish + group operations using the ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a + category that indicate that they are purely informational, and don't report + a state change, or any type of action. For example, an initial run of a + file integrity monitoring system (FIM), where an agent reports all files + under management, would fall into the "info" subcategory. Similarly, an + event containing a dump of all currently running processes (as opposed to + reporting that a process started/ended) would fall into the "info" subcategory. + An additional common examples is `event.category:intrusion_detection AND + event.type:info`. + name: info + - description: The installation event type is used for the subset of events + within a category that indicate that something was installed. A common example + is `event.category:package` AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within + a category that indicate that they contain protocol details or analysis, + beyond simply identifying the protocol. Generally, network events that contain + specific protocol details will fall into this subcategory. A common example + is `event.category:network AND event.type:protocol AND event.type:connection + AND event.type:end` (to indicate that the event is a network connection + event sent at the end of a connection that also includes a protocol detail + breakdown). Note that events that only indicate the name or id of the protocol + should not use the protocol value. Further note that when the protocol subcategory + is used, the identified protocol is populated in the ECS `network.protocol` + field. + name: protocol + - description: The start event type is used for the subset of events within + a category that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within + a category that are related to user objects. Common example: `event.category:iam + AND event.type:deletion AND event.type:user`. You can further distinguish + user operations using the ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the + third level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along + with the `event.category` field values, enables filtering events down to a + level appropriate for single visualization. + + This field is an array. This will allow proper categorization of some events + that fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword + event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of + this event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword + group: 2 + name: event + prefix: event. + short: Fields breaking down the event details. + title: Event + type: group +file: + description: 'A file is defined as a set of information that has been created on, + or has existed on a filesystem. + + File objects can be associated with host events, network events, and/or file events + (e.g., those produced by File Integrity Monitoring [FIM] products or services). + File fields provide details about the affected file associated with the event + or metric.' + fields: + file.accessed: + dashed_name: file-accessed + description: 'Last time the file was accessed. + + Note that not all filesystems keep track of access time.' + flat_name: file.accessed + level: extended + name: accessed + normalize: [] + short: Last time the file was accessed. + type: date + file.attributes: + dashed_name: file-attributes + description: 'Array of file attributes. + + Attributes names will vary by platform. Here''s a non-exhaustive list of values + that are expected in this field: archive, compressed, directory, encrypted, + execute, hidden, read, readonly, system, write.' + example: '["readonly", "system"]' + flat_name: file.attributes + ignore_above: 1024 + level: extended + name: attributes + normalize: + - array + short: Array of file attributes. + type: keyword + file.code_signature.exists: + dashed_name: file-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: file.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean + file.code_signature.status: + dashed_name: file-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: file.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword + file.code_signature.subject_name: + dashed_name: file-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: file.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword + file.code_signature.trusted: + dashed_name: file-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + flat_name: file.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean + file.code_signature.valid: + dashed_name: file-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: file.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean + file.created: + dashed_name: file-created + description: 'File creation time. + + Note that not all filesystems store the creation time.' + flat_name: file.created + level: extended + name: created + normalize: [] + short: File creation time. + type: date + file.ctime: + dashed_name: file-ctime + description: 'Last time the file attributes or metadata changed. + + Note that changes to the file content will update `mtime`. This implies `ctime` + will be adjusted at the same time, since `mtime` is an attribute of the file.' + flat_name: file.ctime + level: extended + name: ctime + normalize: [] + short: Last time the file attributes or metadata changed. + type: date + file.device: + dashed_name: file-device + description: Device that is the source of the file. + example: sda + flat_name: file.device + ignore_above: 1024 + level: extended + name: device + normalize: [] + short: Device that is the source of the file. + type: keyword + file.directory: + dashed_name: file-directory + description: Directory where the file is located. It should include the drive + letter, when appropriate. + example: /home/alice + flat_name: file.directory + level: extended + name: directory + normalize: [] + short: Directory where the file is located. + type: wildcard + file.drive_letter: + dashed_name: file-drive-letter + description: 'Drive letter where the file is located. This field is only relevant + on Windows. + + The value should be uppercase, and not include the colon.' + example: C + flat_name: file.drive_letter + ignore_above: 1 + level: extended + name: drive_letter + normalize: [] + short: Drive letter where the file is located. + type: keyword + file.extension: + dashed_name: file-extension + description: File extension. + example: png + flat_name: file.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension. + type: keyword + file.gid: + dashed_name: file-gid + description: Primary group ID (GID) of the file. + example: '1001' + flat_name: file.gid + ignore_above: 1024 + level: extended + name: gid + normalize: [] + short: Primary group ID (GID) of the file. + type: keyword + file.group: + dashed_name: file-group + description: Primary group name of the file. + example: alice + flat_name: file.group + ignore_above: 1024 + level: extended + name: group + normalize: [] + short: Primary group name of the file. + type: keyword + file.hash.md5: + dashed_name: file-hash-md5 + description: MD5 hash. + flat_name: file.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword + file.hash.sha1: + dashed_name: file-hash-sha1 + description: SHA1 hash. + flat_name: file.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword + file.hash.sha256: + dashed_name: file-hash-sha256 + description: SHA256 hash. + flat_name: file.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword + file.hash.sha512: + dashed_name: file-hash-sha512 + description: SHA512 hash. + flat_name: file.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword + file.inode: + dashed_name: file-inode + description: Inode representing the file in the filesystem. + example: '256383' + flat_name: file.inode + ignore_above: 1024 + level: extended + name: inode + normalize: [] + short: Inode representing the file in the filesystem. + type: keyword + file.mime_type: + dashed_name: file-mime-type + description: MIME type should identify the format of the file or stream of bytes + using https://www.iana.org/assignments/media-types/media-types.xhtml[IANA + official types], where possible. When more than one type is applicable, the + most specific type should be used. + flat_name: file.mime_type + ignore_above: 1024 + level: extended + name: mime_type + normalize: [] + short: Media type of file, document, or arrangement of bytes. + type: keyword + file.mode: + dashed_name: file-mode + description: Mode of the file in octal representation. + example: '0640' + flat_name: file.mode + ignore_above: 1024 + level: extended + name: mode + normalize: [] + short: Mode of the file in octal representation. + type: keyword + file.mtime: + dashed_name: file-mtime + description: Last time the file content was modified. + flat_name: file.mtime + level: extended + name: mtime + normalize: [] + short: Last time the file content was modified. + type: date + file.name: + dashed_name: file-name + description: Name of the file including the extension, without the directory. + example: example.png + flat_name: file.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the file including the extension, without the directory. + type: keyword + file.owner: + dashed_name: file-owner + description: File owner's username. + example: alice + flat_name: file.owner + ignore_above: 1024 + level: extended + name: owner + normalize: [] + short: File owner's username. + type: keyword + file.path: + dashed_name: file-path + description: Full path to the file, including the file name. It should include + the drive letter, when appropriate. + example: /home/alice/example.png + flat_name: file.path + level: extended + multi_fields: + - flat_name: file.path.text + name: text + norms: false + type: text + name: path + normalize: [] + short: Full path to the file, including the file name. + type: wildcard + file.pe.architecture: + dashed_name: file-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: file.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword + file.pe.company: + dashed_name: file-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: file.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword + file.pe.description: + dashed_name: file-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: file.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword + file.pe.file_version: + dashed_name: file-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: file.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword + file.pe.imphash: + dashed_name: file-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: file.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword + file.pe.original_file_name: + dashed_name: file-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: file.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard + file.pe.product: + dashed_name: file-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: file.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword + file.size: + dashed_name: file-size + description: 'File size in bytes. + + Only relevant when `file.type` is "file".' + example: 16384 + flat_name: file.size + level: extended + name: size + normalize: [] + short: File size in bytes. + type: long + file.target_path: + dashed_name: file-target-path + description: Target path for symlinks. + flat_name: file.target_path + level: extended + multi_fields: + - flat_name: file.target_path.text + name: text + norms: false + type: text + name: target_path + normalize: [] + short: Target path for symlinks. + type: wildcard + file.type: + dashed_name: file-type + description: File type (file, dir, or symlink). + example: file + flat_name: file.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: File type (file, dir, or symlink). + type: keyword + file.uid: + dashed_name: file-uid + description: The user ID (UID) or security identifier (SID) of the file owner. + example: '1001' + flat_name: file.uid + ignore_above: 1024 + level: extended + name: uid + normalize: [] + short: The user ID (UID) or security identifier (SID) of the file owner. + type: keyword + file.x509.alternative_names: + dashed_name: file-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + flat_name: file.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword + file.x509.issuer.common_name: + dashed_name: file-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: file.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword + file.x509.issuer.country: + dashed_name: file-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: file.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword + file.x509.issuer.distinguished_name: + dashed_name: file-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: file.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard + file.x509.issuer.locality: + dashed_name: file-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: file.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + file.x509.issuer.organization: + dashed_name: file-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: file.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword + file.x509.issuer.organizational_unit: + dashed_name: file-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: file.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword + file.x509.issuer.state_or_province: + dashed_name: file-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: file.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + file.x509.not_after: + dashed_name: file-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: file.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date + file.x509.not_before: + dashed_name: file-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: file.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date + file.x509.public_key_algorithm: + dashed_name: file-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: file.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword + file.x509.public_key_curve: + dashed_name: file-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + flat_name: file.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword + file.x509.public_key_exponent: + dashed_name: file-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: file.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long + file.x509.public_key_size: + dashed_name: file-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: file.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long + file.x509.serial_number: + dashed_name: file-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: file.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword + file.x509.signature_algorithm: + dashed_name: file-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: file.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword + file.x509.subject.common_name: + dashed_name: file-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: file.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword + file.x509.subject.country: + dashed_name: file-x509-subject-country + description: List of country (C) code + example: US + flat_name: file.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword + file.x509.subject.distinguished_name: + dashed_name: file-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: file.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard + file.x509.subject.locality: + dashed_name: file-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: file.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + file.x509.subject.organization: + dashed_name: file-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: file.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword + file.x509.subject.organizational_unit: + dashed_name: file-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: file.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword + file.x509.subject.state_or_province: + dashed_name: file-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: file.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + file.x509.version_number: + dashed_name: file-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: file.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword + group: 2 + name: file + nestings: + - file.code_signature + - file.hash + - file.pe + - file.x509 + prefix: file. + reused_here: + - full: file.code_signature + schema_name: code_signature + short: These fields contain information about binary code signatures. + - full: file.hash + schema_name: hash + short: Hashes, usually file hashes. + - full: file.pe + schema_name: pe + short: These fields contain Windows Portable Executable (PE) metadata. + - full: file.x509 + schema_name: x509 + short: These fields contain x509 certificate metadata. + short: Fields describing files. + title: File + type: group +geo: + description: 'Geo fields can carry data about a specific location related to an + event. + + This geolocation information can be derived from techniques such as Geo IP, or + be user-supplied.' + fields: + geo.city_name: + dashed_name: geo-city-name + description: City name. + example: Montreal + flat_name: geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + short: City name. + type: keyword + geo.continent_name: + dashed_name: geo-continent-name + description: Name of the continent. + example: North America + flat_name: geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + short: Name of the continent. + type: keyword + geo.country_iso_code: + dashed_name: geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + short: Country ISO code. + type: keyword + geo.country_name: + dashed_name: geo-country-name + description: Country name. + example: Canada + flat_name: geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + short: Country name. + type: keyword + geo.location: + dashed_name: geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: geo.location + level: core + name: location + normalize: [] + short: Longitude and latitude. + type: geo_point + geo.name: + dashed_name: geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: geo.name + level: extended + name: name + normalize: [] + short: User-defined description of a location. + type: wildcard + geo.region_iso_code: + dashed_name: geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + short: Region ISO code. + type: keyword + geo.region_name: + dashed_name: geo-region-name + description: Region name. + example: Quebec + flat_name: geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + short: Region name. + type: keyword + group: 2 + name: geo + prefix: geo. + reusable: + expected: + - as: geo + at: client + full: client.geo + - as: geo + at: destination + full: destination.geo + - as: geo + at: observer + full: observer.geo + - as: geo + at: host + full: host.geo + - as: geo + at: server + full: server.geo + - as: geo + at: source + full: source.geo + top_level: false + short: Fields describing a location. + title: Geo + type: group +group: + description: The group fields are meant to represent groups that are relevant to + the event. + fields: + group.domain: + dashed_name: group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the group is a member of. + type: keyword + group.id: + dashed_name: group-id + description: Unique identifier for the group on the system/platform. + flat_name: group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Unique identifier for the group on the system/platform. + type: keyword + group.name: + dashed_name: group-name + description: Name of the group. + flat_name: group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the group. + type: keyword + group: 2 + name: group + prefix: group. + reusable: + expected: + - as: group + at: user + full: user.group + top_level: true + short: User's group relevant to the event. + title: Group + type: group +hash: + description: 'The hash fields represent different hash algorithms and their values. + + Field names for common hashes (e.g. MD5, SHA1) are predefined. Add fields for + other hashes by lowercasing the hash algorithm name and using underscore separators + as appropriate (snake case, e.g. sha3_512).' + fields: + hash.md5: + dashed_name: hash-md5 + description: MD5 hash. + flat_name: hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + short: MD5 hash. + type: keyword + hash.sha1: + dashed_name: hash-sha1 + description: SHA1 hash. + flat_name: hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + short: SHA1 hash. + type: keyword + hash.sha256: + dashed_name: hash-sha256 + description: SHA256 hash. + flat_name: hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + short: SHA256 hash. + type: keyword + hash.sha512: + dashed_name: hash-sha512 + description: SHA512 hash. + flat_name: hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + short: SHA512 hash. + type: keyword + group: 2 + name: hash + prefix: hash. + reusable: + expected: + - as: hash + at: file + full: file.hash + - as: hash + at: process + full: process.hash + - as: hash + at: dll + full: dll.hash + top_level: false + short: Hashes, usually file hashes. + title: Hash + type: group +host: + description: 'A host is defined as a general computing instance. + + ECS host.* fields should be populated with details about the host on which the + event happened, or from which the measurement was taken. Host types include hardware, + virtual machines, Docker containers, and Kubernetes nodes.' + fields: + host.architecture: + dashed_name: host-architecture + description: Operating system architecture. + example: x86_64 + flat_name: host.architecture + ignore_above: 1024 + level: core + name: architecture + normalize: [] + short: Operating system architecture. + type: keyword + host.domain: + dashed_name: host-domain + description: 'Name of the domain of which the host is a member. + + For example, on Windows this could be the host''s Active Directory domain + or NetBIOS domain name. For Linux this could be the domain of the host''s + LDAP provider.' + example: CONTOSO + flat_name: host.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the group is a member of. + type: keyword + host.geo.city_name: + dashed_name: host-geo-city-name + description: City name. + example: Montreal + flat_name: host.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + host.geo.continent_name: + dashed_name: host-geo-continent-name + description: Name of the continent. + example: North America + flat_name: host.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + host.geo.country_iso_code: + dashed_name: host-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: host.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + host.geo.country_name: + dashed_name: host-geo-country-name + description: Country name. + example: Canada + flat_name: host.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + host.geo.location: + dashed_name: host-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: host.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + host.geo.name: + dashed_name: host-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: host.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + host.geo.region_iso_code: + dashed_name: host-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: host.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + host.geo.region_name: + dashed_name: host-geo-region-name + description: Region name. + example: Quebec + flat_name: host.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + host.hostname: + dashed_name: host-hostname + description: 'Hostname of the host. + + It normally contains what the `hostname` command returns on the host machine.' + flat_name: host.hostname + level: core + name: hostname + normalize: [] + short: Hostname of the host. + type: wildcard + host.id: + dashed_name: host-id + description: 'Unique host id. + + As hostname is not always unique, use values that are meaningful in your environment. + + Example: The current usage of `beat.name`.' + flat_name: host.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique host id. + type: keyword + host.ip: + dashed_name: host-ip + description: Host ip addresses. + flat_name: host.ip + level: core + name: ip + normalize: + - array + short: Host ip addresses. + type: ip + host.mac: + dashed_name: host-mac + description: Host mac addresses. + flat_name: host.mac + ignore_above: 1024 + level: core + name: mac + normalize: + - array + short: Host mac addresses. + type: keyword + host.name: + dashed_name: host-name + description: 'Name of the host. + + It can contain what `hostname` returns on Unix systems, the fully qualified + domain name, or a name specified by the user. The sender decides which value + to use.' + flat_name: host.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the host. + type: keyword + host.os.family: + dashed_name: host-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: host.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + host.os.full: + dashed_name: host-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: host.os.full + level: extended + multi_fields: + - flat_name: host.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard + host.os.kernel: + dashed_name: host-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: host.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword + host.os.name: + dashed_name: host-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: host.os.name + level: extended + multi_fields: + - flat_name: host.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard + host.os.platform: + dashed_name: host-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: host.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + host.os.version: + dashed_name: host-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: host.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword + host.type: + dashed_name: host-type + description: 'Type of host. + + For Cloud providers this can be the machine type like `t2.medium`. If vm, + this could be the container, for example, or other information meaningful + in your environment.' + flat_name: host.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of host. + type: keyword + host.uptime: + dashed_name: host-uptime + description: Seconds the host has been up. + example: 1325 + flat_name: host.uptime + level: extended + name: uptime + normalize: [] + short: Seconds the host has been up. + type: long + host.user.domain: + dashed_name: host-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: host.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + host.user.email: + dashed_name: host-user-email + description: User email address. + flat_name: host.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + host.user.full_name: + dashed_name: host-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: host.user.full_name + level: extended + multi_fields: + - flat_name: host.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + host.user.group.domain: + dashed_name: host-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: host.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + host.user.group.id: + dashed_name: host-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: host.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + host.user.group.name: + dashed_name: host-user-group-name + description: Name of the group. + flat_name: host.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + host.user.hash: + dashed_name: host-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: host.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + host.user.id: + dashed_name: host-user-id + description: Unique identifier of the user. + flat_name: host.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + host.user.name: + dashed_name: host-user-name + description: Short name or login of the user. + example: albert + flat_name: host.user.name + level: core + multi_fields: + - flat_name: host.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + host.user.roles: + dashed_name: host-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: host.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: host + nestings: + - host.geo + - host.os + - host.user + prefix: host. + reused_here: + - full: host.geo + schema_name: geo + short: Fields describing a location. + - full: host.os + schema_name: os + short: OS fields contain information about the operating system. + - full: host.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields describing the relevant computing instance. + title: Host + type: group +http: + description: Fields related to HTTP activity. Use the `url` field set to store the + url of the request. + fields: + http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long + http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: wildcard + http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long + http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword + http.request.mime_type: + dashed_name: http-request-mime-type + description: 'Mime type of the body of the request. + + This value must only be populated based on the content of the request body, + not on the `Content-Type` header. Comparing the mime type of a request with + the request''s Content-Type header can be helpful in detecting threats or + misconfigured clients.' + example: image/gif + flat_name: http.request.mime_type + ignore_above: 1024 + level: extended + name: request.mime_type + normalize: [] + short: Mime type of the body of the request. + type: keyword + http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: wildcard + http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long + http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: wildcard + http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long + http.response.mime_type: + dashed_name: http-response-mime-type + description: 'Mime type of the body of the response. + + This value must only be populated based on the content of the response body, + not on the `Content-Type` header. Comparing the mime type of a response with + the response''s Content-Type header can be helpful in detecting misconfigured + servers.' + example: image/gif + flat_name: http.response.mime_type + ignore_above: 1024 + level: extended + name: response.mime_type + normalize: [] + short: Mime type of the body of the response. + type: keyword + http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long + http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword + group: 2 + name: http + prefix: http. + short: Fields describing an HTTP request. + title: HTTP + type: group +interface: + description: The interface fields are used to record ingress and egress interface + information when reported by an observer (e.g. firewall, router, load balancer) + in the context of the observer handling a network connection. In the case of + a single observer interface (e.g. network sensor on a span port) only the observer.ingress + information should be populated. + fields: + interface.alias: + dashed_name: interface-alias + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + flat_name: interface.alias + ignore_above: 1024 + level: extended + name: alias + normalize: [] + short: Interface alias + type: keyword + interface.id: + dashed_name: interface-id + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + flat_name: interface.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Interface ID + type: keyword + interface.name: + dashed_name: interface-name + description: Interface name as reported by the system. + example: eth0 + flat_name: interface.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Interface name + type: keyword + group: 2 + name: interface + prefix: interface. + reusable: + expected: + - as: interface + at: observer.ingress + full: observer.ingress.interface + - as: interface + at: observer.egress + full: observer.egress.interface + top_level: false + short: Fields to describe observer interface information. + title: Interface + type: group +log: + description: 'Details about the event''s logging mechanism or logging transport. + + The log.* fields are typically populated with details about the logging mechanism + used to create and/or transport the event. For example, syslog details belong + under `log.syslog.*`. + + The details specific to your event source are typically not logged under `log.*`, + but rather in `event.*` or in other ECS fields.' + fields: + log.file.path: + dashed_name: log-file-path + description: 'Full path to the log file this event came from, including the + file name. It should include the drive letter, when appropriate. + + If the event wasn''t read from a log file, do not populate this field.' + example: /var/log/fun-times.log + flat_name: log.file.path + level: extended + name: file.path + normalize: [] + short: Full path to the log file this event came from. + type: wildcard + log.level: + dashed_name: log-level + description: 'Original log level of the log event. + + If the source of the event provides a log level or textual severity, this + is the one that goes in `log.level`. If your source doesn''t specify one, + you may put your event transport''s severity here (e.g. Syslog severity). + + Some examples are `warn`, `err`, `i`, `informational`.' + example: error + flat_name: log.level + ignore_above: 1024 + level: core + name: level + normalize: [] + short: Log level of the log event. + type: keyword + log.logger: + dashed_name: log-logger + description: The name of the logger inside an application. This is usually the + name of the class which initialized the logger, or can be a custom name. + example: org.elasticsearch.bootstrap.Bootstrap + flat_name: log.logger + level: core + name: logger + normalize: [] + short: Name of the logger. + type: wildcard + log.origin.file.line: + dashed_name: log-origin-file-line + description: The line number of the file containing the source code which originated + the log event. + example: 42 + flat_name: log.origin.file.line + level: extended + name: origin.file.line + normalize: [] + short: The line number of the file which originated the log event. + type: integer + log.origin.file.name: + dashed_name: log-origin-file-name + description: 'The name of the file containing the source code which originated + the log event. + + Note that this field is not meant to capture the log file. The correct field + to capture the log file is `log.file.path`.' + example: Bootstrap.java + flat_name: log.origin.file.name + ignore_above: 1024 + level: extended + name: origin.file.name + normalize: [] + short: The code file which originated the log event. + type: keyword + log.origin.function: + dashed_name: log-origin-function + description: The name of the function or method which originated the log event. + example: init + flat_name: log.origin.function + ignore_above: 1024 + level: extended + name: origin.function + normalize: [] + short: The function which originated the log event. + type: keyword + log.original: + dashed_name: log-original + description: 'This is the original log message and contains the full log message + before splitting it up in multiple parts. + + In contrast to the `message` field which can contain an extracted part of + the log message, this field contains the original, full log message. It can + have already some modifications applied like encoding or new lines removed + to clean up the log message. + + This field is not indexed and doc_values are disabled so it can''t be queried + but the value can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 localhost My log + flat_name: log.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Original log message with light interpretation only (encoding, newlines). + type: keyword + log.syslog: + dashed_name: log-syslog + description: The Syslog metadata of the event, if the event was transmitted + via Syslog. Please see RFCs 5424 or 3164. + flat_name: log.syslog + level: extended + name: syslog + normalize: [] + short: Syslog metadata + type: object + log.syslog.facility.code: + dashed_name: log-syslog-facility-code + description: 'The Syslog numeric facility of the log event, if available. + + According to RFCs 5424 and 3164, this value should be an integer between 0 + and 23.' + example: 23 + flat_name: log.syslog.facility.code + format: string + level: extended + name: syslog.facility.code + normalize: [] + short: Syslog numeric facility of the event. + type: long + log.syslog.facility.name: + dashed_name: log-syslog-facility-name + description: The Syslog text-based facility of the log event, if available. + example: local7 + flat_name: log.syslog.facility.name + ignore_above: 1024 + level: extended + name: syslog.facility.name + normalize: [] + short: Syslog text-based facility of the event. + type: keyword + log.syslog.priority: + dashed_name: log-syslog-priority + description: 'Syslog numeric priority of the event, if available. + + According to RFCs 5424 and 3164, the priority is 8 * facility + severity. + This number is therefore expected to contain a value between 0 and 191.' + example: 135 + flat_name: log.syslog.priority + format: string + level: extended + name: syslog.priority + normalize: [] + short: Syslog priority of the event. + type: long + log.syslog.severity.code: + dashed_name: log-syslog-severity-code + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different numeric severity + value (e.g. firewall, IDS), your source''s numeric severity should go to `event.severity`. + If the event source does not specify a distinct severity, you can optionally + copy the Syslog severity to `event.severity`.' + example: 3 + flat_name: log.syslog.severity.code + level: extended + name: syslog.severity.code + normalize: [] + short: Syslog numeric severity of the event. + type: long + log.syslog.severity.name: + dashed_name: log-syslog-severity-name + description: 'The Syslog numeric severity of the log event, if available. + + If the event source publishing via Syslog provides a different severity value + (e.g. firewall, IDS), your source''s text severity should go to `log.level`. + If the event source does not specify a distinct severity, you can optionally + copy the Syslog severity to `log.level`.' + example: Error + flat_name: log.syslog.severity.name + ignore_above: 1024 + level: extended + name: syslog.severity.name + normalize: [] + short: Syslog text-based severity of the event. + type: keyword + group: 2 + name: log + prefix: log. + short: Details about the event's logging mechanism. + title: Log + type: group +network: + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + fields: + network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword + network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long + network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword + network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * ingress\n * egress\n * inbound\n * outbound\n * internal\n * external\n\ + \ * unknown\n\nWhen mapping events from a host-based monitoring context,\ + \ populate this field from the host's point of view, using the values \"ingress\"\ + \ or \"egress\".\nWhen mapping events from a network or perimeter-based monitoring\ + \ context, populate this field from the point of view of the network perimeter,\ + \ using the values \"inbound\", \"outbound\", \"internal\" or \"external\"\ + .\nNote that \"internal\" is not crossing perimeter boundaries, and is meant\ + \ to describe communication between two hosts within the perimeter. Note also\ + \ that \"external\" is meant to describe traffic between two hosts that are\ + \ external to the perimeter. This could for example be useful for ISPs or\ + \ VPN service providers." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword + network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip + network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword + network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used + when sending traffic with multiple 802.1q encapsulations to a network sensor + (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object + network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword + network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long + network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword + network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword + network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + type: keyword + network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + group: 2 + name: network + nestings: + - network.inner.vlan + - network.vlan + prefix: network. + reused_here: + - full: network.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + - full: network.inner.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + short: Fields describing the communication path over which the event happened. + title: Network + type: group +observer: + description: 'An observer is defined as a special network, security, or application + device used to detect, observe, or create network, security, or application-related + events and metrics. + + This could be a custom hardware appliance or a server that has been configured + to run special network, security, or application software. Examples include firewalls, + web proxies, intrusion detection/prevention systems, network monitoring sensors, + web application firewalls, data loss prevention systems, and APM servers. The + observer.* fields shall be populated with details of the system, if any, that + detects, observes and/or creates a network, security, or application event or + metric. Message queues and ETL components used in processing events or metrics + are not considered observers in ECS.' + fields: + observer.egress: + dashed_name: observer-egress + description: Observer.egress holds information like interface number and name, + vlan, and zone information to classify egress traffic. Single armed monitoring + such as a network sensor on a span port should only use observer.ingress + to categorize traffic. + flat_name: observer.egress + level: extended + name: egress + normalize: [] + short: Object field for egress information + type: object + observer.egress.interface.alias: + dashed_name: observer-egress-interface-alias + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + flat_name: observer.egress.interface.alias + ignore_above: 1024 + level: extended + name: alias + normalize: [] + original_fieldset: interface + short: Interface alias + type: keyword + observer.egress.interface.id: + dashed_name: observer-egress-interface-id + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + flat_name: observer.egress.interface.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: interface + short: Interface ID + type: keyword + observer.egress.interface.name: + dashed_name: observer-egress-interface-name + description: Interface name as reported by the system. + example: eth0 + flat_name: observer.egress.interface.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: interface + short: Interface name + type: keyword + observer.egress.vlan.id: + dashed_name: observer-egress-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: observer.egress.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + observer.egress.vlan.name: + dashed_name: observer-egress-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: observer.egress.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + observer.egress.zone: + dashed_name: observer-egress-zone + description: Network zone of outbound traffic as reported by the observer to + categorize the destination area of egress traffic, e.g. Internal, External, + DMZ, HR, Legal, etc. + example: Public_Internet + flat_name: observer.egress.zone + ignore_above: 1024 + level: extended + name: egress.zone + normalize: [] + short: Observer Egress zone + type: keyword + observer.geo.city_name: + dashed_name: observer-geo-city-name + description: City name. + example: Montreal + flat_name: observer.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + observer.geo.continent_name: + dashed_name: observer-geo-continent-name + description: Name of the continent. + example: North America + flat_name: observer.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + observer.geo.country_iso_code: + dashed_name: observer-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: observer.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + observer.geo.country_name: + dashed_name: observer-geo-country-name + description: Country name. + example: Canada + flat_name: observer.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + observer.geo.location: + dashed_name: observer-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: observer.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + observer.geo.name: + dashed_name: observer-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: observer.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + observer.geo.region_iso_code: + dashed_name: observer-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: observer.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + observer.geo.region_name: + dashed_name: observer-geo-region-name + description: Region name. + example: Quebec + flat_name: observer.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + observer.hostname: + dashed_name: observer-hostname + description: Hostname of the observer. + flat_name: observer.hostname + ignore_above: 1024 + level: core + name: hostname + normalize: [] + short: Hostname of the observer. + type: keyword + observer.ingress: + dashed_name: observer-ingress + description: Observer.ingress holds information like interface number and name, + vlan, and zone information to classify ingress traffic. Single armed monitoring + such as a network sensor on a span port should only use observer.ingress + to categorize traffic. + flat_name: observer.ingress + level: extended + name: ingress + normalize: [] + short: Object field for ingress information + type: object + observer.ingress.interface.alias: + dashed_name: observer-ingress-interface-alias + description: Interface alias as reported by the system, typically used in firewall + implementations for e.g. inside, outside, or dmz logical interface naming. + example: outside + flat_name: observer.ingress.interface.alias + ignore_above: 1024 + level: extended + name: alias + normalize: [] + original_fieldset: interface + short: Interface alias + type: keyword + observer.ingress.interface.id: + dashed_name: observer-ingress-interface-id + description: Interface ID as reported by an observer (typically SNMP interface + ID). + example: 10 + flat_name: observer.ingress.interface.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: interface + short: Interface ID + type: keyword + observer.ingress.interface.name: + dashed_name: observer-ingress-interface-name + description: Interface name as reported by the system. + example: eth0 + flat_name: observer.ingress.interface.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: interface + short: Interface name + type: keyword + observer.ingress.vlan.id: + dashed_name: observer-ingress-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: observer.ingress.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + observer.ingress.vlan.name: + dashed_name: observer-ingress-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: observer.ingress.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + observer.ingress.zone: + dashed_name: observer-ingress-zone + description: Network zone of incoming traffic as reported by the observer to + categorize the source area of ingress traffic. e.g. internal, External, DMZ, + HR, Legal, etc. + example: DMZ + flat_name: observer.ingress.zone + ignore_above: 1024 + level: extended + name: ingress.zone + normalize: [] + short: Observer ingress zone + type: keyword + observer.ip: + dashed_name: observer-ip + description: IP addresses of the observer. + flat_name: observer.ip + level: core + name: ip + normalize: + - array + short: IP addresses of the observer. + type: ip + observer.mac: + dashed_name: observer-mac + description: MAC addresses of the observer + flat_name: observer.mac + ignore_above: 1024 + level: core + name: mac + normalize: + - array + short: MAC addresses of the observer + type: keyword + observer.name: + dashed_name: observer-name + description: 'Custom name of the observer. + + This is a name that can be given to an observer. This can be helpful for example + if multiple firewalls of the same model are used in an organization. + + If no custom name is needed, the field can be left empty.' + example: 1_proxySG + flat_name: observer.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Custom name of the observer. + type: keyword + observer.os.family: + dashed_name: observer-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: observer.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + observer.os.full: + dashed_name: observer-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: observer.os.full + level: extended + multi_fields: + - flat_name: observer.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard + observer.os.kernel: + dashed_name: observer-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: observer.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword + observer.os.name: + dashed_name: observer-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: observer.os.name + level: extended + multi_fields: + - flat_name: observer.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard + observer.os.platform: + dashed_name: observer-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: observer.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + observer.os.version: + dashed_name: observer-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: observer.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword + observer.product: + dashed_name: observer-product + description: The product name of the observer. + example: s200 + flat_name: observer.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + short: The product name of the observer. + type: keyword + observer.serial_number: + dashed_name: observer-serial-number + description: Observer serial number. + flat_name: observer.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + short: Observer serial number. + type: keyword + observer.type: + dashed_name: observer-type + description: 'The type of the observer the data is coming from. + + There is no predefined list of observer types. Some examples are `forwarder`, + `firewall`, `ids`, `ips`, `proxy`, `poller`, `sensor`, `APM server`.' + example: firewall + flat_name: observer.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: The type of the observer the data is coming from. + type: keyword + observer.vendor: + dashed_name: observer-vendor + description: Vendor name of the observer. + example: Symantec + flat_name: observer.vendor + ignore_above: 1024 + level: core + name: vendor + normalize: [] + short: Vendor name of the observer. + type: keyword + observer.version: + dashed_name: observer-version + description: Observer version. + flat_name: observer.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Observer version. + type: keyword + group: 2 + name: observer + nestings: + - observer.egress.interface + - observer.egress.vlan + - observer.geo + - observer.ingress.interface + - observer.ingress.vlan + - observer.os + prefix: observer. + reused_here: + - full: observer.geo + schema_name: geo + short: Fields describing a location. + - full: observer.ingress.interface + schema_name: interface + short: Fields to describe observer interface information. + - full: observer.egress.interface + schema_name: interface + short: Fields to describe observer interface information. + - full: observer.os + schema_name: os + short: OS fields contain information about the operating system. + - full: observer.ingress.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + - full: observer.egress.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + short: Fields describing an entity observing the event from outside the host. + title: Observer + type: group +organization: + description: 'The organization fields enrich data with information about the company + or entity the data is associated with. + + These fields help you arrange or filter data stored in an index by one or multiple + organizations.' + fields: + organization.id: + dashed_name: organization-id + description: Unique identifier for the organization. + flat_name: organization.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Unique identifier for the organization. + type: keyword + organization.name: + dashed_name: organization-name + description: Organization name. + flat_name: organization.name + level: extended + multi_fields: + - flat_name: organization.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Organization name. + type: wildcard + group: 2 + name: organization + prefix: organization. + short: Fields describing the organization or company the event is associated with. + title: Organization + type: group +os: + description: The OS fields contain information about the operating system. + fields: + os.family: + dashed_name: os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + os.full: + dashed_name: os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: os.full + level: extended + multi_fields: + - flat_name: os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Operating system name, including the version or code name. + type: wildcard + os.kernel: + dashed_name: os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + short: Operating system kernel version as a raw string. + type: keyword + os.name: + dashed_name: os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: os.name + level: extended + multi_fields: + - flat_name: os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Operating system name, without the version. + type: wildcard + os.platform: + dashed_name: os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + os.version: + dashed_name: os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Operating system version as a raw string. + type: keyword + group: 2 + name: os + prefix: os. + reusable: + expected: + - as: os + at: observer + full: observer.os + - as: os + at: host + full: host.os + - as: os + at: user_agent + full: user_agent.os + top_level: false + short: OS fields contain information about the operating system. + title: Operating System + type: group +package: + description: These fields contain information about an installed software package. + It contains general information about a package, such as name, version or size. + It also contains installation details, such as time or location. + fields: + package.architecture: + dashed_name: package-architecture + description: Package architecture. + example: x86_64 + flat_name: package.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + short: Package architecture. + type: keyword + package.build_version: + dashed_name: package-build-version + description: 'Additional information about the build version of the installed + package. + + For example use the commit SHA of a non-released package.' + example: 36f4f7e89dd61b0988b12ee000b98966867710cd + flat_name: package.build_version + ignore_above: 1024 + level: extended + name: build_version + normalize: [] + short: Build version information + type: keyword + package.checksum: + dashed_name: package-checksum + description: Checksum of the installed package for verification. + example: 68b329da9893e34099c7d8ad5cb9c940 + flat_name: package.checksum + ignore_above: 1024 + level: extended + name: checksum + normalize: [] + short: Checksum of the installed package for verification. + type: keyword + package.description: + dashed_name: package-description + description: Description of the package. + example: Open source programming language to build simple/reliable/efficient + software. + flat_name: package.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + short: Description of the package. + type: keyword + package.install_scope: + dashed_name: package-install-scope + description: Indicating how the package was installed, e.g. user-local, global. + example: global + flat_name: package.install_scope + ignore_above: 1024 + level: extended + name: install_scope + normalize: [] + short: Indicating how the package was installed, e.g. user-local, global. + type: keyword + package.installed: + dashed_name: package-installed + description: Time when package was installed. + flat_name: package.installed + level: extended + name: installed + normalize: [] + short: Time when package was installed. + type: date + package.license: + dashed_name: package-license + description: 'License under which the package was released. + + Use a short name, e.g. the license identifier from SPDX License List where + possible (https://spdx.org/licenses/).' + example: Apache License 2.0 + flat_name: package.license + ignore_above: 1024 + level: extended + name: license + normalize: [] + short: Package license + type: keyword + package.name: + dashed_name: package-name + description: Package name + example: go + flat_name: package.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Package name + type: keyword + package.path: + dashed_name: package-path + description: Path where the package is installed. + example: /usr/local/Cellar/go/1.12.9/ + flat_name: package.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path where the package is installed. + type: keyword + package.reference: + dashed_name: package-reference + description: Home page or reference URL of the software in this package, if + available. + example: https://golang.org + flat_name: package.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Package home page or reference URL + type: keyword + package.size: + dashed_name: package-size + description: Package size in bytes. + example: 62231 + flat_name: package.size + format: string + level: extended + name: size + normalize: [] + short: Package size in bytes. + type: long + package.type: + dashed_name: package-type + description: 'Type of package. + + This should contain the package file type, rather than the package manager + name. Examples: rpm, dpkg, brew, npm, gem, nupkg, jar.' + example: rpm + flat_name: package.type + ignore_above: 1024 + level: extended + name: type + normalize: [] + short: Package type + type: keyword + package.version: + dashed_name: package-version + description: Package version + example: 1.12.9 + flat_name: package.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Package version + type: keyword + group: 2 + name: package + prefix: package. + short: These fields contain information about an installed software package. + title: Package + type: group +pe: + description: These fields contain Windows Portable Executable (PE) metadata. + fields: + pe.architecture: + dashed_name: pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + short: CPU architecture target for the file. + type: keyword + pe.company: + dashed_name: pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + short: Internal company name of the file, provided at compile-time. + type: keyword + pe.description: + dashed_name: pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + short: Internal description of the file, provided at compile-time. + type: keyword + pe.file_version: + dashed_name: pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + short: Process name. + type: keyword + pe.imphash: + dashed_name: pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + short: A hash of the imports in a PE file. + type: keyword + pe.original_file_name: + dashed_name: pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: pe.original_file_name + level: extended + name: original_file_name + normalize: [] + short: Internal name of the file, provided at compile-time. + type: wildcard + pe.product: + dashed_name: pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + short: Internal product name of the file, provided at compile-time. + type: keyword + group: 2 + name: pe + prefix: pe. + reusable: + expected: + - as: pe + at: file + full: file.pe + - as: pe + at: dll + full: dll.pe + - as: pe + at: process + full: process.pe + top_level: false + short: These fields contain Windows Portable Executable (PE) metadata. + title: PE Header + type: group +process: + description: 'These fields contain information about a process. + + These fields can help you correlate metrics information with a process id/name + from a log message. The `process.pid` often stays in the metric itself and is + copied to the global field for correlation.' + fields: + process.args: + dashed_name: process-args + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + flat_name: process.args + ignore_above: 1024 + level: extended + name: args + normalize: + - array + short: Array of process arguments. + type: keyword + process.args_count: + dashed_name: process-args-count + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + flat_name: process.args_count + level: extended + name: args_count + normalize: [] + short: Length of the process.args array. + type: long + process.code_signature.exists: + dashed_name: process-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: process.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean + process.code_signature.status: + dashed_name: process-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: process.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword + process.code_signature.subject_name: + dashed_name: process-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: process.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword + process.code_signature.trusted: + dashed_name: process-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + flat_name: process.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean + process.code_signature.valid: + dashed_name: process-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: process.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean + process.command_line: + dashed_name: process-command-line + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + flat_name: process.command_line + level: extended + multi_fields: + - flat_name: process.command_line.text + name: text + norms: false + type: text + name: command_line + normalize: [] + short: Full command line that started the process. + type: wildcard + process.entity_id: + dashed_name: process-entity-id + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + flat_name: process.entity_id + ignore_above: 1024 + level: extended + name: entity_id + normalize: [] + short: Unique identifier for the process. + type: keyword + process.executable: + dashed_name: process-executable + description: Absolute path to the process executable. + example: /usr/bin/ssh + flat_name: process.executable + level: extended + multi_fields: + - flat_name: process.executable.text + name: text + norms: false + type: text + name: executable + normalize: [] + short: Absolute path to the process executable. + type: wildcard + process.exit_code: + dashed_name: process-exit-code + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + flat_name: process.exit_code + level: extended + name: exit_code + normalize: [] + short: The exit code of the process. + type: long + process.hash.md5: + dashed_name: process-hash-md5 + description: MD5 hash. + flat_name: process.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword + process.hash.sha1: + dashed_name: process-hash-sha1 + description: SHA1 hash. + flat_name: process.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword + process.hash.sha256: + dashed_name: process-hash-sha256 + description: SHA256 hash. + flat_name: process.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword + process.hash.sha512: + dashed_name: process-hash-sha512 + description: SHA512 hash. + flat_name: process.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword + process.name: + dashed_name: process-name + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + flat_name: process.name + level: extended + multi_fields: + - flat_name: process.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Process name. + type: wildcard + process.parent.args: + dashed_name: process-parent-args + description: 'Array of process arguments, starting with the absolute path to + the executable. + + May be filtered to protect sensitive information.' + example: '["/usr/bin/ssh", "-l", "user", "10.0.0.16"]' + flat_name: process.parent.args + ignore_above: 1024 + level: extended + name: args + normalize: + - array + original_fieldset: process + short: Array of process arguments. + type: keyword + process.parent.args_count: + dashed_name: process-parent-args-count + description: 'Length of the process.args array. + + This field can be useful for querying or performing bucket analysis on how + many arguments were provided to start a process. More arguments may be an + indication of suspicious activity.' + example: 4 + flat_name: process.parent.args_count + level: extended + name: args_count + normalize: [] + original_fieldset: process + short: Length of the process.args array. + type: long + process.parent.code_signature.exists: + dashed_name: process-parent-code-signature-exists + description: Boolean to capture if a signature is present. + example: 'true' + flat_name: process.parent.code_signature.exists + level: core + name: exists + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if a signature is present. + type: boolean + process.parent.code_signature.status: + dashed_name: process-parent-code-signature-status + description: 'Additional information about the certificate status. + + This is useful for logging cryptographic errors with the certificate validity + or trust status. Leave unpopulated if the validity or trust of the certificate + was unchecked.' + example: ERROR_UNTRUSTED_ROOT + flat_name: process.parent.code_signature.status + ignore_above: 1024 + level: extended + name: status + normalize: [] + original_fieldset: code_signature + short: Additional information about the certificate status. + type: keyword + process.parent.code_signature.subject_name: + dashed_name: process-parent-code-signature-subject-name + description: Subject name of the code signer + example: Microsoft Corporation + flat_name: process.parent.code_signature.subject_name + ignore_above: 1024 + level: core + name: subject_name + normalize: [] + original_fieldset: code_signature + short: Subject name of the code signer + type: keyword + process.parent.code_signature.trusted: + dashed_name: process-parent-code-signature-trusted + description: 'Stores the trust status of the certificate chain. + + Validating the trust of the certificate chain may be complicated, and this + field should only be populated by tools that actively check the status.' + example: 'true' + flat_name: process.parent.code_signature.trusted + level: extended + name: trusted + normalize: [] + original_fieldset: code_signature + short: Stores the trust status of the certificate chain. + type: boolean + process.parent.code_signature.valid: + dashed_name: process-parent-code-signature-valid + description: 'Boolean to capture if the digital signature is verified against + the binary content. + + Leave unpopulated if a certificate was unchecked.' + example: 'true' + flat_name: process.parent.code_signature.valid + level: extended + name: valid + normalize: [] + original_fieldset: code_signature + short: Boolean to capture if the digital signature is verified against the binary + content. + type: boolean + process.parent.command_line: + dashed_name: process-parent-command-line + description: 'Full command line that started the process, including the absolute + path to the executable, and all arguments. + + Some arguments may be filtered to protect sensitive information.' + example: /usr/bin/ssh -l user 10.0.0.16 + flat_name: process.parent.command_line + level: extended + multi_fields: + - flat_name: process.parent.command_line.text + name: text + norms: false + type: text + name: command_line + normalize: [] + original_fieldset: process + short: Full command line that started the process. + type: wildcard + process.parent.entity_id: + dashed_name: process-parent-entity-id + description: 'Unique identifier for the process. + + The implementation of this is specified by the data source, but some examples + of what could be used here are a process-generated UUID, Sysmon Process GUIDs, + or a hash of some uniquely identifying components of a process. + + Constructing a globally unique identifier is a common practice to mitigate + PID reuse as well as to identify a specific process over time, across multiple + monitored hosts.' + example: c2c455d9f99375d + flat_name: process.parent.entity_id + ignore_above: 1024 + level: extended + name: entity_id + normalize: [] + original_fieldset: process + short: Unique identifier for the process. + type: keyword + process.parent.executable: + dashed_name: process-parent-executable + description: Absolute path to the process executable. + example: /usr/bin/ssh + flat_name: process.parent.executable + level: extended + multi_fields: + - flat_name: process.parent.executable.text + name: text + norms: false + type: text + name: executable + normalize: [] + original_fieldset: process + short: Absolute path to the process executable. + type: wildcard + process.parent.exit_code: + dashed_name: process-parent-exit-code + description: 'The exit code of the process, if this is a termination event. + + The field should be absent if there is no exit code for the event (e.g. process + start).' + example: 137 + flat_name: process.parent.exit_code + level: extended + name: exit_code + normalize: [] + original_fieldset: process + short: The exit code of the process. + type: long + process.parent.hash.md5: + dashed_name: process-parent-hash-md5 + description: MD5 hash. + flat_name: process.parent.hash.md5 + ignore_above: 1024 + level: extended + name: md5 + normalize: [] + original_fieldset: hash + short: MD5 hash. + type: keyword + process.parent.hash.sha1: + dashed_name: process-parent-hash-sha1 + description: SHA1 hash. + flat_name: process.parent.hash.sha1 + ignore_above: 1024 + level: extended + name: sha1 + normalize: [] + original_fieldset: hash + short: SHA1 hash. + type: keyword + process.parent.hash.sha256: + dashed_name: process-parent-hash-sha256 + description: SHA256 hash. + flat_name: process.parent.hash.sha256 + ignore_above: 1024 + level: extended + name: sha256 + normalize: [] + original_fieldset: hash + short: SHA256 hash. + type: keyword + process.parent.hash.sha512: + dashed_name: process-parent-hash-sha512 + description: SHA512 hash. + flat_name: process.parent.hash.sha512 + ignore_above: 1024 + level: extended + name: sha512 + normalize: [] + original_fieldset: hash + short: SHA512 hash. + type: keyword + process.parent.name: + dashed_name: process-parent-name + description: 'Process name. + + Sometimes called program name or similar.' + example: ssh + flat_name: process.parent.name + level: extended + multi_fields: + - flat_name: process.parent.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: process + short: Process name. + type: wildcard + process.parent.pe.architecture: + dashed_name: process-parent-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: process.parent.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword + process.parent.pe.company: + dashed_name: process-parent-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: process.parent.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword + process.parent.pe.description: + dashed_name: process-parent-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: process.parent.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword + process.parent.pe.file_version: + dashed_name: process-parent-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: process.parent.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword + process.parent.pe.imphash: + dashed_name: process-parent-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: process.parent.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword + process.parent.pe.original_file_name: + dashed_name: process-parent-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: process.parent.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard + process.parent.pe.product: + dashed_name: process-parent-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: process.parent.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword + process.parent.pgid: + dashed_name: process-parent-pgid + description: Identifier of the group of processes the process belongs to. + flat_name: process.parent.pgid + format: string + level: extended + name: pgid + normalize: [] + original_fieldset: process + short: Identifier of the group of processes the process belongs to. + type: long + process.parent.pid: + dashed_name: process-parent-pid + description: Process id. + example: 4242 + flat_name: process.parent.pid + format: string + level: core + name: pid + normalize: [] + original_fieldset: process + short: Process id. + type: long + process.parent.ppid: + dashed_name: process-parent-ppid + description: Parent process' pid. + example: 4241 + flat_name: process.parent.ppid + format: string + level: extended + name: ppid + normalize: [] + original_fieldset: process + short: Parent process' pid. + type: long + process.parent.start: + dashed_name: process-parent-start + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + flat_name: process.parent.start + level: extended + name: start + normalize: [] + original_fieldset: process + short: The time the process started. + type: date + process.parent.thread.id: + dashed_name: process-parent-thread-id + description: Thread ID. + example: 4242 + flat_name: process.parent.thread.id + format: string + level: extended + name: thread.id + normalize: [] + original_fieldset: process + short: Thread ID. + type: long + process.parent.thread.name: + dashed_name: process-parent-thread-name + description: Thread name. + example: thread-0 + flat_name: process.parent.thread.name + ignore_above: 1024 + level: extended + name: thread.name + normalize: [] + original_fieldset: process + short: Thread name. + type: keyword + process.parent.title: + dashed_name: process-parent-title + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: + for example a browser setting its title to the web page currently opened.' + flat_name: process.parent.title + level: extended + multi_fields: + - flat_name: process.parent.title.text + name: text + norms: false + type: text + name: title + normalize: [] + original_fieldset: process + short: Process title. + type: wildcard + process.parent.uptime: + dashed_name: process-parent-uptime + description: Seconds the process has been up. + example: 1325 + flat_name: process.parent.uptime + level: extended + name: uptime + normalize: [] + original_fieldset: process + short: Seconds the process has been up. + type: long + process.parent.working_directory: + dashed_name: process-parent-working-directory + description: The working directory of the process. + example: /home/alice + flat_name: process.parent.working_directory + level: extended + multi_fields: + - flat_name: process.parent.working_directory.text + name: text + norms: false + type: text + name: working_directory + normalize: [] + original_fieldset: process + short: The working directory of the process. + type: wildcard + process.pe.architecture: + dashed_name: process-pe-architecture + description: CPU architecture target for the file. + example: x64 + flat_name: process.pe.architecture + ignore_above: 1024 + level: extended + name: architecture + normalize: [] + original_fieldset: pe + short: CPU architecture target for the file. + type: keyword + process.pe.company: + dashed_name: process-pe-company + description: Internal company name of the file, provided at compile-time. + example: Microsoft Corporation + flat_name: process.pe.company + ignore_above: 1024 + level: extended + name: company + normalize: [] + original_fieldset: pe + short: Internal company name of the file, provided at compile-time. + type: keyword + process.pe.description: + dashed_name: process-pe-description + description: Internal description of the file, provided at compile-time. + example: Paint + flat_name: process.pe.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + original_fieldset: pe + short: Internal description of the file, provided at compile-time. + type: keyword + process.pe.file_version: + dashed_name: process-pe-file-version + description: Internal version of the file, provided at compile-time. + example: 6.3.9600.17415 + flat_name: process.pe.file_version + ignore_above: 1024 + level: extended + name: file_version + normalize: [] + original_fieldset: pe + short: Process name. + type: keyword + process.pe.imphash: + dashed_name: process-pe-imphash + description: 'A hash of the imports in a PE file. An imphash -- or import hash + -- can be used to fingerprint binaries even after recompilation or other code-level + transformations have occurred, which would change more traditional hash values. + + Learn more at https://www.fireeye.com/blog/threat-research/2014/01/tracking-malware-import-hashing.html.' + example: 0c6803c4e922103c4dca5963aad36ddf + flat_name: process.pe.imphash + ignore_above: 1024 + level: extended + name: imphash + normalize: [] + original_fieldset: pe + short: A hash of the imports in a PE file. + type: keyword + process.pe.original_file_name: + dashed_name: process-pe-original-file-name + description: Internal name of the file, provided at compile-time. + example: MSPAINT.EXE + flat_name: process.pe.original_file_name + level: extended + name: original_file_name + normalize: [] + original_fieldset: pe + short: Internal name of the file, provided at compile-time. + type: wildcard + process.pe.product: + dashed_name: process-pe-product + description: Internal product name of the file, provided at compile-time. + example: "Microsoft\xAE Windows\xAE Operating System" + flat_name: process.pe.product + ignore_above: 1024 + level: extended + name: product + normalize: [] + original_fieldset: pe + short: Internal product name of the file, provided at compile-time. + type: keyword + process.pgid: + dashed_name: process-pgid + description: Identifier of the group of processes the process belongs to. + flat_name: process.pgid + format: string + level: extended + name: pgid + normalize: [] + short: Identifier of the group of processes the process belongs to. + type: long + process.pid: + dashed_name: process-pid + description: Process id. + example: 4242 + flat_name: process.pid + format: string + level: core + name: pid + normalize: [] + short: Process id. + type: long + process.ppid: + dashed_name: process-ppid + description: Parent process' pid. + example: 4241 + flat_name: process.ppid + format: string + level: extended + name: ppid + normalize: [] + short: Parent process' pid. + type: long + process.start: + dashed_name: process-start + description: The time the process started. + example: '2016-05-23T08:05:34.853Z' + flat_name: process.start + level: extended + name: start + normalize: [] + short: The time the process started. + type: date + process.thread.id: + dashed_name: process-thread-id + description: Thread ID. + example: 4242 + flat_name: process.thread.id + format: string + level: extended + name: thread.id + normalize: [] + short: Thread ID. + type: long + process.thread.name: + dashed_name: process-thread-name + description: Thread name. + example: thread-0 + flat_name: process.thread.name + ignore_above: 1024 + level: extended + name: thread.name + normalize: [] + short: Thread name. + type: keyword + process.title: + dashed_name: process-title + description: 'Process title. + + The proctitle, some times the same as process name. Can also be different: + for example a browser setting its title to the web page currently opened.' + flat_name: process.title + level: extended + multi_fields: + - flat_name: process.title.text + name: text + norms: false + type: text + name: title + normalize: [] + short: Process title. + type: wildcard + process.uptime: + dashed_name: process-uptime + description: Seconds the process has been up. + example: 1325 + flat_name: process.uptime + level: extended + name: uptime + normalize: [] + short: Seconds the process has been up. + type: long + process.working_directory: + dashed_name: process-working-directory + description: The working directory of the process. + example: /home/alice + flat_name: process.working_directory + level: extended + multi_fields: + - flat_name: process.working_directory.text + name: text + norms: false + type: text + name: working_directory + normalize: [] + short: The working directory of the process. + type: wildcard + group: 2 + name: process + nestings: + - process.code_signature + - process.hash + - process.parent + - process.pe + prefix: process. + reusable: + expected: + - as: parent + at: process + full: process.parent + top_level: true + reused_here: + - full: process.code_signature + schema_name: code_signature + short: These fields contain information about binary code signatures. + - full: process.hash + schema_name: hash + short: Hashes, usually file hashes. + - full: process.pe + schema_name: pe + short: These fields contain Windows Portable Executable (PE) metadata. + - full: process.parent + schema_name: process + short: These fields contain information about a process. + short: These fields contain information about a process. + title: Process + type: group +registry: + description: Fields related to Windows Registry operations. + fields: + registry.data.bytes: + dashed_name: registry-data-bytes + description: 'Original bytes written with base64 encoding. + + For Windows registry operations, such as SetValueEx and RegQueryValueEx, this + corresponds to the data pointed by `lp_data`. This is optional but provides + better recoverability and should be populated for REG_BINARY encoded values.' + example: ZQBuAC0AVQBTAAAAZQBuAAAAAAA= + flat_name: registry.data.bytes + ignore_above: 1024 + level: extended + name: data.bytes + normalize: [] + short: Original bytes written with base64 encoding. + type: keyword + registry.data.strings: + dashed_name: registry-data-strings + description: 'Content when writing string types. + + Populated as an array when writing string data to the registry. For single + string registry types (REG_SZ, REG_EXPAND_SZ), this should be an array with + one string. For sequences of string with REG_MULTI_SZ, this array will be + variable length. For numeric data, such as REG_DWORD and REG_QWORD, this should + be populated with the decimal representation (e.g `"1"`).' + example: '["C:\rta\red_ttp\bin\myapp.exe"]' + flat_name: registry.data.strings + level: core + name: data.strings + normalize: + - array + short: List of strings representing what was written to the registry. + type: wildcard + registry.data.type: + dashed_name: registry-data-type + description: Standard registry type for encoding contents + example: REG_SZ + flat_name: registry.data.type + ignore_above: 1024 + level: core + name: data.type + normalize: [] + short: Standard registry type for encoding contents + type: keyword + registry.hive: + dashed_name: registry-hive + description: Abbreviated name for the hive. + example: HKLM + flat_name: registry.hive + ignore_above: 1024 + level: core + name: hive + normalize: [] + short: Abbreviated name for the hive. + type: keyword + registry.key: + dashed_name: registry-key + description: Hive-relative path of keys. + example: SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe + flat_name: registry.key + level: core + name: key + normalize: [] + short: Hive-relative path of keys. + type: wildcard + registry.path: + dashed_name: registry-path + description: Full path, including hive, key and value + example: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution + Options\winword.exe\Debugger + flat_name: registry.path + level: core + name: path + normalize: [] + short: Full path, including hive, key and value + type: wildcard + registry.value: + dashed_name: registry-value + description: Name of the value written. + example: Debugger + flat_name: registry.value + ignore_above: 1024 + level: core + name: value + normalize: [] + short: Name of the value written. + type: keyword + group: 2 + name: registry + prefix: registry. + short: Fields related to Windows Registry operations. + title: Registry + type: group +related: + description: 'This field set is meant to facilitate pivoting around a piece of data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding field + in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs to + `related.ip`, you can then search for a given IP trivially, no matter where it + appeared, by querying `related.ip:192.0.2.15`.' + fields: + related.hash: + dashed_name: related-hash + description: All the hashes seen on your event. Populating this field, then + using it to search for hashes can help in situations where you're unsure what + the hash algorithm is (and therefore which key name to search). + flat_name: related.hash + ignore_above: 1024 + level: extended + name: hash + normalize: + - array + short: All the hashes seen on your event. + type: keyword + related.hosts: + dashed_name: related-hosts + description: All hostnames or other host identifiers seen on your event. Example + identifiers include FQDNs, domain names, workstation names, or aliases. + flat_name: related.hosts + ignore_above: 1024 + level: extended + name: hosts + normalize: + - array + short: All the host identifiers seen on your event. + type: keyword + related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip + related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword + group: 2 + name: related + prefix: related. + short: Fields meant to facilitate pivoting around a piece of data. + title: Related + type: group +rule: + description: 'Rule fields are used to capture the specifics of any observer or agent + rules that generate alerts or other notable events. + + Examples of data sources that would populate the rule fields include: network + admission control platforms, network or host IDS/IPS, network firewalls, web application + firewalls, url filters, endpoint detection and response (EDR) systems, etc.' + fields: + rule.author: + dashed_name: rule-author + description: Name, organization, or pseudonym of the author or authors who created + the rule used to generate this event. + example: '["Star-Lord"]' + flat_name: rule.author + ignore_above: 1024 + level: extended + name: author + normalize: + - array + short: Rule author + type: keyword + rule.category: + dashed_name: rule-category + description: A categorization value keyword used by the entity using the rule + for detection of this event. + example: Attempted Information Leak + flat_name: rule.category + ignore_above: 1024 + level: extended + name: category + normalize: [] + short: Rule category + type: keyword + rule.description: + dashed_name: rule-description + description: The description of the rule generating the event. + example: Block requests to public DNS over HTTPS / TLS protocols + flat_name: rule.description + ignore_above: 1024 + level: extended + name: description + normalize: [] + short: Rule description + type: keyword + rule.id: + dashed_name: rule-id + description: A rule ID that is unique within the scope of an agent, observer, + or other entity using the rule for detection of this event. + example: 101 + flat_name: rule.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: Rule ID + type: keyword + rule.license: + dashed_name: rule-license + description: Name of the license under which the rule used to generate this + event is made available. + example: Apache 2.0 + flat_name: rule.license + ignore_above: 1024 + level: extended + name: license + normalize: [] + short: Rule license + type: keyword + rule.name: + dashed_name: rule-name + description: The name of the rule or signature generating the event. + example: BLOCK_DNS_over_TLS + flat_name: rule.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Rule name + type: keyword + rule.reference: + dashed_name: rule-reference + description: 'Reference URL to additional information about the rule used to + generate this event. + + The URL can point to the vendor''s documentation about the rule. If that''s + not available, it can also be a link to a more general page describing this + type of alert.' + example: https://en.wikipedia.org/wiki/DNS_over_TLS + flat_name: rule.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Rule reference URL + type: keyword + rule.ruleset: + dashed_name: rule-ruleset + description: Name of the ruleset, policy, group, or parent category in which + the rule used to generate this event is a member. + example: Standard_Protocol_Filters + flat_name: rule.ruleset + ignore_above: 1024 + level: extended + name: ruleset + normalize: [] + short: Rule ruleset + type: keyword + rule.uuid: + dashed_name: rule-uuid + description: A rule ID that is unique within the scope of a set or group of + agents, observers, or other entities using the rule for detection of this + event. + example: 1100110011 + flat_name: rule.uuid + ignore_above: 1024 + level: extended + name: uuid + normalize: [] + short: Rule UUID + type: keyword + rule.version: + dashed_name: rule-version + description: The version / revision of the rule being used for analysis. + example: 1.1 + flat_name: rule.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Rule version + type: keyword + group: 2 + name: rule + prefix: rule. + short: Fields to capture details about rules used to generate alerts or other notable + events. + title: Rule + type: group +server: + description: 'A Server is defined as the responder in a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the system + acting as the server in the network event. Server fields are usually populated + in conjunction with client fields. Server fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword + server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard + server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long + server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + level: core + name: domain + normalize: [] + short: Server domain. + type: wildcard + server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip + server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword + server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip + server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long + server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long + server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long + server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: wildcard + server.subdomain: + dashed_name: server-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: server.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: server + nestings: + - server.as + - server.geo + - server.user + prefix: server. + reused_here: + - full: server.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: server.geo + schema_name: geo + short: Fields describing a location. + - full: server.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the server side of a network connection, used with client. + title: Server + type: group +service: + description: 'The service fields describe the service for or from which the data + was collected. + + These fields help you find and correlate logs for a specific service and version.' + fields: + service.ephemeral_id: + dashed_name: service-ephemeral-id + description: 'Ephemeral identifier of this service (if one exists). + + This id normally changes across restarts, but `service.id` does not.' + example: 8a4f500f + flat_name: service.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this service. + type: keyword + service.id: + dashed_name: service-id + description: 'Unique identifier of the running service. If the service is comprised + of many nodes, the `service.id` should be the same for all nodes. + + This id should uniquely identify the service. This makes it possible to correlate + logs and metrics for one specific service, no matter which particular node + emitted the event. + + Note that if you need to see the events from one specific host of the service, + you should filter on that `host.name` or `host.id` instead.' + example: d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6 + flat_name: service.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of the running service. + type: keyword + service.name: + dashed_name: service-name + description: 'Name of the service data is collected from. + + The name of the service is normally user given. This allows for distributed + services that run on multiple hosts to correlate the related instances based + on the name. + + In the case of Elasticsearch the `service.name` could contain the cluster + name. For Beats the `service.name` is by default a copy of the `service.type` + field if no name is specified.' + example: elasticsearch-metrics + flat_name: service.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Name of the service. + type: keyword + service.node.name: + dashed_name: service-node-name + description: 'Name of a service node. + + This allows for two nodes of the same service running on the same host to + be differentiated. Therefore, `service.node.name` should typically be unique + across nodes of a given service. + + In the case of Elasticsearch, the `service.node.name` could contain the unique + node name within the Elasticsearch cluster. In cases where the service doesn''t + have the concept of a node name, the host name or container name can be used + to distinguish running instances that make up this service. If those do not + provide uniqueness (e.g. multiple instances of the service running on the + same host) - the node name can be manually set.' + example: instance-0000000016 + flat_name: service.node.name + ignore_above: 1024 + level: extended + name: node.name + normalize: [] + short: Name of the service node. + type: keyword + service.state: + dashed_name: service-state + description: Current state of the service. + flat_name: service.state + ignore_above: 1024 + level: core + name: state + normalize: [] + short: Current state of the service. + type: keyword + service.type: + dashed_name: service-type + description: 'The type of the service data is collected from. + + The type can be used to group and correlate logs and metrics from one service + type. + + Example: If logs or metrics are collected from Elasticsearch, `service.type` + would be `elasticsearch`.' + example: elasticsearch + flat_name: service.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: The type of the service. + type: keyword + service.version: + dashed_name: service-version + description: 'Version of the service the data was collected from. + + This allows to look at a data set only for a specific version of a service.' + example: 3.2.4 + flat_name: service.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the service. + type: keyword + group: 2 + name: service + prefix: service. + short: Fields describing the service for or from which the data was collected. + title: Service + type: group +source: + description: 'Source fields capture details about the sender of a network exchange/packet. + These fields are populated from a network event, packet, or other event containing + details of a network transaction. + + Source fields are usually populated in conjunction with destination fields. The + source and destination fields are considered the baseline and should always be + filled if an event contains source and destination details from a network transaction. + If the event also contains identification of the client and server roles, then + the client and server fields should also be populated.' + fields: + source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword + source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: wildcard + source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long + source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + level: core + name: domain + normalize: [] + short: Source domain. + type: wildcard + source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: wildcard + source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip + source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword + source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client + to internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip + source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long + source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long + source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long + source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: wildcard + source.subdomain: + dashed_name: source-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: source.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: source + nestings: + - source.as + - source.geo + - source.user + prefix: source. + reused_here: + - full: source.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: source.geo + schema_name: geo + short: Fields describing a location. + - full: source.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the source side of a network connection, used with destination. + title: Source + type: group +threat: + description: "Fields to classify events and alerts according to a threat taxonomy\ + \ such as the MITRE ATT&CK\xAE framework.\nThese fields are for users to classify\ + \ alerts from all of their sources (e.g. IDS, NGFW, etc.) within a common taxonomy.\ + \ The threat.tactic.* are meant to capture the high level category of the threat\ + \ (e.g. \"impact\"). The threat.technique.* fields are meant to capture which\ + \ kind of approach is used by this detected threat, to accomplish the goal (e.g.\ + \ \"endpoint denial of service\")." + fields: + threat.framework: + dashed_name: threat-framework + description: Name of the threat framework used to further categorize and classify + the tactic and technique of the reported threat. Framework classification + can be provided by detecting systems, evaluated at ingest time, or retrospectively + tagged to events. + example: MITRE ATT&CK + flat_name: threat.framework + ignore_above: 1024 + level: extended + name: framework + normalize: [] + short: Threat classification framework. + type: keyword + threat.tactic.id: + dashed_name: threat-tactic-id + description: "The id of tactic used by this threat. You can use a MITRE ATT&CK\xAE\ + \ tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/ )" + example: TA0002 + flat_name: threat.tactic.id + ignore_above: 1024 + level: extended + name: tactic.id + normalize: + - array + short: Threat tactic id. + type: keyword + threat.tactic.name: + dashed_name: threat-tactic-name + description: "Name of the type of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/)" + example: Execution + flat_name: threat.tactic.name + ignore_above: 1024 + level: extended + name: tactic.name + normalize: + - array + short: Threat tactic. + type: keyword + threat.tactic.reference: + dashed_name: threat-tactic-reference + description: "The reference url of tactic used by this threat. You can use a\ + \ MITRE ATT&CK\xAE tactic, for example. (ex. https://attack.mitre.org/tactics/TA0002/\ + \ )" + example: https://attack.mitre.org/tactics/TA0002/ + flat_name: threat.tactic.reference + ignore_above: 1024 + level: extended + name: tactic.reference + normalize: + - array + short: Threat tactic URL reference. + type: keyword + threat.technique.id: + dashed_name: threat-technique-id + description: "The id of technique used by this threat. You can use a MITRE ATT&CK\xAE\ + \ technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: T1059 + flat_name: threat.technique.id + ignore_above: 1024 + level: extended + name: technique.id + normalize: + - array + short: Threat technique id. + type: keyword + threat.technique.name: + dashed_name: threat-technique-name + description: "The name of technique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: Command and Scripting Interpreter + flat_name: threat.technique.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: threat.technique.name.text + name: text + norms: false + type: text + name: technique.name + normalize: + - array + short: Threat technique name. + type: keyword + threat.technique.reference: + dashed_name: threat-technique-reference + description: "The reference url of technique used by this threat. You can use\ + \ a MITRE ATT&CK\xAE technique, for example. (ex. https://attack.mitre.org/techniques/T1059/)" + example: https://attack.mitre.org/techniques/T1059/ + flat_name: threat.technique.reference + ignore_above: 1024 + level: extended + name: technique.reference + normalize: + - array + short: Threat technique URL reference. + type: keyword + threat.technique.subtechnique.id: + dashed_name: threat-technique-subtechnique-id + description: "The full id of subtechnique used by this threat. You can use a\ + \ MITRE ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: T1059.001 + flat_name: threat.technique.subtechnique.id + ignore_above: 1024 + level: extended + name: technique.subtechnique.id + normalize: + - array + short: Threat subtechnique id. + type: keyword + threat.technique.subtechnique.name: + dashed_name: threat-technique-subtechnique-name + description: "The name of subtechnique used by this threat. You can use a MITRE\ + \ ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: PowerShell + flat_name: threat.technique.subtechnique.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: threat.technique.subtechnique.name.text + name: text + norms: false + type: text + name: technique.subtechnique.name + normalize: + - array + short: Threat subtechnique name. + type: keyword + threat.technique.subtechnique.reference: + dashed_name: threat-technique-subtechnique-reference + description: "The reference url of subtechnique used by this threat. You can\ + \ use a MITRE ATT&CK\xAE subtechnique, for example. (ex. https://attack.mitre.org/techniques/T1059/001/)" + example: https://attack.mitre.org/techniques/T1059/001/ + flat_name: threat.technique.subtechnique.reference + ignore_above: 1024 + level: extended + name: technique.subtechnique.reference + normalize: + - array + short: Threat subtechnique URL reference. + type: keyword + group: 2 + name: threat + prefix: threat. + short: Fields to classify events and alerts according to a threat taxonomy. + title: Threat + type: group +tls: + description: Fields related to a TLS connection. These fields focus on the TLS protocol + itself and intentionally avoids in-depth analysis of the related x.509 certificate + files. + fields: + tls.cipher: + dashed_name: tls-cipher + description: String indicating the cipher used during the current connection. + example: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 + flat_name: tls.cipher + ignore_above: 1024 + level: extended + name: cipher + normalize: [] + short: String indicating the cipher used during the current connection. + type: keyword + tls.client.certificate: + dashed_name: tls-client-certificate + description: PEM-encoded stand-alone certificate offered by the client. This + is usually mutually-exclusive of `client.certificate_chain` since this value + also exists in that list. + example: MII... + flat_name: tls.client.certificate + ignore_above: 1024 + level: extended + name: client.certificate + normalize: [] + short: PEM-encoded stand-alone certificate offered by the client. + type: keyword + tls.client.certificate_chain: + dashed_name: tls-client-certificate-chain + description: Array of PEM-encoded certificates that make up the certificate + chain offered by the client. This is usually mutually-exclusive of `client.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + flat_name: tls.client.certificate_chain + ignore_above: 1024 + level: extended + name: client.certificate_chain + normalize: + - array + short: Array of PEM-encoded certificates that make up the certificate chain + offered by the client. + type: keyword + tls.client.hash.md5: + dashed_name: tls-client-hash-md5 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + flat_name: tls.client.hash.md5 + ignore_above: 1024 + level: extended + name: client.hash.md5 + normalize: [] + short: Certificate fingerprint using the MD5 digest of DER-encoded version of + certificate offered by the client. + type: keyword + tls.client.hash.sha1: + dashed_name: tls-client-hash-sha1 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the client. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + flat_name: tls.client.hash.sha1 + ignore_above: 1024 + level: extended + name: client.hash.sha1 + normalize: [] + short: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the client. + type: keyword + tls.client.hash.sha256: + dashed_name: tls-client-hash-sha256 + description: Certificate fingerprint using the SHA256 digest of DER-encoded + version of certificate offered by the client. For consistency with other hash + values, this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + flat_name: tls.client.hash.sha256 + ignore_above: 1024 + level: extended + name: client.hash.sha256 + normalize: [] + short: Certificate fingerprint using the SHA256 digest of DER-encoded version + of certificate offered by the client. + type: keyword + tls.client.issuer: + dashed_name: tls-client-issuer + description: Distinguished name of subject of the issuer of the x.509 certificate + presented by the client. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.client.issuer + level: extended + name: client.issuer + normalize: [] + short: Distinguished name of subject of the issuer of the x.509 certificate + presented by the client. + type: wildcard + tls.client.ja3: + dashed_name: tls-client-ja3 + description: A hash that identifies clients based on how they perform an SSL/TLS + handshake. + example: d4e5b18d6b55c71272893221c96ba240 + flat_name: tls.client.ja3 + ignore_above: 1024 + level: extended + name: client.ja3 + normalize: [] + short: A hash that identifies clients based on how they perform an SSL/TLS handshake. + type: keyword + tls.client.not_after: + dashed_name: tls-client-not-after + description: Date/Time indicating when client certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + flat_name: tls.client.not_after + level: extended + name: client.not_after + normalize: [] + short: Date/Time indicating when client certificate is no longer considered + valid. + type: date + tls.client.not_before: + dashed_name: tls-client-not-before + description: Date/Time indicating when client certificate is first considered + valid. + example: '1970-01-01T00:00:00.000Z' + flat_name: tls.client.not_before + level: extended + name: client.not_before + normalize: [] + short: Date/Time indicating when client certificate is first considered valid. + type: date + tls.client.server_name: + dashed_name: tls-client-server-name + description: Also called an SNI, this tells the server which hostname to which + the client is attempting to connect to. When this value is available, it should + get copied to `destination.domain`. + example: www.elastic.co + flat_name: tls.client.server_name + ignore_above: 1024 + level: extended + name: client.server_name + normalize: [] + short: Hostname the client is trying to connect to. Also called the SNI. + type: keyword + tls.client.subject: + dashed_name: tls-client-subject + description: Distinguished name of subject of the x.509 certificate presented + by the client. + example: CN=myclient, OU=Documentation Team, DC=example, DC=com + flat_name: tls.client.subject + level: extended + name: client.subject + normalize: [] + short: Distinguished name of subject of the x.509 certificate presented by the + client. + type: wildcard + tls.client.supported_ciphers: + dashed_name: tls-client-supported-ciphers + description: Array of ciphers offered by the client during the client hello. + example: '["TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384", "TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384", + "..."]' + flat_name: tls.client.supported_ciphers + ignore_above: 1024 + level: extended + name: client.supported_ciphers + normalize: + - array + short: Array of ciphers offered by the client during the client hello. + type: keyword + tls.client.x509.alternative_names: + dashed_name: tls-client-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + flat_name: tls.client.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword + tls.client.x509.issuer.common_name: + dashed_name: tls-client-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: tls.client.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword + tls.client.x509.issuer.country: + dashed_name: tls-client-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: tls.client.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword + tls.client.x509.issuer.distinguished_name: + dashed_name: tls-client-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: tls.client.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard + tls.client.x509.issuer.locality: + dashed_name: tls-client-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: tls.client.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + tls.client.x509.issuer.organization: + dashed_name: tls-client-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: tls.client.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword + tls.client.x509.issuer.organizational_unit: + dashed_name: tls-client-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: tls.client.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword + tls.client.x509.issuer.state_or_province: + dashed_name: tls-client-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.client.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + tls.client.x509.not_after: + dashed_name: tls-client-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: tls.client.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date + tls.client.x509.not_before: + dashed_name: tls-client-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: tls.client.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date + tls.client.x509.public_key_algorithm: + dashed_name: tls-client-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: tls.client.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword + tls.client.x509.public_key_curve: + dashed_name: tls-client-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + flat_name: tls.client.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword + tls.client.x509.public_key_exponent: + dashed_name: tls-client-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: tls.client.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long + tls.client.x509.public_key_size: + dashed_name: tls-client-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: tls.client.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long + tls.client.x509.serial_number: + dashed_name: tls-client-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: tls.client.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword + tls.client.x509.signature_algorithm: + dashed_name: tls-client-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: tls.client.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword + tls.client.x509.subject.common_name: + dashed_name: tls-client-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: tls.client.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword + tls.client.x509.subject.country: + dashed_name: tls-client-x509-subject-country + description: List of country (C) code + example: US + flat_name: tls.client.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword + tls.client.x509.subject.distinguished_name: + dashed_name: tls-client-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: tls.client.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard + tls.client.x509.subject.locality: + dashed_name: tls-client-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: tls.client.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + tls.client.x509.subject.organization: + dashed_name: tls-client-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: tls.client.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword + tls.client.x509.subject.organizational_unit: + dashed_name: tls-client-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: tls.client.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword + tls.client.x509.subject.state_or_province: + dashed_name: tls-client-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.client.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + tls.client.x509.version_number: + dashed_name: tls-client-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: tls.client.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword + tls.curve: + dashed_name: tls-curve + description: String indicating the curve used for the given cipher, when applicable. + example: secp256r1 + flat_name: tls.curve + ignore_above: 1024 + level: extended + name: curve + normalize: [] + short: String indicating the curve used for the given cipher, when applicable. + type: keyword + tls.established: + dashed_name: tls-established + description: Boolean flag indicating if the TLS negotiation was successful and + transitioned to an encrypted tunnel. + flat_name: tls.established + level: extended + name: established + normalize: [] + short: Boolean flag indicating if the TLS negotiation was successful and transitioned + to an encrypted tunnel. + type: boolean + tls.next_protocol: + dashed_name: tls-next-protocol + description: String indicating the protocol being tunneled. Per the values in + the IANA registry (https://www.iana.org/assignments/tls-extensiontype-values/tls-extensiontype-values.xhtml#alpn-protocol-ids), + this string should be lower case. + example: http/1.1 + flat_name: tls.next_protocol + ignore_above: 1024 + level: extended + name: next_protocol + normalize: [] + short: String indicating the protocol being tunneled. + type: keyword + tls.resumed: + dashed_name: tls-resumed + description: Boolean flag indicating if this TLS connection was resumed from + an existing TLS negotiation. + flat_name: tls.resumed + level: extended + name: resumed + normalize: [] + short: Boolean flag indicating if this TLS connection was resumed from an existing + TLS negotiation. + type: boolean + tls.server.certificate: + dashed_name: tls-server-certificate + description: PEM-encoded stand-alone certificate offered by the server. This + is usually mutually-exclusive of `server.certificate_chain` since this value + also exists in that list. + example: MII... + flat_name: tls.server.certificate + ignore_above: 1024 + level: extended + name: server.certificate + normalize: [] + short: PEM-encoded stand-alone certificate offered by the server. + type: keyword + tls.server.certificate_chain: + dashed_name: tls-server-certificate-chain + description: Array of PEM-encoded certificates that make up the certificate + chain offered by the server. This is usually mutually-exclusive of `server.certificate` + since that value should be the first certificate in the chain. + example: '["MII...", "MII..."]' + flat_name: tls.server.certificate_chain + ignore_above: 1024 + level: extended + name: server.certificate_chain + normalize: + - array + short: Array of PEM-encoded certificates that make up the certificate chain + offered by the server. + type: keyword + tls.server.hash.md5: + dashed_name: tls-server-hash-md5 + description: Certificate fingerprint using the MD5 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC + flat_name: tls.server.hash.md5 + ignore_above: 1024 + level: extended + name: server.hash.md5 + normalize: [] + short: Certificate fingerprint using the MD5 digest of DER-encoded version of + certificate offered by the server. + type: keyword + tls.server.hash.sha1: + dashed_name: tls-server-hash-sha1 + description: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the server. For consistency with other hash values, + this value should be formatted as an uppercase hash. + example: 9E393D93138888D288266C2D915214D1D1CCEB2A + flat_name: tls.server.hash.sha1 + ignore_above: 1024 + level: extended + name: server.hash.sha1 + normalize: [] + short: Certificate fingerprint using the SHA1 digest of DER-encoded version + of certificate offered by the server. + type: keyword + tls.server.hash.sha256: + dashed_name: tls-server-hash-sha256 + description: Certificate fingerprint using the SHA256 digest of DER-encoded + version of certificate offered by the server. For consistency with other hash + values, this value should be formatted as an uppercase hash. + example: 0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0 + flat_name: tls.server.hash.sha256 + ignore_above: 1024 + level: extended + name: server.hash.sha256 + normalize: [] + short: Certificate fingerprint using the SHA256 digest of DER-encoded version + of certificate offered by the server. + type: keyword + tls.server.issuer: + dashed_name: tls-server-issuer + description: Subject of the issuer of the x.509 certificate presented by the + server. + example: CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.server.issuer + level: extended + name: server.issuer + normalize: [] + short: Subject of the issuer of the x.509 certificate presented by the server. + type: wildcard + tls.server.ja3s: + dashed_name: tls-server-ja3s + description: A hash that identifies servers based on how they perform an SSL/TLS + handshake. + example: 394441ab65754e2207b1e1b457b3641d + flat_name: tls.server.ja3s + ignore_above: 1024 + level: extended + name: server.ja3s + normalize: [] + short: A hash that identifies servers based on how they perform an SSL/TLS handshake. + type: keyword + tls.server.not_after: + dashed_name: tls-server-not-after + description: Timestamp indicating when server certificate is no longer considered + valid. + example: '2021-01-01T00:00:00.000Z' + flat_name: tls.server.not_after + level: extended + name: server.not_after + normalize: [] + short: Timestamp indicating when server certificate is no longer considered + valid. + type: date + tls.server.not_before: + dashed_name: tls-server-not-before + description: Timestamp indicating when server certificate is first considered + valid. + example: '1970-01-01T00:00:00.000Z' + flat_name: tls.server.not_before + level: extended + name: server.not_before + normalize: [] + short: Timestamp indicating when server certificate is first considered valid. + type: date + tls.server.subject: + dashed_name: tls-server-subject + description: Subject of the x.509 certificate presented by the server. + example: CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com + flat_name: tls.server.subject + level: extended + name: server.subject + normalize: [] + short: Subject of the x.509 certificate presented by the server. + type: wildcard + tls.server.x509.alternative_names: + dashed_name: tls-server-x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + flat_name: tls.server.x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + original_fieldset: x509 + short: List of subject alternative names (SAN). + type: keyword + tls.server.x509.issuer.common_name: + dashed_name: tls-server-x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: tls.server.x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + original_fieldset: x509 + short: List of common name (CN) of issuing certificate authority. + type: keyword + tls.server.x509.issuer.country: + dashed_name: tls-server-x509-issuer-country + description: List of country (C) codes + example: US + flat_name: tls.server.x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) codes + type: keyword + tls.server.x509.issuer.distinguished_name: + dashed_name: tls-server-x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: tls.server.x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard + tls.server.x509.issuer.locality: + dashed_name: tls-server-x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: tls.server.x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + tls.server.x509.issuer.organization: + dashed_name: tls-server-x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: tls.server.x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of issuing certificate authority. + type: keyword + tls.server.x509.issuer.organizational_unit: + dashed_name: tls-server-x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: tls.server.x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of issuing certificate authority. + type: keyword + tls.server.x509.issuer.state_or_province: + dashed_name: tls-server-x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.server.x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + tls.server.x509.not_after: + dashed_name: tls-server-x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: tls.server.x509.not_after + level: extended + name: not_after + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is no longer considered valid. + type: date + tls.server.x509.not_before: + dashed_name: tls-server-x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: tls.server.x509.not_before + level: extended + name: not_before + normalize: [] + original_fieldset: x509 + short: Time at which the certificate is first considered valid. + type: date + tls.server.x509.public_key_algorithm: + dashed_name: tls-server-x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: tls.server.x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + original_fieldset: x509 + short: Algorithm used to generate the public key. + type: keyword + tls.server.x509.public_key_curve: + dashed_name: tls-server-x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + flat_name: tls.server.x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + original_fieldset: x509 + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword + tls.server.x509.public_key_exponent: + dashed_name: tls-server-x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: tls.server.x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + original_fieldset: x509 + short: Exponent used to derive the public key. This is algorithm specific. + type: long + tls.server.x509.public_key_size: + dashed_name: tls-server-x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: tls.server.x509.public_key_size + level: extended + name: public_key_size + normalize: [] + original_fieldset: x509 + short: The size of the public key space in bits. + type: long + tls.server.x509.serial_number: + dashed_name: tls-server-x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: tls.server.x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + original_fieldset: x509 + short: Unique serial number issued by the certificate authority. + type: keyword + tls.server.x509.signature_algorithm: + dashed_name: tls-server-x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: tls.server.x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + original_fieldset: x509 + short: Identifier for certificate signature algorithm. + type: keyword + tls.server.x509.subject.common_name: + dashed_name: tls-server-x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: tls.server.x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + original_fieldset: x509 + short: List of common names (CN) of subject. + type: keyword + tls.server.x509.subject.country: + dashed_name: tls-server-x509-subject-country + description: List of country (C) code + example: US + flat_name: tls.server.x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + original_fieldset: x509 + short: List of country (C) code + type: keyword + tls.server.x509.subject.distinguished_name: + dashed_name: tls-server-x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: tls.server.x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + original_fieldset: x509 + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard + tls.server.x509.subject.locality: + dashed_name: tls-server-x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: tls.server.x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + original_fieldset: x509 + short: List of locality names (L) + type: keyword + tls.server.x509.subject.organization: + dashed_name: tls-server-x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: tls.server.x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + original_fieldset: x509 + short: List of organizations (O) of subject. + type: keyword + tls.server.x509.subject.organizational_unit: + dashed_name: tls-server-x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: tls.server.x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + original_fieldset: x509 + short: List of organizational units (OU) of subject. + type: keyword + tls.server.x509.subject.state_or_province: + dashed_name: tls-server-x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: tls.server.x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + original_fieldset: x509 + short: List of state or province names (ST, S, or P) + type: keyword + tls.server.x509.version_number: + dashed_name: tls-server-x509-version-number + description: Version of x509 format. + example: 3 + flat_name: tls.server.x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + original_fieldset: x509 + short: Version of x509 format. + type: keyword + tls.version: + dashed_name: tls-version + description: Numeric part of the version parsed from the original string. + example: '1.2' + flat_name: tls.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Numeric part of the version parsed from the original string. + type: keyword + tls.version_protocol: + dashed_name: tls-version-protocol + description: Normalized lowercase protocol name parsed from original string. + example: tls + flat_name: tls.version_protocol + ignore_above: 1024 + level: extended + name: version_protocol + normalize: [] + short: Normalized lowercase protocol name parsed from original string. + type: keyword + group: 2 + name: tls + nestings: + - tls.client.x509 + - tls.server.x509 + prefix: tls. + reused_here: + - full: tls.client.x509 + schema_name: x509 + short: These fields contain x509 certificate metadata. + - full: tls.server.x509 + schema_name: x509 + short: These fields contain x509 certificate metadata. + short: Fields describing a TLS connection. + title: TLS + type: group +tracing: + description: Distributed tracing makes it possible to analyze performance throughout + a microservice architecture all in one view. This is accomplished by tracing all + of the requests - from the initial web request in the front-end service - to queries + made through multiple back-end services. + fields: + span.id: + dashed_name: span-id + description: 'Unique identifier of the span within the scope of its trace. + + A span represents an operation within a transaction, such as a request to + another service, or a database query.' + example: 3ff9a8981b7ccd5a + flat_name: span.id + ignore_above: 1024 + level: extended + name: span.id + normalize: [] + short: Unique identifier of the span within the scope of its trace. + type: keyword + trace.id: + dashed_name: trace-id + description: 'Unique identifier of the trace. + + A trace groups multiple events like transactions that belong together. For + example, a user request handled by multiple inter-connected services.' + example: 4bf92f3577b34da6a3ce929d0e0e4736 + flat_name: trace.id + ignore_above: 1024 + level: extended + name: trace.id + normalize: [] + short: Unique identifier of the trace. + type: keyword + transaction.id: + dashed_name: transaction-id + description: 'Unique identifier of the transaction within the scope of its trace. + + A transaction is the highest level of work measured within a service, such + as a request to a server.' + example: 00f067aa0ba902b7 + flat_name: transaction.id + ignore_above: 1024 + level: extended + name: transaction.id + normalize: [] + short: Unique identifier of the transaction within the scope of its trace. + type: keyword + group: 2 + name: tracing + prefix: '' + root: true + short: Fields related to distributed tracing. + title: Tracing + type: group +url: + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + fields: + url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: wildcard + url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request + url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword + url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword + url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: wildcard + url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: wildcard + url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword + url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: wildcard + url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long + url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword + url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: wildcard + url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword + url.subdomain: + dashed_name: url-subdomain + description: 'The subdomain portion of a fully qualified domain name includes + all of the names except the host name under the registered_domain. In a partially + qualified domain, or if the the qualification level of the full name cannot + be determined, subdomain contains all of the names below the registered domain. + + For example the subdomain portion of "www.east.mydomain.co.uk" is "east". + If the domain has multiple levels of subdomain, such as "sub2.sub1.example.com", + the subdomain field should contain "sub2.sub1", with no trailing period.' + example: east + flat_name: url.subdomain + ignore_above: 1024 + level: extended + name: subdomain + normalize: [] + short: The subdomain of the domain. + type: keyword + url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword + group: 2 + name: url + prefix: url. + short: Fields that let you store URLs in various forms. + title: URL + type: group +user: + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + fields: + user.changes.domain: + dashed_name: user-changes-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.changes.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + user.changes.email: + dashed_name: user-changes-email + description: User email address. + flat_name: user.changes.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + user.changes.full_name: + dashed_name: user-changes-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.changes.full_name + level: extended + multi_fields: + - flat_name: user.changes.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + user.changes.group.domain: + dashed_name: user-changes-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.changes.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + user.changes.group.id: + dashed_name: user-changes-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.changes.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + user.changes.group.name: + dashed_name: user-changes-group-name + description: Name of the group. + flat_name: user.changes.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + user.changes.hash: + dashed_name: user-changes-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.changes.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + user.changes.id: + dashed_name: user-changes-id + description: Unique identifier of the user. + flat_name: user.changes.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + user.changes.name: + dashed_name: user-changes-name + description: Short name or login of the user. + example: albert + flat_name: user.changes.name + level: core + multi_fields: + - flat_name: user.changes.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + user.changes.roles: + dashed_name: user-changes-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.changes.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + user.domain: + dashed_name: user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Name of the directory the user is a member of. + type: keyword + user.effective.domain: + dashed_name: user-effective-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.effective.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + user.effective.email: + dashed_name: user-effective-email + description: User email address. + flat_name: user.effective.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + user.effective.full_name: + dashed_name: user-effective-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.effective.full_name + level: extended + multi_fields: + - flat_name: user.effective.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + user.effective.group.domain: + dashed_name: user-effective-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.effective.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + user.effective.group.id: + dashed_name: user-effective-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.effective.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + user.effective.group.name: + dashed_name: user-effective-group-name + description: Name of the group. + flat_name: user.effective.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + user.effective.hash: + dashed_name: user-effective-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.effective.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + user.effective.id: + dashed_name: user-effective-id + description: Unique identifier of the user. + flat_name: user.effective.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + user.effective.name: + dashed_name: user-effective-name + description: Short name or login of the user. + example: albert + flat_name: user.effective.name + level: core + multi_fields: + - flat_name: user.effective.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + user.effective.roles: + dashed_name: user-effective-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.effective.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + user.email: + dashed_name: user-email + description: User email address. + flat_name: user.email + level: extended + name: email + normalize: [] + short: User email address. + type: wildcard + user.full_name: + dashed_name: user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.full_name + level: extended + multi_fields: + - flat_name: user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + short: User's full name, if available. + type: wildcard + user.group.domain: + dashed_name: user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + user.group.id: + dashed_name: user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + user.group.name: + dashed_name: user-group-name + description: Name of the group. + flat_name: user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + user.hash: + dashed_name: user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + user.id: + dashed_name: user-id + description: Unique identifier of the user. + flat_name: user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of the user. + type: keyword + user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: wildcard + user.roles: + dashed_name: user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + short: Array of user roles at the time of the event. + type: keyword + user.target.domain: + dashed_name: user-target-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.target.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + user.target.email: + dashed_name: user-target-email + description: User email address. + flat_name: user.target.email + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: wildcard + user.target.full_name: + dashed_name: user-target-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: user.target.full_name + level: extended + multi_fields: + - flat_name: user.target.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: wildcard + user.target.group.domain: + dashed_name: user-target-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: user.target.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + user.target.group.id: + dashed_name: user-target-group-id + description: Unique identifier for the group on the system/platform. + flat_name: user.target.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + user.target.group.name: + dashed_name: user-target-group-name + description: Name of the group. + flat_name: user.target.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + user.target.hash: + dashed_name: user-target-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: user.target.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + user.target.id: + dashed_name: user-target-id + description: Unique identifier of the user. + flat_name: user.target.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + user.target.name: + dashed_name: user-target-name + description: Short name or login of the user. + example: albert + flat_name: user.target.name + level: core + multi_fields: + - flat_name: user.target.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: wildcard + user.target.roles: + dashed_name: user-target-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: user.target.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: user + nestings: + - user.changes + - user.effective + - user.group + - user.target + prefix: user. + reusable: + expected: + - as: user + at: client + full: client.user + - as: user + at: destination + full: destination.user + - as: user + at: host + full: host.user + - as: user + at: server + full: server.user + - as: user + at: source + full: source.user + - as: target + at: user + full: user.target + - as: effective + at: user + full: user.effective + - as: changes + at: user + full: user.changes + top_level: true + reused_here: + - full: user.group + schema_name: group + short: User's group relevant to the event. + - full: user.target + schema_name: user + short: Fields to describe the user relevant to the event. + - full: user.effective + schema_name: user + short: Fields to describe the user relevant to the event. + - full: user.changes + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields to describe the user relevant to the event. + title: User + type: group +user_agent: + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + fields: + user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword + user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword + user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: wildcard + user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: wildcard + user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword + user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: wildcard + user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword + user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword + group: 2 + name: user_agent + nestings: + - user_agent.os + prefix: user_agent. + reused_here: + - full: user_agent.os + schema_name: os + short: OS fields contain information about the operating system. + short: Fields to describe a browser user_agent string. + title: User agent + type: group +vlan: + description: 'The VLAN fields are used to identify 802.1q tag(s) of a packet, as + well as ingress and egress VLAN associations of an observer in relation to a specific + packet or connection. + + Network.vlan fields are used to record a single VLAN tag, or the outer tag in + the case of q-in-q encapsulations, for a packet or connection as observed, typically + provided by a network sensor (e.g. Zeek, Wireshark) passively reporting on traffic. + + Network.inner VLAN fields are used to report inner q-in-q 802.1q tags (multiple + 802.1q encapsulations) as observed, typically provided by a network sensor (e.g. + Zeek, Wireshark) passively reporting on traffic. Network.inner VLAN fields should + only be used in addition to network.vlan fields to indicate q-in-q tagging. + + Observer.ingress and observer.egress VLAN values are used to record observer specific + information when observer events contain discrete ingress and egress VLAN information, + typically provided by firewalls, routers, or load balancers.' + fields: + vlan.id: + dashed_name: vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: VLAN ID as reported by the observer. + type: keyword + vlan.name: + dashed_name: vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Optional VLAN name as reported by the observer. + type: keyword + group: 2 + name: vlan + prefix: vlan. + reusable: + expected: + - as: vlan + at: observer.ingress + full: observer.ingress.vlan + - as: vlan + at: observer.egress + full: observer.egress.vlan + - as: vlan + at: network + full: network.vlan + - as: vlan + at: network.inner + full: network.inner.vlan + top_level: false + short: Fields to describe observed VLAN information. + title: VLAN + type: group +vulnerability: + description: The vulnerability fields describe information about a vulnerability + that is relevant to an event. + fields: + vulnerability.category: + dashed_name: vulnerability-category + description: 'The type of system or architecture that the vulnerability affects. + These may be platform-specific (for example, Debian or SUSE) or general (for + example, Database or Firewall). For example (https://qualysguard.qualys.com/qwebhelp/fo_portal/knowledgebase/vulnerability_categories.htm[Qualys + vulnerability categories]) + + This field must be an array.' + example: '["Firewall"]' + flat_name: vulnerability.category + ignore_above: 1024 + level: extended + name: category + normalize: + - array + short: Category of a vulnerability. + type: keyword + vulnerability.classification: + dashed_name: vulnerability-classification + description: The classification of the vulnerability scoring system. For example + (https://www.first.org/cvss/) + example: CVSS + flat_name: vulnerability.classification + ignore_above: 1024 + level: extended + name: classification + normalize: [] + short: Classification of the vulnerability. + type: keyword + vulnerability.description: + dashed_name: vulnerability-description + description: The description of the vulnerability that provides additional context + of the vulnerability. For example (https://cve.mitre.org/about/faqs.html#cve_entry_descriptions_created[Common + Vulnerabilities and Exposure CVE description]) + example: In macOS before 2.12.6, there is a vulnerability in the RPC... + flat_name: vulnerability.description + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: vulnerability.description.text + name: text + norms: false + type: text + name: description + normalize: [] + short: Description of the vulnerability. + type: keyword + vulnerability.enumeration: + dashed_name: vulnerability-enumeration + description: The type of identifier used for this vulnerability. For example + (https://cve.mitre.org/about/) + example: CVE + flat_name: vulnerability.enumeration + ignore_above: 1024 + level: extended + name: enumeration + normalize: [] + short: Identifier of the vulnerability. + type: keyword + vulnerability.id: + dashed_name: vulnerability-id + description: The identification (ID) is the number portion of a vulnerability + entry. It includes a unique identification number for the vulnerability. For + example (https://cve.mitre.org/about/faqs.html#what_is_cve_id)[Common Vulnerabilities + and Exposure CVE ID] + example: CVE-2019-00001 + flat_name: vulnerability.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + short: ID of the vulnerability. + type: keyword + vulnerability.reference: + dashed_name: vulnerability-reference + description: A resource that provides additional information, context, and mitigations + for the identified vulnerability. + example: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111 + flat_name: vulnerability.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Reference of the vulnerability. + type: keyword + vulnerability.report_id: + dashed_name: vulnerability-report-id + description: The report or scan identification number. + example: 20191018.0001 + flat_name: vulnerability.report_id + ignore_above: 1024 + level: extended + name: report_id + normalize: [] + short: Scan identification number. + type: keyword + vulnerability.scanner.vendor: + dashed_name: vulnerability-scanner-vendor + description: The name of the vulnerability scanner vendor. + example: Tenable + flat_name: vulnerability.scanner.vendor + ignore_above: 1024 + level: extended + name: scanner.vendor + normalize: [] + short: Name of the scanner vendor. + type: keyword + vulnerability.score.base: + dashed_name: vulnerability-score-base + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Base scores cover an assessment for exploitability metrics (attack vector, + complexity, privileges, and user interaction), impact metrics (confidentiality, + integrity, and availability), and scope. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + flat_name: vulnerability.score.base + level: extended + name: score.base + normalize: [] + short: Vulnerability Base score. + type: float + vulnerability.score.environmental: + dashed_name: vulnerability-score-environmental + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Environmental scores cover an assessment for any modified Base metrics, confidentiality, + integrity, and availability requirements. For example (https://www.first.org/cvss/specification-document)' + example: 5.5 + flat_name: vulnerability.score.environmental + level: extended + name: score.environmental + normalize: [] + short: Vulnerability Environmental score. + type: float + vulnerability.score.temporal: + dashed_name: vulnerability-score-temporal + description: 'Scores can range from 0.0 to 10.0, with 10.0 being the most severe. + + Temporal scores cover an assessment for code maturity, remediation level, + and confidence. For example (https://www.first.org/cvss/specification-document)' + flat_name: vulnerability.score.temporal + level: extended + name: score.temporal + normalize: [] + short: Vulnerability Temporal score. + type: float + vulnerability.score.version: + dashed_name: vulnerability-score-version + description: 'The National Vulnerability Database (NVD) provides qualitative + severity rankings of "Low", "Medium", and "High" for CVSS v2.0 base score + ranges in addition to the severity ratings for CVSS v3.0 as they are defined + in the CVSS v3.0 specification. + + CVSS is owned and managed by FIRST.Org, Inc. (FIRST), a US-based non-profit + organization, whose mission is to help computer security incident response + teams across the world. For example (https://nvd.nist.gov/vuln-metrics/cvss)' + example: 2.0 + flat_name: vulnerability.score.version + ignore_above: 1024 + level: extended + name: score.version + normalize: [] + short: CVSS version. + type: keyword + vulnerability.severity: + dashed_name: vulnerability-severity + description: The severity of the vulnerability can help with metrics and internal + prioritization regarding remediation. For example (https://nvd.nist.gov/vuln-metrics/cvss) + example: Critical + flat_name: vulnerability.severity + ignore_above: 1024 + level: extended + name: severity + normalize: [] + short: Severity of the vulnerability. + type: keyword + group: 2 + name: vulnerability + prefix: vulnerability. + short: Fields to describe the vulnerability relevant to an event. + title: Vulnerability + type: group +x509: + description: This implements the common core fields for x509 certificates. This + information is likely logged with TLS sessions, digital signatures found in executable + binaries, S/MIME information in email bodies, or analysis of files on disk. When + only a single certificate is logged in an event, it should be nested under `file`. + When hashes of the DER-encoded certificate are available, the `hash` data set + should be populated as well (e.g. `file.hash.sha256`). For events that contain + certificate information for both sides of the connection, the x509 object could + be nested under the respective side of the connection information (e.g. `tls.server.x509`). + fields: + x509.alternative_names: + dashed_name: x509-alternative-names + description: List of subject alternative names (SAN). Name types vary by certificate + authority and certificate type but commonly contain IP addresses, DNS names + (and wildcards), and email addresses. + example: '*.elastic.co' + flat_name: x509.alternative_names + ignore_above: 1024 + level: extended + name: alternative_names + normalize: + - array + short: List of subject alternative names (SAN). + type: keyword + x509.issuer.common_name: + dashed_name: x509-issuer-common-name + description: List of common name (CN) of issuing certificate authority. + example: Example SHA2 High Assurance Server CA + flat_name: x509.issuer.common_name + ignore_above: 1024 + level: extended + name: issuer.common_name + normalize: + - array + short: List of common name (CN) of issuing certificate authority. + type: keyword + x509.issuer.country: + dashed_name: x509-issuer-country + description: List of country (C) codes + example: US + flat_name: x509.issuer.country + ignore_above: 1024 + level: extended + name: issuer.country + normalize: + - array + short: List of country (C) codes + type: keyword + x509.issuer.distinguished_name: + dashed_name: x509-issuer-distinguished-name + description: Distinguished name (DN) of issuing certificate authority. + example: C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance + Server CA + flat_name: x509.issuer.distinguished_name + level: extended + name: issuer.distinguished_name + normalize: [] + short: Distinguished name (DN) of issuing certificate authority. + type: wildcard + x509.issuer.locality: + dashed_name: x509-issuer-locality + description: List of locality names (L) + example: Mountain View + flat_name: x509.issuer.locality + ignore_above: 1024 + level: extended + name: issuer.locality + normalize: + - array + short: List of locality names (L) + type: keyword + x509.issuer.organization: + dashed_name: x509-issuer-organization + description: List of organizations (O) of issuing certificate authority. + example: Example Inc + flat_name: x509.issuer.organization + ignore_above: 1024 + level: extended + name: issuer.organization + normalize: + - array + short: List of organizations (O) of issuing certificate authority. + type: keyword + x509.issuer.organizational_unit: + dashed_name: x509-issuer-organizational-unit + description: List of organizational units (OU) of issuing certificate authority. + example: www.example.com + flat_name: x509.issuer.organizational_unit + ignore_above: 1024 + level: extended + name: issuer.organizational_unit + normalize: + - array + short: List of organizational units (OU) of issuing certificate authority. + type: keyword + x509.issuer.state_or_province: + dashed_name: x509-issuer-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: x509.issuer.state_or_province + ignore_above: 1024 + level: extended + name: issuer.state_or_province + normalize: + - array + short: List of state or province names (ST, S, or P) + type: keyword + x509.not_after: + dashed_name: x509-not-after + description: Time at which the certificate is no longer considered valid. + example: 2020-07-16 03:15:39+00:00 + flat_name: x509.not_after + level: extended + name: not_after + normalize: [] + short: Time at which the certificate is no longer considered valid. + type: date + x509.not_before: + dashed_name: x509-not-before + description: Time at which the certificate is first considered valid. + example: 2019-08-16 01:40:25+00:00 + flat_name: x509.not_before + level: extended + name: not_before + normalize: [] + short: Time at which the certificate is first considered valid. + type: date + x509.public_key_algorithm: + dashed_name: x509-public-key-algorithm + description: Algorithm used to generate the public key. + example: RSA + flat_name: x509.public_key_algorithm + ignore_above: 1024 + level: extended + name: public_key_algorithm + normalize: [] + short: Algorithm used to generate the public key. + type: keyword + x509.public_key_curve: + dashed_name: x509-public-key-curve + description: The curve used by the elliptic curve public key algorithm. This + is algorithm specific. + example: nistp521 + flat_name: x509.public_key_curve + ignore_above: 1024 + level: extended + name: public_key_curve + normalize: [] + short: The curve used by the elliptic curve public key algorithm. This is algorithm + specific. + type: keyword + x509.public_key_exponent: + dashed_name: x509-public-key-exponent + description: Exponent used to derive the public key. This is algorithm specific. + doc_values: false + example: 65537 + flat_name: x509.public_key_exponent + index: false + level: extended + name: public_key_exponent + normalize: [] + short: Exponent used to derive the public key. This is algorithm specific. + type: long + x509.public_key_size: + dashed_name: x509-public-key-size + description: The size of the public key space in bits. + example: 2048 + flat_name: x509.public_key_size + level: extended + name: public_key_size + normalize: [] + short: The size of the public key space in bits. + type: long + x509.serial_number: + dashed_name: x509-serial-number + description: Unique serial number issued by the certificate authority. For consistency, + if this value is alphanumeric, it should be formatted without colons and uppercase + characters. + example: 55FBB9C7DEBF09809D12CCAA + flat_name: x509.serial_number + ignore_above: 1024 + level: extended + name: serial_number + normalize: [] + short: Unique serial number issued by the certificate authority. + type: keyword + x509.signature_algorithm: + dashed_name: x509-signature-algorithm + description: Identifier for certificate signature algorithm. We recommend using + names found in Go Lang Crypto library. See https://github.com/golang/go/blob/go1.14/src/crypto/x509/x509.go#L337-L353. + example: SHA256-RSA + flat_name: x509.signature_algorithm + ignore_above: 1024 + level: extended + name: signature_algorithm + normalize: [] + short: Identifier for certificate signature algorithm. + type: keyword + x509.subject.common_name: + dashed_name: x509-subject-common-name + description: List of common names (CN) of subject. + example: shared.global.example.net + flat_name: x509.subject.common_name + ignore_above: 1024 + level: extended + name: subject.common_name + normalize: + - array + short: List of common names (CN) of subject. + type: keyword + x509.subject.country: + dashed_name: x509-subject-country + description: List of country (C) code + example: US + flat_name: x509.subject.country + ignore_above: 1024 + level: extended + name: subject.country + normalize: + - array + short: List of country (C) code + type: keyword + x509.subject.distinguished_name: + dashed_name: x509-subject-distinguished-name + description: Distinguished name (DN) of the certificate subject entity. + example: C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net + flat_name: x509.subject.distinguished_name + level: extended + name: subject.distinguished_name + normalize: [] + short: Distinguished name (DN) of the certificate subject entity. + type: wildcard + x509.subject.locality: + dashed_name: x509-subject-locality + description: List of locality names (L) + example: San Francisco + flat_name: x509.subject.locality + ignore_above: 1024 + level: extended + name: subject.locality + normalize: + - array + short: List of locality names (L) + type: keyword + x509.subject.organization: + dashed_name: x509-subject-organization + description: List of organizations (O) of subject. + example: Example, Inc. + flat_name: x509.subject.organization + ignore_above: 1024 + level: extended + name: subject.organization + normalize: + - array + short: List of organizations (O) of subject. + type: keyword + x509.subject.organizational_unit: + dashed_name: x509-subject-organizational-unit + description: List of organizational units (OU) of subject. + flat_name: x509.subject.organizational_unit + ignore_above: 1024 + level: extended + name: subject.organizational_unit + normalize: + - array + short: List of organizational units (OU) of subject. + type: keyword + x509.subject.state_or_province: + dashed_name: x509-subject-state-or-province + description: List of state or province names (ST, S, or P) + example: California + flat_name: x509.subject.state_or_province + ignore_above: 1024 + level: extended + name: subject.state_or_province + normalize: + - array + short: List of state or province names (ST, S, or P) + type: keyword + x509.version_number: + dashed_name: x509-version-number + description: Version of x509 format. + example: 3 + flat_name: x509.version_number + ignore_above: 1024 + level: extended + name: version_number + normalize: [] + short: Version of x509 format. + type: keyword + group: 2 + name: x509 + prefix: x509. + reusable: + expected: + - as: x509 + at: file + full: file.x509 + - as: x509 + at: tls.client + full: tls.client.x509 + - as: x509 + at: tls.server + full: tls.server.x509 + top_level: false + short: These fields contain x509 certificate metadata. + title: x509 Certificate + type: group diff --git a/experimental/generated/elasticsearch/7/template.json b/experimental/generated/elasticsearch/7/template.json new file mode 100644 index 0000000000..c4cded14d5 --- /dev/null +++ b/experimental/generated/elasticsearch/7/template.json @@ -0,0 +1,3332 @@ +{ + "index_patterns": [ + "ecs-*" + ], + "mappings": { + "_meta": { + "version": "2.0.0-dev" + }, + "date_detection": false, + "dynamic_templates": [ + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "agent": { + "properties": { + "build": { + "properties": { + "original": { + "type": "wildcard" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "type": "wildcard" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "type": "wildcard" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "cloud": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "availability_zone": { + "ignore_above": 1024, + "type": "keyword" + }, + "instance": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "machine": { + "properties": { + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "project": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "region": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "container": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "image": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "tag": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "runtime": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "type": "wildcard" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "type": "wildcard" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dll": { + "properties": { + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "type": "wildcard" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "dns": { + "properties": { + "answers": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "data": { + "type": "wildcard" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "ttl": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "header_flags": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "op_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "question": { + "properties": { + "class": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "type": "wildcard" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "resolved_ip": { + "type": "ip" + }, + "response_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "error": { + "properties": { + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "message": { + "norms": false, + "type": "text" + }, + "stack_trace": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "type": { + "type": "wildcard" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "index": false, + "type": "wildcard" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "file": { + "properties": { + "accessed": { + "type": "date" + }, + "attributes": { + "ignore_above": 1024, + "type": "keyword" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "created": { + "type": "date" + }, + "ctime": { + "type": "date" + }, + "device": { + "ignore_above": 1024, + "type": "keyword" + }, + "directory": { + "type": "wildcard" + }, + "drive_letter": { + "ignore_above": 1, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "gid": { + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "inode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "mode": { + "ignore_above": 1024, + "type": "keyword" + }, + "mtime": { + "type": "date" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "owner": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "type": "wildcard" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "size": { + "type": "long" + }, + "target_path": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uid": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "host": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "type": "wildcard" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "uptime": { + "type": "long" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "type": "wildcard" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + }, + "bytes": { + "type": "long" + }, + "mime_type": { + "ignore_above": 1024, + "type": "keyword" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "log": { + "properties": { + "file": { + "properties": { + "path": { + "type": "wildcard" + } + } + }, + "level": { + "ignore_above": 1024, + "type": "keyword" + }, + "logger": { + "type": "wildcard" + }, + "origin": { + "properties": { + "file": { + "properties": { + "line": { + "type": "integer" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "function": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "syslog": { + "properties": { + "facility": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "priority": { + "type": "long" + }, + "severity": { + "properties": { + "code": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "object" + } + } + }, + "message": { + "norms": false, + "type": "text" + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "observer": { + "properties": { + "egress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "object" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hostname": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingress": { + "properties": { + "interface": { + "properties": { + "alias": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "zone": { + "ignore_above": 1024, + "type": "keyword" + } + }, + "type": "object" + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vendor": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "organization": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + }, + "package": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "build_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "checksum": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "install_scope": { + "ignore_above": 1024, + "type": "keyword" + }, + "installed": { + "type": "date" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "size": { + "type": "long" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "process": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "parent": { + "properties": { + "args": { + "ignore_above": 1024, + "type": "keyword" + }, + "args_count": { + "type": "long" + }, + "code_signature": { + "properties": { + "exists": { + "type": "boolean" + }, + "status": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "trusted": { + "type": "boolean" + }, + "valid": { + "type": "boolean" + } + } + }, + "command_line": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "entity_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "executable": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "exit_code": { + "type": "long" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha512": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "type": "wildcard" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + }, + "pe": { + "properties": { + "architecture": { + "ignore_above": 1024, + "type": "keyword" + }, + "company": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "file_version": { + "ignore_above": 1024, + "type": "keyword" + }, + "imphash": { + "ignore_above": 1024, + "type": "keyword" + }, + "original_file_name": { + "type": "wildcard" + }, + "product": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "pgid": { + "type": "long" + }, + "pid": { + "type": "long" + }, + "ppid": { + "type": "long" + }, + "start": { + "type": "date" + }, + "thread": { + "properties": { + "id": { + "type": "long" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "title": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "uptime": { + "type": "long" + }, + "working_directory": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + }, + "registry": { + "properties": { + "data": { + "properties": { + "bytes": { + "ignore_above": 1024, + "type": "keyword" + }, + "strings": { + "type": "wildcard" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hive": { + "ignore_above": 1024, + "type": "keyword" + }, + "key": { + "type": "wildcard" + }, + "path": { + "type": "wildcard" + }, + "value": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "related": { + "properties": { + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "hosts": { + "ignore_above": 1024, + "type": "keyword" + }, + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "rule": { + "properties": { + "author": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "license": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "ruleset": { + "ignore_above": 1024, + "type": "keyword" + }, + "uuid": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "type": "wildcard" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "type": "wildcard" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "service": { + "properties": { + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "node": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "state": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "type": "wildcard" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "type": "wildcard" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "type": "wildcard" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "span": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "threat": { + "properties": { + "framework": { + "ignore_above": 1024, + "type": "keyword" + }, + "tactic": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "technique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "subtechnique": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + } + }, + "tls": { + "properties": { + "cipher": { + "ignore_above": 1024, + "type": "keyword" + }, + "client": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "type": "wildcard" + }, + "ja3": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "server_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "type": "wildcard" + }, + "supported_ciphers": { + "ignore_above": 1024, + "type": "keyword" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "established": { + "type": "boolean" + }, + "next_protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "resumed": { + "type": "boolean" + }, + "server": { + "properties": { + "certificate": { + "ignore_above": 1024, + "type": "keyword" + }, + "certificate_chain": { + "ignore_above": 1024, + "type": "keyword" + }, + "hash": { + "properties": { + "md5": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha1": { + "ignore_above": 1024, + "type": "keyword" + }, + "sha256": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "issuer": { + "type": "wildcard" + }, + "ja3s": { + "ignore_above": 1024, + "type": "keyword" + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "subject": { + "type": "wildcard" + }, + "x509": { + "properties": { + "alternative_names": { + "ignore_above": 1024, + "type": "keyword" + }, + "issuer": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "not_after": { + "type": "date" + }, + "not_before": { + "type": "date" + }, + "public_key_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_curve": { + "ignore_above": 1024, + "type": "keyword" + }, + "public_key_exponent": { + "doc_values": false, + "index": false, + "type": "long" + }, + "public_key_size": { + "type": "long" + }, + "serial_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "signature_algorithm": { + "ignore_above": 1024, + "type": "keyword" + }, + "subject": { + "properties": { + "common_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country": { + "ignore_above": 1024, + "type": "keyword" + }, + "distinguished_name": { + "type": "wildcard" + }, + "locality": { + "ignore_above": 1024, + "type": "keyword" + }, + "organization": { + "ignore_above": 1024, + "type": "keyword" + }, + "organizational_unit": { + "ignore_above": 1024, + "type": "keyword" + }, + "state_or_province": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version_number": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + }, + "version_protocol": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "trace": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "transaction": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "url": { + "properties": { + "domain": { + "type": "wildcard" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "type": "wildcard" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "type": "wildcard" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "subdomain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "changes": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "effective": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + }, + "target": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "type": "wildcard" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "type": "wildcard" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "vulnerability": { + "properties": { + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "classification": { + "ignore_above": 1024, + "type": "keyword" + }, + "description": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "enumeration": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "report_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "scanner": { + "properties": { + "vendor": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "score": { + "properties": { + "base": { + "type": "float" + }, + "environmental": { + "type": "float" + }, + "temporal": { + "type": "float" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "severity": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "order": 1, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": 10000 + } + }, + "refresh_interval": "5s" + } + } +} \ No newline at end of file diff --git a/experimental/schemas/agent.yml b/experimental/schemas/agent.yml new file mode 100644 index 0000000000..d09e77111d --- /dev/null +++ b/experimental/schemas/agent.yml @@ -0,0 +1,5 @@ +--- +- name: agent + fields: + - name: build.original + type: wildcard diff --git a/experimental/schemas/as.yml b/experimental/schemas/as.yml new file mode 100644 index 0000000000..96cf45621c --- /dev/null +++ b/experimental/schemas/as.yml @@ -0,0 +1,5 @@ +--- +- name: as + fields: + - name: organization.name + type: wildcard diff --git a/experimental/schemas/client.yml b/experimental/schemas/client.yml new file mode 100644 index 0000000000..14ed3a9a37 --- /dev/null +++ b/experimental/schemas/client.yml @@ -0,0 +1,7 @@ +--- + - name: client + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/experimental/schemas/destination.yml b/experimental/schemas/destination.yml new file mode 100644 index 0000000000..d64a84c6be --- /dev/null +++ b/experimental/schemas/destination.yml @@ -0,0 +1,7 @@ +--- + - name: destination + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/experimental/schemas/dns.yml b/experimental/schemas/dns.yml new file mode 100644 index 0000000000..54f9ccd69a --- /dev/null +++ b/experimental/schemas/dns.yml @@ -0,0 +1,7 @@ +--- +- name: dns + fields: + - name: question.name + type: wildcard + - name: answers.data + type: wildcard diff --git a/experimental/schemas/error.yml b/experimental/schemas/error.yml new file mode 100644 index 0000000000..f2004d3fe0 --- /dev/null +++ b/experimental/schemas/error.yml @@ -0,0 +1,9 @@ +--- +- name: error + fields: + - name: stack_trace + index: true + type: wildcard + + - name: type + type: wildcard diff --git a/experimental/schemas/event.yml b/experimental/schemas/event.yml new file mode 100644 index 0000000000..07daa3ac87 --- /dev/null +++ b/experimental/schemas/event.yml @@ -0,0 +1,5 @@ +--- +- name: event + fields: + - name: original + type: wildcard diff --git a/experimental/schemas/file.yml b/experimental/schemas/file.yml new file mode 100644 index 0000000000..f4938d38be --- /dev/null +++ b/experimental/schemas/file.yml @@ -0,0 +1,9 @@ +--- +- name: file + fields: + - name: directory + type: wildcard + - name: path + type: wildcard + - name: target_path + type: wildcard diff --git a/experimental/schemas/geo.yml b/experimental/schemas/geo.yml new file mode 100644 index 0000000000..d3445a5a2b --- /dev/null +++ b/experimental/schemas/geo.yml @@ -0,0 +1,5 @@ +--- + - name: geo + fields: + - name: name + type: wildcard diff --git a/experimental/schemas/host.yml b/experimental/schemas/host.yml new file mode 100644 index 0000000000..91f3d1bbc2 --- /dev/null +++ b/experimental/schemas/host.yml @@ -0,0 +1,4 @@ +- name: host + fields: + - name: hostname + type: wildcard diff --git a/experimental/schemas/http.yml b/experimental/schemas/http.yml new file mode 100644 index 0000000000..1722cdc5e7 --- /dev/null +++ b/experimental/schemas/http.yml @@ -0,0 +1,9 @@ +--- +- name: http + fields: + - name: request.body.content + type: wildcard + - name: request.referrer + type: wildcard + - name: response.body.content + type: wildcard diff --git a/experimental/schemas/log.yml b/experimental/schemas/log.yml new file mode 100644 index 0000000000..8a2f2dd397 --- /dev/null +++ b/experimental/schemas/log.yml @@ -0,0 +1,7 @@ +--- +- name: log + fields: + - name: file.path + type: wildcard + - name: logger + type: wildcard diff --git a/experimental/schemas/organization.yml b/experimental/schemas/organization.yml new file mode 100644 index 0000000000..594581413b --- /dev/null +++ b/experimental/schemas/organization.yml @@ -0,0 +1,5 @@ +--- +- name: organization + fields: + - name: name + type: wildcard diff --git a/experimental/schemas/os.yml b/experimental/schemas/os.yml new file mode 100644 index 0000000000..ec9d71a79c --- /dev/null +++ b/experimental/schemas/os.yml @@ -0,0 +1,7 @@ +--- +- name: os + fields: + - name: name + type: wildcard + - name: full + type: wildcard diff --git a/experimental/schemas/pe.yml b/experimental/schemas/pe.yml new file mode 100644 index 0000000000..77a0574348 --- /dev/null +++ b/experimental/schemas/pe.yml @@ -0,0 +1,5 @@ +--- +- name: pe + fields: + - name: original_file_name + type: wildcard diff --git a/experimental/schemas/process.yml b/experimental/schemas/process.yml new file mode 100644 index 0000000000..da492e4564 --- /dev/null +++ b/experimental/schemas/process.yml @@ -0,0 +1,13 @@ +--- +- name: process + fields: + - name: command_line + type: wildcard + - name: executable + type: wildcard + - name: name + type: wildcard + - name: title + type: wildcard + - name: working_directory + type: wildcard diff --git a/experimental/schemas/registry.yml b/experimental/schemas/registry.yml new file mode 100644 index 0000000000..66f6f6b22c --- /dev/null +++ b/experimental/schemas/registry.yml @@ -0,0 +1,9 @@ +--- +- name: registry + fields: + - name: key + type: wildcard + - name: path + type: wildcard + - name: data.strings + type: wildcard diff --git a/experimental/schemas/server.yml b/experimental/schemas/server.yml new file mode 100644 index 0000000000..70c285f374 --- /dev/null +++ b/experimental/schemas/server.yml @@ -0,0 +1,7 @@ +--- + - name: server + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/experimental/schemas/source.yml b/experimental/schemas/source.yml new file mode 100644 index 0000000000..d810a6cb79 --- /dev/null +++ b/experimental/schemas/source.yml @@ -0,0 +1,7 @@ +--- +- name: source + fields: + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/experimental/schemas/tls.yml b/experimental/schemas/tls.yml new file mode 100644 index 0000000000..4f5378a313 --- /dev/null +++ b/experimental/schemas/tls.yml @@ -0,0 +1,11 @@ +--- +- name: tls + fields: + - name: client.issuer + type: wildcard + - name: client.subject + type: wildcard + - name: server.issuer + type: wildcard + - name: server.subject + type: wildcard diff --git a/experimental/schemas/url.yml b/experimental/schemas/url.yml new file mode 100644 index 0000000000..0d5f66c36a --- /dev/null +++ b/experimental/schemas/url.yml @@ -0,0 +1,13 @@ +--- +- name: url + fields: + - name: original + type: wildcard + - name: full + type: wildcard + - name: path + type: wildcard + - name: domain + type: wildcard + - name: registered_domain + type: wildcard diff --git a/experimental/schemas/user.yml b/experimental/schemas/user.yml new file mode 100644 index 0000000000..b2af27d5ab --- /dev/null +++ b/experimental/schemas/user.yml @@ -0,0 +1,17 @@ +--- +- name: user + fields: + - name: name + type: wildcard + - name: full_name + type: wildcard + - name: email + type: wildcard + reusable: + expected: + - at: user + as: target + - at: user + as: effective + - at: user + as: changes diff --git a/experimental/schemas/user_agent.yml b/experimental/schemas/user_agent.yml new file mode 100644 index 0000000000..c413a9d702 --- /dev/null +++ b/experimental/schemas/user_agent.yml @@ -0,0 +1,5 @@ +--- +- name: user_agent + fields: + - name: original + type: wildcard diff --git a/experimental/schemas/x509.yml b/experimental/schemas/x509.yml new file mode 100644 index 0000000000..d1c7d8af6b --- /dev/null +++ b/experimental/schemas/x509.yml @@ -0,0 +1,7 @@ +--- +- name: x509 + fields: + - name: issuer.distinguished_name + type: wildcard + - name: subject.distinguished_name + type: wildcard From 9212952208fa30eb9f9cce6afab35a382b02bb4b Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Tue, 6 Oct 2020 15:44:46 -0400 Subject: [PATCH 12/45] Cut 1.7 changelog (#1010) (#1013) --- CHANGELOG.md | 43 +++++++++++++++++++++++++++++++++++++++++++ CHANGELOG.next.md | 21 --------------------- 2 files changed, 43 insertions(+), 21 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b6a774967..27c5171ca3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,49 @@ # CHANGELOG All notable changes to this project will be documented in this file based on the [Keep a Changelog](http://keepachangelog.com/) Standard. This project adheres to [Semantic Versioning](http://semver.org/). +## [1.7.0](https://github.com/elastic/ecs/compare/v1.6.0...v1.7.0) + +### Schema Changes + +#### Bugfixes + +* The `protocol` allowed value under `event.type` should not have the `expected_event_types` defined. #964 + +#### Added + +* Added Mime Type fields to HTTP request and response. #944 +* Added network directions ingress and egress. #945 +* Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 +* Added `configuration` as an allowed `event.category`. #963 + +#### Improvements + +* Expanded field set definitions for `source.*` and `destination.*`. #967 +* Provided better guidance for mapping network events. #969 +* Added the field `.subdomain` under `client`, `destination`, `server`, `source` + and `url`, to match its presence at `dns.question.subdomain`. #981 + +### Tooling and Artifact Changes + +#### Bugfixes + +* Addressed issue where foreign reuses weren't using the user-supplied `as` value for their destination. #960 + +#### Added + +* Introduced `--strict` flag to perform stricter schema validation when running the generator script. #937 +* Added check under `--strict` that ensures composite types in example fields are quoted. #966 +* Added `ignore_above` and `normalizer` support for keyword multi-fields. #971 +* Added `--oss` flag for users who want to generate ECS templates for use on OSS clusters. #991 +* Added a new directory with experimental artifacts, which includes all changes + from RFCs that have reached stage 2. #993 + +#### Improvements + +* Field details Jinja2 template components have been consolidated into one template #897 +* Add `[discrete]` marker before each section header in field details. #989 + + ## [1.6.0](https://github.com/elastic/ecs/compare/v1.5.0...v1.6.0) ### Schema Changes diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 417377de00..ef52884095 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -14,21 +14,10 @@ Thanks, you're awesome :-) --> #### Bugfixes -* The `protocol` allowed value under `event.type` should not have the `expected_event_types` defined. #964 - #### Added -* Added Mime Type fields to HTTP request and response. #944 -* Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 -* Added `configuration` as an allowed `event.category`. #963 -* Added network directions ingress and egress. #945 - #### Improvements -* Expanded field set definitions for `source.*` and `destination.*`. #967 -* Provided better guidance for mapping network events. #969 -* Added the field `.subdomain` under `client`, `destination`, `server`, `source` and `url`, to match its presence at `dns.question.subdomain`. #981 - #### Deprecated ### Tooling and Artifact Changes @@ -37,20 +26,10 @@ Thanks, you're awesome :-) --> #### Bugfixes -* Addressed issue where foreign reuses weren't using the user-supplied `as` value for their destination. #960 - #### Added -* Introduced `--strict` flag to perform stricter schema validation when running the generator script. #937 -* Added check under `--strict` that ensures composite types in example fields are quoted. #966 -* Added `ignore_above` and `normalizer` support for keyword multi-fields. #971 -* Added `--oss` flag for users who want to generate ECS templates for use on OSS clusters. #991 - #### Improvements -* Field details Jinja2 template components have been consolidated into one template #897 -* Add `[discrete]` marker before each section header in field details. #989 - #### Deprecated From f78f1f9a5e16c8ee3d661f9750afa5230f2c07e8 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Wed, 7 Oct 2020 16:23:47 -0400 Subject: [PATCH 13/45] Clarify that file extension should exclude the dot. (#1016) --- CHANGELOG.md | 1 + code/go/ecs/file.go | 4 +++- docs/field-details.asciidoc | 4 +++- experimental/generated/beats/fields.ecs.yml | 5 ++++- experimental/generated/csv/fields.csv | 2 +- experimental/generated/ecs/ecs_flat.yml | 7 +++++-- experimental/generated/ecs/ecs_nested.yml | 7 +++++-- generated/beats/fields.ecs.yml | 5 ++++- generated/csv/fields.csv | 2 +- generated/ecs/ecs_flat.yml | 7 +++++-- generated/ecs/ecs_nested.yml | 7 +++++-- schemas/file.yml | 7 ++++++- 12 files changed, 43 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27c5171ca3..2150e1c38f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to this project will be documented in this file based on the #### Bugfixes * The `protocol` allowed value under `event.type` should not have the `expected_event_types` defined. #964 +* Clarify the definition of `file.extension` (no dots). #1016 #### Added diff --git a/code/go/ecs/file.go b/code/go/ecs/file.go index 1dc53d28b0..09713b7bf4 100644 --- a/code/go/ecs/file.go +++ b/code/go/ecs/file.go @@ -55,7 +55,9 @@ type File struct { // Target path for symlinks. TargetPath string `ecs:"target_path"` - // File extension. + // File extension, excluding the leading dot. + // Note that when the file name has multiple extensions (example.tar.gz), + // only the last one should be captured ("gz", not "tar.gz"). Extension string `ecs:"extension"` // File type (file, dir, or symlink). diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index 9bd030d0af..f961b6fa89 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -2109,7 +2109,9 @@ example: `C` // =============================================================== | file.extension -| File extension. +| File extension, excluding the leading dot. + +Note that when the file name has multiple extensions (example.tar.gz), only the last one should be captured ("gz", not "tar.gz"). type: keyword diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml index 0ee843e805..be3a96763c 100644 --- a/experimental/generated/beats/fields.ecs.yml +++ b/experimental/generated/beats/fields.ecs.yml @@ -1568,7 +1568,10 @@ level: extended type: keyword ignore_above: 1024 - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only + the last one should be captured ("gz", not "tar.gz").' example: png - name: gid level: extended diff --git a/experimental/generated/csv/fields.csv b/experimental/generated/csv/fields.csv index c7fc56ab27..964fa9acc2 100644 --- a/experimental/generated/csv/fields.csv +++ b/experimental/generated/csv/fields.csv @@ -174,7 +174,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,file,file.device,keyword,extended,,sda,Device that is the source of the file. 2.0.0-dev,true,file,file.directory,wildcard,extended,,/home/alice,Directory where the file is located. 2.0.0-dev,true,file,file.drive_letter,keyword,extended,,C,Drive letter where the file is located. -2.0.0-dev,true,file,file.extension,keyword,extended,,png,File extension. +2.0.0-dev,true,file,file.extension,keyword,extended,,png,"File extension, excluding the leading dot." 2.0.0-dev,true,file,file.gid,keyword,extended,,1001,Primary group ID (GID) of the file. 2.0.0-dev,true,file,file.group,keyword,extended,,alice,Primary group name of the file. 2.0.0-dev,true,file,file.hash.md5,keyword,extended,,,MD5 hash. diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml index 5f27925261..13a7c32325 100644 --- a/experimental/generated/ecs/ecs_flat.yml +++ b/experimental/generated/ecs/ecs_flat.yml @@ -2502,14 +2502,17 @@ file.drive_letter: type: keyword file.extension: dashed_name: file-extension - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only the + last one should be captured ("gz", not "tar.gz").' example: png flat_name: file.extension ignore_above: 1024 level: extended name: extension normalize: [] - short: File extension. + short: File extension, excluding the leading dot. type: keyword file.gid: dashed_name: file-gid diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index 1c40d63dfd..bfb2df366d 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -2925,14 +2925,17 @@ file: type: keyword file.extension: dashed_name: file-extension - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only + the last one should be captured ("gz", not "tar.gz").' example: png flat_name: file.extension ignore_above: 1024 level: extended name: extension normalize: [] - short: File extension. + short: File extension, excluding the leading dot. type: keyword file.gid: dashed_name: file-gid diff --git a/generated/beats/fields.ecs.yml b/generated/beats/fields.ecs.yml index 8b9cca49be..b2d3e4ef5a 100644 --- a/generated/beats/fields.ecs.yml +++ b/generated/beats/fields.ecs.yml @@ -1604,7 +1604,10 @@ level: extended type: keyword ignore_above: 1024 - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only + the last one should be captured ("gz", not "tar.gz").' example: png - name: gid level: extended diff --git a/generated/csv/fields.csv b/generated/csv/fields.csv index 2e023a3236..2a8688c22b 100644 --- a/generated/csv/fields.csv +++ b/generated/csv/fields.csv @@ -175,7 +175,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,file,file.device,keyword,extended,,sda,Device that is the source of the file. 2.0.0-dev,true,file,file.directory,keyword,extended,,/home/alice,Directory where the file is located. 2.0.0-dev,true,file,file.drive_letter,keyword,extended,,C,Drive letter where the file is located. -2.0.0-dev,true,file,file.extension,keyword,extended,,png,File extension. +2.0.0-dev,true,file,file.extension,keyword,extended,,png,"File extension, excluding the leading dot." 2.0.0-dev,true,file,file.gid,keyword,extended,,1001,Primary group ID (GID) of the file. 2.0.0-dev,true,file,file.group,keyword,extended,,alice,Primary group name of the file. 2.0.0-dev,true,file,file.hash.md5,keyword,extended,,,MD5 hash. diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index 08277b4372..81a1ee4950 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -2544,14 +2544,17 @@ file.drive_letter: type: keyword file.extension: dashed_name: file-extension - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only the + last one should be captured ("gz", not "tar.gz").' example: png flat_name: file.extension ignore_above: 1024 level: extended name: extension normalize: [] - short: File extension. + short: File extension, excluding the leading dot. type: keyword file.gid: dashed_name: file-gid diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index b4fecef933..1ca8779d5e 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -2968,14 +2968,17 @@ file: type: keyword file.extension: dashed_name: file-extension - description: File extension. + description: 'File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), only + the last one should be captured ("gz", not "tar.gz").' example: png flat_name: file.extension ignore_above: 1024 level: extended name: extension normalize: [] - short: File extension. + short: File extension, excluding the leading dot. type: keyword file.gid: dashed_name: file-gid diff --git a/schemas/file.yml b/schemas/file.yml index 4856f22648..545b4661fa 100644 --- a/schemas/file.yml +++ b/schemas/file.yml @@ -74,7 +74,12 @@ - name: extension level: extended type: keyword - description: File extension. + short: File extension, excluding the leading dot. + description: > + File extension, excluding the leading dot. + + Note that when the file name has multiple extensions (example.tar.gz), + only the last one should be captured ("gz", not "tar.gz"). example: png - name: type From 203bb015c1ab4996d51a9cacc8d188938758c95c Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Thu, 8 Oct 2020 13:16:11 -0500 Subject: [PATCH 14/45] Add usage docs section (#988) Co-authored-by: Mathieu Martin --- CHANGELOG.next.md | 2 ++ Makefile | 2 +- docs/usage/README.md | 40 +++++++++++++++++++++++++++ scripts/generators/asciidoc_fields.py | 13 ++++++++- scripts/generators/ecs_helpers.py | 9 ++++++ scripts/templates/field_details.j2 | 13 ++++++++- scripts/tests/test_asciidoc_fields.py | 10 +++++++ 7 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 docs/usage/README.md diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index ef52884095..944f9c6346 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -28,6 +28,8 @@ Thanks, you're awesome :-) --> #### Added +* Added ability to supply free-form usage documentation per fieldset. #988 + #### Improvements #### Deprecated diff --git a/Makefile b/Makefile index 4261504635..07f0442421 100644 --- a/Makefile +++ b/Makefile @@ -44,7 +44,7 @@ docs: if [ ! -d $(PWD)/build/docs ]; then \ git clone --depth=1 https://github.com/elastic/docs.git ./build/docs ; \ fi - ./build/docs/build_docs --asciidoctor --doc ./docs/index.asciidoc --chunk=1 $(OPEN_DOCS) --out ./build/html_docs + ./build/docs/build_docs --asciidoctor --doc ./docs/index.asciidoc --chunk=2 $(OPEN_DOCS) --out ./build/html_docs # Alias to generate experimental artifacts .PHONY: experimental diff --git a/docs/usage/README.md b/docs/usage/README.md new file mode 100644 index 0000000000..fce7219a2b --- /dev/null +++ b/docs/usage/README.md @@ -0,0 +1,40 @@ +# Usage Docs + +ECS fields can benefit from additional context and examples which describe their real-world usage. This directory provides a place in the documentation to capture these usage details. AsciiDoc markdown files can be added for any fieldset defined in ECS. + +## Adding a Usage Doc + +1. Create an AsciiDoc formatted file with the `.asciidoc` file extension. +2. Save the file in this directory (`docs/usage`), naming it after its associated field set (e.g. a usage document for the fields defined in `schemas/base.yml` fields would be named `docs/usage/base.asciidoc`). +3. The anchor at the top of the file (e.g. `[[ecs-base-usage]]`) must use the following convention for valid link references in the generated docs: `[[ecs-<>-usage]]`. +4. Run `make`. The asciidoc generator will generate the ECS field reference, including the present usage docs. + +If the filename doesn't match a currently defined fieldset, the usage document will not appear on the ECS docs site. This logic is handled in the AsciiDoc generator scripts, `scripts/generators/asciidoc_fields.py`. + +## Template + +The following is a simple AsciiDoc template as a starting point: + +```asciidoc + +[[ecs-fieldset-usage]] +==== Fieldset Usage + +Add relevant text here. + +[discrete] +===== New Section header + +Text for the new section. + +[discrete] +===== Examples + +[source,sh] +----------- +{ + "key": "value" +} +----------- + +``` diff --git a/scripts/generators/asciidoc_fields.py b/scripts/generators/asciidoc_fields.py index 2aa6f4a8cd..e5e2262bd0 100644 --- a/scripts/generators/asciidoc_fields.py +++ b/scripts/generators/asciidoc_fields.py @@ -72,6 +72,15 @@ def sort_fields(fieldset): return sorted(fields_list, key=lambda field: field['name']) +def check_for_usage_doc(fieldset_name, usage_file_list=ecs_helpers.usage_doc_files()): + """Checks if a usage doc exists for the specified + fieldset. + + :param fieldset_name: The name of the target fieldset + """ + return f"{fieldset_name}.asciidoc" in usage_file_list + + def templated(template_name): """Decorator function to simplify rendering a template. @@ -138,10 +147,12 @@ def generate_field_details_page(fieldset): sorted_reuse_fields = render_fieldset_reuse_text(fieldset) render_nestings_reuse_fields = render_nestings_reuse_section(fieldset) sorted_fields = sort_fields(fieldset) + usage_doc = check_for_usage_doc(fieldset.get('name')) return dict(fieldset=fieldset, sorted_reuse_fields=sorted_reuse_fields, render_nestings_reuse_section=render_nestings_reuse_fields, - sorted_fields=sorted_fields) + sorted_fields=sorted_fields, + usage_doc=usage_doc) # Allowed values section diff --git a/scripts/generators/ecs_helpers.py b/scripts/generators/ecs_helpers.py index 275c0569ac..2da446f3e3 100644 --- a/scripts/generators/ecs_helpers.py +++ b/scripts/generators/ecs_helpers.py @@ -2,6 +2,7 @@ import os import yaml import git +import pathlib import warnings from collections import OrderedDict @@ -113,6 +114,14 @@ def get_tree_by_ref(ref): return commit.tree +def usage_doc_files(): + usage_docs_dir = os.path.join(os.path.dirname(__file__), '../../docs/usage') + usage_docs_path = pathlib.Path(usage_docs_dir) + if usage_docs_path.is_dir(): + return [x.name for x in usage_docs_path.glob('*.asciidoc') if x.is_file()] + return [] + + def ecs_files(): """Return the schema file list to load""" schema_glob = os.path.join(os.path.dirname(__file__), '../../schemas/*.yml') diff --git a/scripts/templates/field_details.j2 b/scripts/templates/field_details.j2 index 1ceedf55e0..3eef363fa8 100644 --- a/scripts/templates/field_details.j2 +++ b/scripts/templates/field_details.j2 @@ -4,6 +4,12 @@ {{ fieldset['description']|replace("\n", "\n\n") }} +{%- if usage_doc %} + +Find additional usage and examples in the {{ fieldset['name'] }} fields <> section. + +{% endif %} + {# Field Details Table Header -#} [discrete] ==== {{ fieldset['title'] }} Field Details @@ -113,4 +119,9 @@ Note also that the `{{ fieldset['name'] }}` fields are not expected to be used d |===== {% endif %}{# if 'nestings' #} -{%- endif %}{# if 'nestings' or 'reusable' in fieldset #} +{%- endif -%}{# if 'nestings' or 'reusable' in fieldset #} +{%- if usage_doc %} + +include::usage/{{ fieldset['name'] }}.asciidoc[] + +{% endif %} diff --git a/scripts/tests/test_asciidoc_fields.py b/scripts/tests/test_asciidoc_fields.py index 1a099a9958..2fbec15e84 100644 --- a/scripts/tests/test_asciidoc_fields.py +++ b/scripts/tests/test_asciidoc_fields.py @@ -127,6 +127,16 @@ def test_rendering_fieldset_nesting(self): self.assertEqual('as', foo_nesting_fields[0]['name']) self.assertEqual('Fields describing an AS', foo_nesting_fields[0]['short']) + def test_check_for_usage_doc_true(self): + usage_files = ["foo.asciidoc"] + foo_name = self.foo_fieldset.get('name') + self.assertTrue(asciidoc_fields.check_for_usage_doc(foo_name, usage_file_list=usage_files)) + + def test_check_for_usage_doc_false(self): + usage_files = ["notfoo.asciidoc"] + foo_name = self.foo_fieldset.get('name') + self.assertFalse(asciidoc_fields.check_for_usage_doc(foo_name, usage_file_list=usage_files)) + if __name__ == '__main__': unittest.main() From b976f98c4f3e2a1ede8c891d6c32a513cae26907 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Thu, 8 Oct 2020 15:41:18 -0500 Subject: [PATCH 15/45] Add 1.7 as a backport target branch (#1025) --- .backportrc.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.backportrc.json b/.backportrc.json index de795d4adf..0054c4e728 100644 --- a/.backportrc.json +++ b/.backportrc.json @@ -3,6 +3,7 @@ "branches": [ { "name": "master", "checked": true }, { "name": "1.x", "checked": true }, + "1.7", "1.6", "1.5", "1.4", From b8d008c49ad7d833fb1fa1bd36e4655553ff6cce Mon Sep 17 00:00:00 2001 From: kaiyan-sheng Date: Tue, 13 Oct 2020 14:59:42 -0600 Subject: [PATCH 16/45] [RFC] Add host metric fields to ECS (#950) --- rfcs/text/0005-host-metric-fields.md | 54 ++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 6 deletions(-) diff --git a/rfcs/text/0005-host-metric-fields.md b/rfcs/text/0005-host-metric-fields.md index 336d30e52b..43cabb8ec1 100644 --- a/rfcs/text/0005-host-metric-fields.md +++ b/rfcs/text/0005-host-metric-fields.md @@ -1,7 +1,7 @@ # 0005: Host Metric Fields -- Stage: **0 (strawperson)** +- Stage: **1 (proposal)** - Date: **2020-08-21** +This RFC calls for the addition of host fields to collect basic monitoring metrics from a host or VM such as CPU, network and disk. + +| field | type | description | +| --- | --- | --- | +| `host.cpu.usage` | scaled_float (scaling_factor 1000) | Percent CPU used with scaling_factor of 1000. This value is normalized by the number of CPU cores and it ranges from 0 to 1. For example: For a two core host, this value should be the average of the 2 cores, between 0 and 1. | +| `host.network.ingress.bytes` | long | The number of bytes received (gauge) on all network interfaces by the host in a given period of time. | +| `host.network.ingress.packets` | long | The number of packets (gauge) received on all network interfaces by the host in a given period of time. | +| `host.network.egress.bytes` | long | The number of bytes (gauge) sent out on all network interfaces by the host in a given period of time. | +| `host.network.egress.packets` | long | The number of packets (gauge) sent out on all network interfaces by the host in a given period of time. | +| `host.disk.read.bytes` | long | The total number of bytes (gauge) read successfully in a given period of time. | +| `host.disk.write.bytes` | long | The total number of bytes (gauge) write successfully in a given period of time. | +These host metrics will be collected from different kinds of hosts such as bare +metal, virtual machines or virtual machines on public clouds like AWS, Azure and +GCP. These host metrics will be the standard minimal used in resource centric UI +views. For example, when user has VMs on bare metal, AWS and Azure, these host +fields will be collected from all VMs across all platforms and displayed in a +centralized location for better monitoring experience. + ## Source data +* Bare metal +* VMs +* AWS EC2 instances +* GCP compute engines +* Azure compute VMs +No breaking changes required. +These are new fields already added into Metricbeat: +* aws ec2 metricset +* googlecloud compute metricset +* azure compute_vm metricset + +Only change would be once these fields are in ECS, we can remove these fields +from `metricbeat/_meta/fields.common.yml` file. + ## Concerns +We need to carefully define each field because when these metrics are collected +from different platforms/services, the scope of these metrics change. We need to +make sure when users are using these metrics, they are all collected to represent +the same thing. For example, `host.network.in.bytes` needs to be an aggregated +value for all network interfaces. `host.cpu.pct` needs to be a normalized value +between 0 and 1. + @@ -94,6 +133,8 @@ Stage 4: Identify at least one real-world, production-ready implementation that The following are the people that consulted on the contents of this RFC. * @kaiyan-sheng | author +* @cyrille-leclerc | sponsor +* @exekias | subject matter expert * Stage 0: https://github.com/elastic/ecs/pull/947 +* Stage 1: https://github.com/elastic/ecs/pull/950 - Stage: **1 (proposal)** -- Date: **2020-08-21** +- Date: **2020-10-13** + +- Stage: **0 (strawperson)** +- Date: **2020-10-15** + +Elastic Security Solution will be adding the capability to ingest, process and utilize threat intelligence information for increasing detection coverage and helping analysts making quicker investigation decisions. Threat intelligence can be collected from a number of sources with a variety of structured and semi-structured data representations. This makes threat intelligence an ideal candidate for ECS mappings. Threat intelligence data will require ECS mappings to normalize it and make it usable in our security solution. This RFC is focused on identifying new field sets and values that need to be created for threat intelligence data. Existing ECS field reuse will be prioritized where possible. If new fields are required we will utilize [STIX Cyber Observable data model](https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_mlbmudhl16lr) as guidance. + + + + + +## Fields + + + + + + + +## Usage + + + +## Source data + + + + + + + +## Scope of impact + + + +## Concerns + + + + + + + + + +## Real-world implementations + + + +## People + +The following are the people that consulted on the contents of this RFC. + +@Shimon | author + + + + +## References + +[Threat Intel Field Set Draft](https://docs.google.com/spreadsheets/d/1hS3tF-sGmwnKb7uUGLo3Rng_q6EFgwo6UCae8Sp4E-g/edit?usp=sharing) + + +### RFC Pull Requests + + + +* Stage 0: https://github.com/elastic/ecs/pull/986 + + From 78c8549dbee31349b750d20e2e41a71b82325614 Mon Sep 17 00:00:00 2001 From: Richard Gomez <32133502+rgmz@users.noreply.github.com> Date: Fri, 16 Oct 2020 18:36:29 -0400 Subject: [PATCH 19/45] feat: include alias path when generating template (#877) --- CHANGELOG.next.md | 1 + schemas/README.md | 12 ++++++++++++ scripts/generators/beats.py | 2 +- scripts/generators/es_template.py | 2 ++ scripts/schema/cleaner.py | 6 ++++++ scripts/tests/test_es_template.py | 13 +++++++++++++ scripts/tests/unit/test_schema_cleaner.py | 7 +++++++ 7 files changed, 42 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 944f9c6346..4c63b041eb 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -29,6 +29,7 @@ Thanks, you're awesome :-) --> #### Added * Added ability to supply free-form usage documentation per fieldset. #988 +* Added the `path` key when type is `alias`, to support the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html). #877 #### Improvements diff --git a/schemas/README.md b/schemas/README.md index c87be195a3..88440c0354 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -151,6 +151,18 @@ Supported keys to describe expected values for a field Optionally, entries in this list can specify 'expected\_event\_types'. - expected\_event\_types: list of expected "event.type" values to use in association with that category. + +Supported keys when using the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html) + +```YAML + - name: a_field + level: extended + type: alias + path: another_field + description: > + An alias of another field. +``` +- path (optional): The full path to the [aliases' target field](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html#alias-targets). #### Multi\_fields diff --git a/scripts/generators/beats.py b/scripts/generators/beats.py index f305261407..457fecc5ec 100644 --- a/scripts/generators/beats.py +++ b/scripts/generators/beats.py @@ -34,7 +34,7 @@ def fieldset_field_array(source_fields, df_whitelist, fieldset_prefix): allowed_keys = ['name', 'level', 'required', 'type', 'object_type', 'ignore_above', 'multi_fields', 'format', 'input_format', 'output_format', 'output_precision', 'description', - 'example', 'enabled', 'index'] + 'example', 'enabled', 'index', 'path'] multi_fields_allowed_keys = ['name', 'type', 'norms', 'default_field', 'normalizer', 'ignore_above'] fields = [] diff --git a/scripts/generators/es_template.py b/scripts/generators/es_template.py index 5bf264a784..08e925f0ae 100644 --- a/scripts/generators/es_template.py +++ b/scripts/generators/es_template.py @@ -59,6 +59,8 @@ def entry_for(field): ecs_helpers.dict_copy_existing_keys(field, field_entry, ['ignore_above']) elif field['type'] == 'text': ecs_helpers.dict_copy_existing_keys(field, field_entry, ['norms']) + elif field['type'] == 'alias': + ecs_helpers.dict_copy_existing_keys(field, field_entry, ['path']) if 'multi_fields' in field: field_entry['fields'] = {} diff --git a/scripts/schema/cleaner.py b/scripts/schema/cleaner.py index 5f15d459fe..fa5838cbb7 100644 --- a/scripts/schema/cleaner.py +++ b/scripts/schema/cleaner.py @@ -158,6 +158,12 @@ def field_mandatory_attributes(field): return current_field_attributes = sorted(field['field_details'].keys()) missing_attributes = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes) + + # The `alias` type requires a target path. + # https://github.com/elastic/ecs/issues/876 + if field['field_details'].get('type') == 'alias' and 'path' not in current_field_attributes: + missing_attributes.append('path') + if len(missing_attributes) > 0: msg = "Field is missing the following mandatory attributes: {}.\nFound these: {}.\nField details: {}" raise ValueError(msg.format(', '.join(missing_attributes), diff --git a/scripts/tests/test_es_template.py b/scripts/tests/test_es_template.py index 9ff4c30306..9136f8b99e 100644 --- a/scripts/tests/test_es_template.py +++ b/scripts/tests/test_es_template.py @@ -109,6 +109,19 @@ def test_entry_for_index(self): } self.assertEqual(es_template.entry_for(test_map), exp) + def test_entry_for_alias(self): + test_map = { + 'name': 'test.alias', + 'type': 'alias', + 'path': 'alias.target' + } + + exp = { + 'type': 'alias', + 'path': 'alias.target' + } + self.assertEqual(es_template.entry_for(test_map), exp) + if __name__ == '__main__': unittest.main() diff --git a/scripts/tests/unit/test_schema_cleaner.py b/scripts/tests/unit/test_schema_cleaner.py index 8298a32bb3..ba86728e2d 100644 --- a/scripts/tests/unit/test_schema_cleaner.py +++ b/scripts/tests/unit/test_schema_cleaner.py @@ -157,6 +157,13 @@ def test_field_raises_on_missing_required_attributes(self): "mandatory attributes: {}".format(missing_attribute)): cleaner.field_mandatory_attributes(field) + def test_field_raises_on_alias_missing_path_attribute(self): + field = self.schema_process()['process']['fields']['pid'] + field['field_details']['type'] = "alias" + with self.assertRaisesRegex(ValueError, + "mandatory attributes: {}".format("path")): + cleaner.field_mandatory_attributes(field) + def test_field_simple_cleanup(self): my_field = { 'field_details': { From 9704ec3a6c364c52c0d333faf501c193a4a8de84 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Mon, 19 Oct 2020 11:46:13 -0400 Subject: [PATCH 20/45] Add TLDR example to USAGE.md and full example in `usage-example/` (#1036) This commit also includes one small adjustment to the generator.py script, to avoid creating an empty docs/ directory, since we don't generate it when --include or --subset are being used. --- USAGE.md | 78 +- scripts/generator.py | 2 +- usage-example/README.md | 19 + usage-example/fields/custom/acme.yml | 11 + usage-example/fields/mapping-settings.json | 20 + usage-example/fields/subset.yml | 45 + usage-example/fields/template-settings.json | 16 + usage-example/generated/beats/fields.ecs.yml | 1872 +++++++++ usage-example/generated/csv/fields.csv | 234 ++ usage-example/generated/ecs/ecs_flat.yml | 3170 +++++++++++++++ usage-example/generated/ecs/ecs_nested.yml | 3500 +++++++++++++++++ .../ecs/subset/web_logs/ecs_flat.yml | 3170 +++++++++++++++ .../ecs/subset/web_logs/ecs_nested.yml | 3500 +++++++++++++++++ .../generated/elasticsearch/6/template.json | 1158 ++++++ .../generated/elasticsearch/7/template.json | 1156 ++++++ 15 files changed, 17927 insertions(+), 24 deletions(-) create mode 100644 usage-example/README.md create mode 100644 usage-example/fields/custom/acme.yml create mode 100644 usage-example/fields/mapping-settings.json create mode 100644 usage-example/fields/subset.yml create mode 100644 usage-example/fields/template-settings.json create mode 100644 usage-example/generated/beats/fields.ecs.yml create mode 100644 usage-example/generated/csv/fields.csv create mode 100644 usage-example/generated/ecs/ecs_flat.yml create mode 100644 usage-example/generated/ecs/ecs_nested.yml create mode 100644 usage-example/generated/ecs/subset/web_logs/ecs_flat.yml create mode 100644 usage-example/generated/ecs/subset/web_logs/ecs_nested.yml create mode 100644 usage-example/generated/elasticsearch/6/template.json create mode 100644 usage-example/generated/elasticsearch/7/template.json diff --git a/USAGE.md b/USAGE.md index cb0c49bf27..9d478dfa3e 100644 --- a/USAGE.md +++ b/USAGE.md @@ -15,6 +15,7 @@ relevant artifacts for their unique set of data sources. ## Table of Contents +- [TLDR Example](#tldr-example) - [Terminology](#terminology) - [Setup and Install](#setup-and-install) * [Prerequisites](#prerequisites) @@ -33,6 +34,34 @@ relevant artifacts for their unique set of data sources. + [Strict Mode](#strict-mode) + [Intermediate-Only](#intermediate-only) +## TLDR Example + +Before diving into the details, here's a complete example that: + +* takes ECS 1.6 fields +* selects only the subset of fields relevant to the project's use case +* includes custom fields relevant to the project +* outputs the resulting artifacts to a project directory +* replace the ECS project's sample template settings and + mapping settings with ones appropriate to the project + +```bash +python scripts/generator.py --ref v1.6.0 \ + --subset ../my-project/fields/subset.yml \ + --include ../my-project/fields/custom/ \ + --out ../my-project/ \ + --template-settings ../my-project/fields/template-settings.json \ + --mapping-settings ../my-project/fields/mapping-settings.json +``` + +The generated Elasticsearch template would be output at + +`my-project/generated/elasticsearch/7/template.json` + +If this sounds interesting, read on to learn all about each of these settings. + +See [usage-example/](usage-example/) for a complete example with source files. + ## Terminology | Term | Definition | @@ -80,6 +109,9 @@ $ make ve All necessary Python dependencies will also be installed with `pip`. +You can use the Python and dependencies from this isolated virtual environment +by using `build/ve/bin/python` instead of `python` in the examples shown here. + #### Option 2: Install dependencies via pip Install dependencies using `pip` (An active `virutalenv` is recommended): @@ -255,19 +287,19 @@ The `--template-settings` argument defines [index level settings](https://www.el ```json { - "index_patterns": ["ecs-*"], - "order": 1, - "settings": { - "index": { - "mapping": { - "total_fields": { - "limit": 10000 - } - }, - "refresh_interval": "10s" + "index_patterns": ["mylog-*"], + "order": 1, + "settings": { + "index": { + "mapping": { + "total_fields": { + "limit": 10000 } - }, - "mappings": {} + }, + "refresh_interval": "1s" + } + }, + "mappings": {} } ``` @@ -275,20 +307,20 @@ The `--template-settings` argument defines [index level settings](https://www.el ```json { - "_meta": { - "version": "1.5.0" - }, + "_meta": { + "version": "1.5.0" + }, "date_detection": false, "dynamic_templates": [ - { - "strings_as_keyword": { - "mapping": { - "ignore_above": 1024, - "type": "keyword" - }, - "match_mapping_type": "string" - } + { + "strings_as_keyword": { + "mapping": { + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" } + } ], "properties": {} } diff --git a/scripts/generator.py b/scripts/generator.py index b6dcf05db9..936731c0ef 100644 --- a/scripts/generator.py +++ b/scripts/generator.py @@ -35,7 +35,6 @@ def main(): default_dirs = True ecs_helpers.make_dirs(out_dir) - ecs_helpers.make_dirs(docs_dir) # To debug issues in the gradual building up of the nested structure, insert # statements like this after any step of interest. @@ -58,6 +57,7 @@ def main(): if args.include or args.subset: exit() + ecs_helpers.make_dirs(docs_dir) asciidoc_fields.generate(nested, ecs_version, docs_dir) diff --git a/usage-example/README.md b/usage-example/README.md new file mode 100644 index 0000000000..18eb203123 --- /dev/null +++ b/usage-example/README.md @@ -0,0 +1,19 @@ +# Concrete usage example + +This directory contains a full example of using the ECS tools to manage your +project's index template (or your Beats field definitions) with the ECS tools. + +The `fields` directory contains files managed by the sample project, whereas +the `generated` directory contains the files generated by running the following +command from the root of the ECS repository: + +```bash +python scripts/generator.py --ref v1.6.0 \ + --subset usage-example/fields/subset.yml \ + --include usage-example/fields/custom/ \ + --out usage-example/ \ + --template-settings usage-example/fields/template-settings.json \ + --mapping-settings usage-example/fields/mapping-settings.json +``` + +Refer back to [USAGE.md](../USAGE.md) for the documentation on each of these flags. diff --git a/usage-example/fields/custom/acme.yml b/usage-example/fields/custom/acme.yml new file mode 100644 index 0000000000..4259faa321 --- /dev/null +++ b/usage-example/fields/custom/acme.yml @@ -0,0 +1,11 @@ +- name: acme + title: ACME + description: > + Acme Inc. custom fields + type: group + fields: + - name: account.id + type: keyword + level: custom + description: > + Customer account for this activity. diff --git a/usage-example/fields/mapping-settings.json b/usage-example/fields/mapping-settings.json new file mode 100644 index 0000000000..213c50bcc0 --- /dev/null +++ b/usage-example/fields/mapping-settings.json @@ -0,0 +1,20 @@ +{ + "_meta": { + "version": "1.6.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "strings_as_keyword": { + "mapping": { + "type": "keyword", + "ignore_above": 1024, + "fields": { + "text": { "type": "text", "norms" : false } + } + }, + "match_mapping_type": "string" + } + } + ] +} diff --git a/usage-example/fields/subset.yml b/usage-example/fields/subset.yml new file mode 100644 index 0000000000..f263492ae6 --- /dev/null +++ b/usage-example/fields/subset.yml @@ -0,0 +1,45 @@ +--- +name: web_logs +fields: + # Project's custom fields + acme: + fields: "*" + + # ECS basic fields + base: + fields: "*" + ecs: + fields: "*" + event: + fields: "*" + + # web log specific fields + user_agent: + fields: "*" + url: + fields: "*" + http: + fields: "*" + user: # mapping url.username to user.name + fields: + "name": {} + + # Network fields to capture IPs, geo and stuff + network: + fields: "*" + related: + fields: + ip: {} + user: {} + source: + fields: "*" + destination: + fields: "*" + client: + fields: "*" + server: + fields: "*" + + # pipeline meta-data + agent: + fields: "*" diff --git a/usage-example/fields/template-settings.json b/usage-example/fields/template-settings.json new file mode 100644 index 0000000000..af6683dc5a --- /dev/null +++ b/usage-example/fields/template-settings.json @@ -0,0 +1,16 @@ +{ + "index_patterns": ["acme-weblogs-*"], + "order": 1, + "settings": { + "index": { + "codec" : "best_compression", + "mapping": { + "total_fields": { + "limit": 1000 + } + }, + "refresh_interval": "2s" + } + } +} + diff --git a/usage-example/generated/beats/fields.ecs.yml b/usage-example/generated/beats/fields.ecs.yml new file mode 100644 index 0000000000..24e320ec4b --- /dev/null +++ b/usage-example/generated/beats/fields.ecs.yml @@ -0,0 +1,1872 @@ +# WARNING! Do not edit this file directly, it was generated by the ECS project, +# based on ECS version 1.6.0. +# Please visit https://github.com/elastic/ecs to suggest changes to ECS fields. + +- key: ecs + title: ECS + description: ECS Fields. + fields: + - name: '@timestamp' + level: core + required: true + type: date + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + - name: labels + level: core + type: object + object_type: keyword + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + - name: message + level: core + type: text + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + - name: tags + level: core + type: keyword + ignore_above: 1024 + description: List of keywords used to tag each event. + example: '["production", "env2"]' + - name: acme + title: ACME + group: 2 + description: Acme Inc. custom fields + type: group + fields: + - name: account.id + level: custom + type: keyword + ignore_above: 1024 + description: Customer account for this activity. + default_field: false + - name: agent + title: Agent + group: 2 + description: 'The agent fields contain the data about the software entity, if + any, that collects, detects, or observes events on a host, or takes measurements + on a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields + shall be populated with details of the agent running on the host or observer + where the event happened or the measurement was taken.' + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + type: group + fields: + - name: build.original + level: core + type: keyword + ignore_above: 1024 + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + default_field: false + - name: ephemeral_id + level: extended + type: keyword + ignore_above: 1024 + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + - name: id + level: core + type: keyword + ignore_above: 1024 + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + - name: name + level: core + type: keyword + ignore_above: 1024 + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + - name: version + level: core + type: keyword + ignore_above: 1024 + description: Version of the agent. + example: 6.0.0-rc2 + - name: client + title: Client + group: 2 + description: 'A client is defined as the initiator of a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends + the SYN packet(s). For other protocols, the client is generally the initiator + or requestor in the network transaction. Some systems use the term "originator" + to refer the client in TCP connections. The client fields describe details about + the system acting as the client in the network event. Client fields are usually + populated in conjunction with server fields. Client fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the client to the server. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Client domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the client (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the client. + - name: nat.ip + level: extended + type: ip + description: 'Translated IP of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the client to the server. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the client. + - name: registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: destination + title: Destination + group: 2 + description: 'Destination fields describe details about the destination of a packet/event. + + Destination fields are usually populated in conjunction with source fields.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the destination to the source. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Destination domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the destination (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the destination. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the destination to the source. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the destination. + - name: registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: ecs + title: ECS + group: 2 + description: Meta-information specific to ECS. + type: group + fields: + - name: version + level: core + required: true + type: keyword + ignore_above: 1024 + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + - name: event + title: Event + group: 2 + description: 'The event fields are used for context information about the log + or metric event itself. + + A log is defined as an event containing details of something that happened. + Log events must include the time at which the thing happened. Examples of log + events include a process starting on a host, a network packet being sent from + a source to a destination, or a network connection between a client and a server + being initiated or closed. A metric is defined as an event containing one or + more numerical measurements and the time at which the measurement was taken. + Examples of metric events include memory pressure measured on a host and device + temperature. See the `event.kind` definition in this section for additional + details about metric and state events.' + type: group + fields: + - name: action + level: core + type: keyword + ignore_above: 1024 + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + - name: category + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + second level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process + activity. This field is closely related to `event.type`, which is used as + a subcategory. + + This field is an array. This will allow proper categorization of some events + that fall in multiple categories.' + example: authentication + - name: code + level: extended + type: keyword + ignore_above: 1024 + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is + the Windows Event ID.' + example: 4648 + - name: created + level: core + type: date + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + - name: dataset + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes + from. + + It''s recommended but not required to start the dataset name with the module + name, followed by a dot, then the dataset name.' + example: apache.access + - name: duration + level: core + type: long + format: duration + input_format: nanoseconds + output_format: asMilliseconds + output_precision: 1 + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + - name: end + level: extended + type: date + description: event.end contains the date when the event ended or when the activity + was last observed. + - name: hash + level: extended + type: keyword + ignore_above: 1024 + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + - name: id + level: core + type: keyword + ignore_above: 1024 + description: Unique ID to describe the event. + example: 8a4f500d + - name: ingested + level: core + type: date + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + default_field: false + - name: kind + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + highest level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the + event contains, without being specific to the contents of the event. For example, + values of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, + it may also help understand whether the data coming in at a regular interval + or not.' + example: alert + - name: module + level: core + type: keyword + ignore_above: 1024 + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain + the name of this module.' + example: apache + - name: original + level: core + type: keyword + ignore_above: 1024 + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + index: false + - name: outcome + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + lowest level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a + failure from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each + event may populate different values of `event.outcome`, according to their + perspective. + + Also note that in the case of a compound event (a single event that contains + multiple logical events), this field should be populated with the value that + best captures the overall success or failure from the perspective of the event + producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + - name: provider + level: extended + type: keyword + ignore_above: 1024 + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention + the source of an event. It can be the name of the software that generated + the event (e.g. Sysmon, httpd), or of a subsystem of the operating system + (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + - name: reason + level: extended + type: keyword + ignore_above: 1024 + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + default_field: false + - name: reference + level: extended + type: keyword + ignore_above: 1024 + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + default_field: false + - name: risk_score + level: core + type: float + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + - name: risk_score_norm + level: extended + type: float + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + - name: sequence + level: extended + type: long + format: string + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the + exact ordering of events unambiguous, regardless of the timestamp precision.' + - name: severity + level: core + type: long + format: string + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and + use cases. It''s up to the implementer to make sure severities are consistent + across events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` + is meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + - name: start + level: extended + type: date + description: event.start contains the date when the event started or when the + activity was first observed. + - name: timezone + level: extended + type: keyword + ignore_above: 1024 + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'This is one of four ECS Categorization Fields, and indicates the + third level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along + with the `event.category` field values, enables filtering events down to a + level appropriate for single visualization. + + This field is an array. This will allow proper categorization of some events + that fall in multiple event types.' + - name: url + level: extended + type: keyword + ignore_above: 1024 + description: 'URL linking to an external system to continue investigation of + this event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + default_field: false + - name: http + title: HTTP + group: 2 + description: Fields related to HTTP activity. Use the `url` field set to store + the url of the request. + type: group + fields: + - name: request.body.bytes + level: extended + type: long + format: bytes + description: Size in bytes of the request body. + example: 887 + - name: request.body.content + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The full HTTP request body. + example: Hello world + - name: request.bytes + level: extended + type: long + format: bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + - name: request.method + level: extended + type: keyword + ignore_above: 1024 + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST + - name: request.referrer + level: extended + type: keyword + ignore_above: 1024 + description: Referrer for this HTTP request. + example: https://blog.example.com/ + - name: response.body.bytes + level: extended + type: long + format: bytes + description: Size in bytes of the response body. + example: 887 + - name: response.body.content + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: The full HTTP response body. + example: Hello world + - name: response.bytes + level: extended + type: long + format: bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + - name: response.status_code + level: extended + type: long + format: string + description: HTTP response status code. + example: 404 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: HTTP version. + example: 1.1 + - name: network + title: Network + group: 2 + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + type: group + fields: + - name: application + level: extended + type: keyword + ignore_above: 1024 + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + - name: bytes + level: core + type: long + format: bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + - name: community_id + level: extended + type: keyword + ignore_above: 1024 + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + - name: direction + level: core + type: keyword + ignore_above: 1024 + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ + \ mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ + \ monitoring context, populate this field from the point of view of your network\ + \ perimeter." + example: inbound + - name: forwarded_ip + level: core + type: ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + - name: iana_number + level: extended + type: keyword + ignore_above: 1024 + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + - name: inner + level: extended + type: object + description: Network.inner fields are added in addition to network.vlan fields + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used + when sending traffic with multiple 802.1q encapsulations to a network sensor + (e.g. Zeek, Wireshark.) + default_field: false + - name: inner.vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: inner.vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name given by operators to sections of their network. + example: Guest Wifi + - name: packets + level: core + type: long + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + - name: protocol + level: core + type: keyword + ignore_above: 1024 + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + - name: transport + level: core + type: keyword + ignore_above: 1024 + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + - name: type + level: core + type: keyword + ignore_above: 1024 + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + - name: vlan.id + level: extended + type: keyword + ignore_above: 1024 + description: VLAN ID as reported by the observer. + example: 10 + default_field: false + - name: vlan.name + level: extended + type: keyword + ignore_above: 1024 + description: Optional VLAN name as reported by the observer. + example: outside + default_field: false + - name: related + title: Related + group: 2 + description: 'This field set is meant to facilitate pivoting around a piece of + data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding + field in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs + to `related.ip`, you can then search for a given IP trivially, no matter where + it appeared, by querying `related.ip:192.0.2.15`.' + type: group + fields: + - name: ip + level: extended + type: ip + description: All of the IPs seen on your event. + - name: user + level: extended + type: keyword + ignore_above: 1024 + description: All the user names seen on your event. + default_field: false + - name: server + title: Server + group: 2 + description: 'A Server is defined as the responder in a network connection for + events regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the + system acting as the server in the network event. Server fields are usually + populated in conjunction with client fields. Server fields are generally not + populated for packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the server to the client. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Server domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the server (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the server. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the server to the client. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the server. + - name: registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: source + title: Source + group: 2 + description: 'Source fields describe details about the source of a packet/event. + + Source fields are usually populated in conjunction with destination fields.' + type: group + fields: + - name: address + level: extended + type: keyword + ignore_above: 1024 + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + - name: as.number + level: extended + type: long + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + - name: as.organization.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Organization name. + example: Google LLC + - name: bytes + level: core + type: long + format: bytes + description: Bytes sent from the source to the destination. + example: 184 + - name: domain + level: core + type: keyword + ignore_above: 1024 + description: Source domain. + - name: geo.city_name + level: core + type: keyword + ignore_above: 1024 + description: City name. + example: Montreal + - name: geo.continent_name + level: core + type: keyword + ignore_above: 1024 + description: Name of the continent. + example: North America + - name: geo.country_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Country ISO code. + example: CA + - name: geo.country_name + level: core + type: keyword + ignore_above: 1024 + description: Country name. + example: Canada + - name: geo.location + level: core + type: geo_point + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + - name: geo.name + level: extended + type: keyword + ignore_above: 1024 + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + - name: geo.region_iso_code + level: core + type: keyword + ignore_above: 1024 + description: Region ISO code. + example: CA-QC + - name: geo.region_name + level: core + type: keyword + ignore_above: 1024 + description: Region name. + example: Quebec + - name: ip + level: core + type: ip + description: IP address of the source (IPv4 or IPv6). + - name: mac + level: core + type: keyword + ignore_above: 1024 + description: MAC address of the source. + - name: nat.ip + level: extended + type: ip + description: 'Translated ip of source based NAT sessions (e.g. internal client + to internet) + + Typically connections traversing load balancers, firewalls, or routers.' + - name: nat.port + level: extended + type: long + format: string + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + - name: packets + level: core + type: long + description: Packets sent from the source to the destination. + example: 12 + - name: port + level: core + type: long + format: string + description: Port of the source. + - name: registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: user.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.email + level: extended + type: keyword + ignore_above: 1024 + description: User email address. + - name: user.full_name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: User's full name, if available. + example: Albert Einstein + - name: user.group.domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + - name: user.group.id + level: extended + type: keyword + ignore_above: 1024 + description: Unique identifier for the group on the system/platform. + - name: user.group.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the group. + - name: user.hash + level: extended + type: keyword + ignore_above: 1024 + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + - name: user.id + level: core + type: keyword + ignore_above: 1024 + description: Unique identifier of the user. + - name: user.name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user.roles + level: extended + type: keyword + ignore_above: 1024 + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + default_field: false + - name: url + title: URL + group: 2 + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + type: group + fields: + - name: domain + level: extended + type: keyword + ignore_above: 1024 + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + - name: extension + level: extended + type: keyword + ignore_above: 1024 + description: 'The field contains the file extension from the original request + url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + - name: fragment + level: extended + type: keyword + ignore_above: 1024 + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + - name: full + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + - name: original + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + - name: password + level: extended + type: keyword + ignore_above: 1024 + description: Password of the request. + - name: path + level: extended + type: keyword + ignore_above: 1024 + description: Path of the request, such as "/search". + - name: port + level: extended + type: long + format: string + description: Port of the request, such as 443. + example: 443 + - name: query + level: extended + type: keyword + ignore_above: 1024 + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + - name: registered_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + - name: scheme + level: extended + type: keyword + ignore_above: 1024 + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + - name: top_level_domain + level: extended + type: keyword + ignore_above: 1024 + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + - name: username + level: extended + type: keyword + ignore_above: 1024 + description: Username of the request. + - name: user + title: User + group: 2 + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + type: group + fields: + - name: name + level: core + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Short name or login of the user. + example: albert + - name: user_agent + title: User agent + group: 2 + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + type: group + fields: + - name: device.name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the device. + example: iPhone + - name: name + level: extended + type: keyword + ignore_above: 1024 + description: Name of the user agent. + example: Safari + - name: original + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + - name: os.family + level: extended + type: keyword + ignore_above: 1024 + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + - name: os.full + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, including the version or code name. + example: Mac OS Mojave + - name: os.kernel + level: extended + type: keyword + ignore_above: 1024 + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + - name: os.name + level: extended + type: keyword + ignore_above: 1024 + multi_fields: + - name: text + type: text + norms: false + default_field: false + description: Operating system name, without the version. + example: Mac OS X + - name: os.platform + level: extended + type: keyword + ignore_above: 1024 + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + - name: os.version + level: extended + type: keyword + ignore_above: 1024 + description: Operating system version as a raw string. + example: 10.14.1 + - name: version + level: extended + type: keyword + ignore_above: 1024 + description: Version of the user agent. + example: 12.0 diff --git a/usage-example/generated/csv/fields.csv b/usage-example/generated/csv/fields.csv new file mode 100644 index 0000000000..8eb4127a49 --- /dev/null +++ b/usage-example/generated/csv/fields.csv @@ -0,0 +1,234 @@ +ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description +1.6.0,true,base,@timestamp,date,core,,2016-05-23T08:05:34.853Z,Date/time when the event originated. +1.6.0,true,base,labels,object,core,,"{""application"": ""foo-bar"", ""env"": ""production""}",Custom key/value pairs. +1.6.0,true,base,message,text,core,,Hello World,Log message optimized for viewing in a log viewer. +1.6.0,true,base,tags,keyword,core,array,"[""production"", ""env2""]",List of keywords used to tag each event. +1.6.0,true,acme,acme.account.id,keyword,custom,,,Customer account for this activity. +1.6.0,true,agent,agent.build.original,keyword,core,,"metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]",Extended build information for the agent. +1.6.0,true,agent,agent.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this agent. +1.6.0,true,agent,agent.id,keyword,core,,8a4f500d,Unique identifier of this agent. +1.6.0,true,agent,agent.name,keyword,core,,foo,Custom name of the agent. +1.6.0,true,agent,agent.type,keyword,core,,filebeat,Type of the agent. +1.6.0,true,agent,agent.version,keyword,core,,6.0.0-rc2,Version of the agent. +1.6.0,true,client,client.address,keyword,extended,,,Client network address. +1.6.0,true,client,client.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +1.6.0,true,client,client.as.organization.name,keyword,extended,,Google LLC,Organization name. +1.6.0,true,client,client.as.organization.name.text,text,extended,,Google LLC,Organization name. +1.6.0,true,client,client.bytes,long,core,,184,Bytes sent from the client to the server. +1.6.0,true,client,client.domain,keyword,core,,,Client domain. +1.6.0,true,client,client.geo.city_name,keyword,core,,Montreal,City name. +1.6.0,true,client,client.geo.continent_name,keyword,core,,North America,Name of the continent. +1.6.0,true,client,client.geo.country_iso_code,keyword,core,,CA,Country ISO code. +1.6.0,true,client,client.geo.country_name,keyword,core,,Canada,Country name. +1.6.0,true,client,client.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +1.6.0,true,client,client.geo.name,keyword,extended,,boston-dc,User-defined description of a location. +1.6.0,true,client,client.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +1.6.0,true,client,client.geo.region_name,keyword,core,,Quebec,Region name. +1.6.0,true,client,client.ip,ip,core,,,IP address of the client. +1.6.0,true,client,client.mac,keyword,core,,,MAC address of the client. +1.6.0,true,client,client.nat.ip,ip,extended,,,Client NAT ip address +1.6.0,true,client,client.nat.port,long,extended,,,Client NAT port +1.6.0,true,client,client.packets,long,core,,12,Packets sent from the client to the server. +1.6.0,true,client,client.port,long,core,,,Port of the client. +1.6.0,true,client,client.registered_domain,keyword,extended,,example.com,"The highest registered client domain, stripped of the subdomain." +1.6.0,true,client,client.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +1.6.0,true,client,client.user.domain,keyword,extended,,,Name of the directory the user is a member of. +1.6.0,true,client,client.user.email,keyword,extended,,,User email address. +1.6.0,true,client,client.user.full_name,keyword,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,client,client.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,client,client.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +1.6.0,true,client,client.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +1.6.0,true,client,client.user.group.name,keyword,extended,,,Name of the group. +1.6.0,true,client,client.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +1.6.0,true,client,client.user.id,keyword,core,,,Unique identifier of the user. +1.6.0,true,client,client.user.name,keyword,core,,albert,Short name or login of the user. +1.6.0,true,client,client.user.name.text,text,core,,albert,Short name or login of the user. +1.6.0,true,client,client.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +1.6.0,true,destination,destination.address,keyword,extended,,,Destination network address. +1.6.0,true,destination,destination.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +1.6.0,true,destination,destination.as.organization.name,keyword,extended,,Google LLC,Organization name. +1.6.0,true,destination,destination.as.organization.name.text,text,extended,,Google LLC,Organization name. +1.6.0,true,destination,destination.bytes,long,core,,184,Bytes sent from the destination to the source. +1.6.0,true,destination,destination.domain,keyword,core,,,Destination domain. +1.6.0,true,destination,destination.geo.city_name,keyword,core,,Montreal,City name. +1.6.0,true,destination,destination.geo.continent_name,keyword,core,,North America,Name of the continent. +1.6.0,true,destination,destination.geo.country_iso_code,keyword,core,,CA,Country ISO code. +1.6.0,true,destination,destination.geo.country_name,keyword,core,,Canada,Country name. +1.6.0,true,destination,destination.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +1.6.0,true,destination,destination.geo.name,keyword,extended,,boston-dc,User-defined description of a location. +1.6.0,true,destination,destination.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +1.6.0,true,destination,destination.geo.region_name,keyword,core,,Quebec,Region name. +1.6.0,true,destination,destination.ip,ip,core,,,IP address of the destination. +1.6.0,true,destination,destination.mac,keyword,core,,,MAC address of the destination. +1.6.0,true,destination,destination.nat.ip,ip,extended,,,Destination NAT ip +1.6.0,true,destination,destination.nat.port,long,extended,,,Destination NAT Port +1.6.0,true,destination,destination.packets,long,core,,12,Packets sent from the destination to the source. +1.6.0,true,destination,destination.port,long,core,,,Port of the destination. +1.6.0,true,destination,destination.registered_domain,keyword,extended,,example.com,"The highest registered destination domain, stripped of the subdomain." +1.6.0,true,destination,destination.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +1.6.0,true,destination,destination.user.domain,keyword,extended,,,Name of the directory the user is a member of. +1.6.0,true,destination,destination.user.email,keyword,extended,,,User email address. +1.6.0,true,destination,destination.user.full_name,keyword,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,destination,destination.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,destination,destination.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +1.6.0,true,destination,destination.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +1.6.0,true,destination,destination.user.group.name,keyword,extended,,,Name of the group. +1.6.0,true,destination,destination.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +1.6.0,true,destination,destination.user.id,keyword,core,,,Unique identifier of the user. +1.6.0,true,destination,destination.user.name,keyword,core,,albert,Short name or login of the user. +1.6.0,true,destination,destination.user.name.text,text,core,,albert,Short name or login of the user. +1.6.0,true,destination,destination.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +1.6.0,true,ecs,ecs.version,keyword,core,,1.0.0,ECS version this event conforms to. +1.6.0,true,event,event.action,keyword,core,,user-password-change,The action captured by the event. +1.6.0,true,event,event.category,keyword,core,array,authentication,Event category. The second categorization field in the hierarchy. +1.6.0,true,event,event.code,keyword,extended,,4648,Identification code for this event. +1.6.0,true,event,event.created,date,core,,2016-05-23T08:05:34.857Z,Time when the event was first read by an agent or by your pipeline. +1.6.0,true,event,event.dataset,keyword,core,,apache.access,Name of the dataset. +1.6.0,true,event,event.duration,long,core,,,Duration of the event in nanoseconds. +1.6.0,true,event,event.end,date,extended,,,event.end contains the date when the event ended or when the activity was last observed. +1.6.0,true,event,event.hash,keyword,extended,,123456789012345678901234567890ABCD,Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +1.6.0,true,event,event.id,keyword,core,,8a4f500d,Unique ID to describe the event. +1.6.0,true,event,event.ingested,date,core,,2016-05-23T08:05:35.101Z,Timestamp when an event arrived in the central data store. +1.6.0,true,event,event.kind,keyword,core,,alert,The kind of the event. The highest categorization field in the hierarchy. +1.6.0,true,event,event.module,keyword,core,,apache,Name of the module this data is coming from. +1.6.0,false,event,event.original,keyword,core,,Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232,Raw text message of entire event. +1.6.0,true,event,event.outcome,keyword,core,,success,The outcome of the event. The lowest level categorization field in the hierarchy. +1.6.0,true,event,event.provider,keyword,extended,,kernel,Source of the event. +1.6.0,true,event,event.reason,keyword,extended,,Terminated an unexpected process,"Reason why this event happened, according to the source" +1.6.0,true,event,event.reference,keyword,extended,,https://system.example.com/event/#0001234,Event reference URL +1.6.0,true,event,event.risk_score,float,core,,,Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +1.6.0,true,event,event.risk_score_norm,float,extended,,,Normalized risk score or priority of the event (0-100). +1.6.0,true,event,event.sequence,long,extended,,,Sequence number of the event. +1.6.0,true,event,event.severity,long,core,,7,Numeric severity of the event. +1.6.0,true,event,event.start,date,extended,,,event.start contains the date when the event started or when the activity was first observed. +1.6.0,true,event,event.timezone,keyword,extended,,,Event time zone. +1.6.0,true,event,event.type,keyword,core,array,,Event type. The third categorization field in the hierarchy. +1.6.0,true,event,event.url,keyword,extended,,https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe,Event investigation URL +1.6.0,true,http,http.request.body.bytes,long,extended,,887,Size in bytes of the request body. +1.6.0,true,http,http.request.body.content,keyword,extended,,Hello world,The full HTTP request body. +1.6.0,true,http,http.request.body.content.text,text,extended,,Hello world,The full HTTP request body. +1.6.0,true,http,http.request.bytes,long,extended,,1437,Total size in bytes of the request (body and headers). +1.6.0,true,http,http.request.method,keyword,extended,,"GET, POST, PUT, PoST",HTTP request method. +1.6.0,true,http,http.request.referrer,keyword,extended,,https://blog.example.com/,Referrer for this HTTP request. +1.6.0,true,http,http.response.body.bytes,long,extended,,887,Size in bytes of the response body. +1.6.0,true,http,http.response.body.content,keyword,extended,,Hello world,The full HTTP response body. +1.6.0,true,http,http.response.body.content.text,text,extended,,Hello world,The full HTTP response body. +1.6.0,true,http,http.response.bytes,long,extended,,1437,Total size in bytes of the response (body and headers). +1.6.0,true,http,http.response.status_code,long,extended,,404,HTTP response status code. +1.6.0,true,http,http.version,keyword,extended,,1.1,HTTP version. +1.6.0,true,network,network.application,keyword,extended,,aim,Application level protocol name. +1.6.0,true,network,network.bytes,long,core,,368,Total bytes transferred in both directions. +1.6.0,true,network,network.community_id,keyword,extended,,1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=,A hash of source and destination IPs and ports. +1.6.0,true,network,network.direction,keyword,core,,inbound,Direction of the network traffic. +1.6.0,true,network,network.forwarded_ip,ip,core,,192.1.1.2,Host IP address when the source IP address is the proxy. +1.6.0,true,network,network.iana_number,keyword,extended,,6,IANA Protocol Number. +1.6.0,true,network,network.inner,object,extended,,,Inner VLAN tag information +1.6.0,true,network,network.inner.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +1.6.0,true,network,network.inner.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +1.6.0,true,network,network.name,keyword,extended,,Guest Wifi,Name given by operators to sections of their network. +1.6.0,true,network,network.packets,long,core,,24,Total packets transferred in both directions. +1.6.0,true,network,network.protocol,keyword,core,,http,L7 Network protocol name. +1.6.0,true,network,network.transport,keyword,core,,tcp,Protocol Name corresponding to the field `iana_number`. +1.6.0,true,network,network.type,keyword,core,,ipv4,"In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc" +1.6.0,true,network,network.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +1.6.0,true,network,network.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +1.6.0,true,related,related.ip,ip,extended,array,,All of the IPs seen on your event. +1.6.0,true,related,related.user,keyword,extended,array,,All the user names seen on your event. +1.6.0,true,server,server.address,keyword,extended,,,Server network address. +1.6.0,true,server,server.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +1.6.0,true,server,server.as.organization.name,keyword,extended,,Google LLC,Organization name. +1.6.0,true,server,server.as.organization.name.text,text,extended,,Google LLC,Organization name. +1.6.0,true,server,server.bytes,long,core,,184,Bytes sent from the server to the client. +1.6.0,true,server,server.domain,keyword,core,,,Server domain. +1.6.0,true,server,server.geo.city_name,keyword,core,,Montreal,City name. +1.6.0,true,server,server.geo.continent_name,keyword,core,,North America,Name of the continent. +1.6.0,true,server,server.geo.country_iso_code,keyword,core,,CA,Country ISO code. +1.6.0,true,server,server.geo.country_name,keyword,core,,Canada,Country name. +1.6.0,true,server,server.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +1.6.0,true,server,server.geo.name,keyword,extended,,boston-dc,User-defined description of a location. +1.6.0,true,server,server.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +1.6.0,true,server,server.geo.region_name,keyword,core,,Quebec,Region name. +1.6.0,true,server,server.ip,ip,core,,,IP address of the server. +1.6.0,true,server,server.mac,keyword,core,,,MAC address of the server. +1.6.0,true,server,server.nat.ip,ip,extended,,,Server NAT ip +1.6.0,true,server,server.nat.port,long,extended,,,Server NAT port +1.6.0,true,server,server.packets,long,core,,12,Packets sent from the server to the client. +1.6.0,true,server,server.port,long,core,,,Port of the server. +1.6.0,true,server,server.registered_domain,keyword,extended,,example.com,"The highest registered server domain, stripped of the subdomain." +1.6.0,true,server,server.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +1.6.0,true,server,server.user.domain,keyword,extended,,,Name of the directory the user is a member of. +1.6.0,true,server,server.user.email,keyword,extended,,,User email address. +1.6.0,true,server,server.user.full_name,keyword,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,server,server.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,server,server.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +1.6.0,true,server,server.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +1.6.0,true,server,server.user.group.name,keyword,extended,,,Name of the group. +1.6.0,true,server,server.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +1.6.0,true,server,server.user.id,keyword,core,,,Unique identifier of the user. +1.6.0,true,server,server.user.name,keyword,core,,albert,Short name or login of the user. +1.6.0,true,server,server.user.name.text,text,core,,albert,Short name or login of the user. +1.6.0,true,server,server.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +1.6.0,true,source,source.address,keyword,extended,,,Source network address. +1.6.0,true,source,source.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +1.6.0,true,source,source.as.organization.name,keyword,extended,,Google LLC,Organization name. +1.6.0,true,source,source.as.organization.name.text,text,extended,,Google LLC,Organization name. +1.6.0,true,source,source.bytes,long,core,,184,Bytes sent from the source to the destination. +1.6.0,true,source,source.domain,keyword,core,,,Source domain. +1.6.0,true,source,source.geo.city_name,keyword,core,,Montreal,City name. +1.6.0,true,source,source.geo.continent_name,keyword,core,,North America,Name of the continent. +1.6.0,true,source,source.geo.country_iso_code,keyword,core,,CA,Country ISO code. +1.6.0,true,source,source.geo.country_name,keyword,core,,Canada,Country name. +1.6.0,true,source,source.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +1.6.0,true,source,source.geo.name,keyword,extended,,boston-dc,User-defined description of a location. +1.6.0,true,source,source.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +1.6.0,true,source,source.geo.region_name,keyword,core,,Quebec,Region name. +1.6.0,true,source,source.ip,ip,core,,,IP address of the source. +1.6.0,true,source,source.mac,keyword,core,,,MAC address of the source. +1.6.0,true,source,source.nat.ip,ip,extended,,,Source NAT ip +1.6.0,true,source,source.nat.port,long,extended,,,Source NAT port +1.6.0,true,source,source.packets,long,core,,12,Packets sent from the source to the destination. +1.6.0,true,source,source.port,long,core,,,Port of the source. +1.6.0,true,source,source.registered_domain,keyword,extended,,example.com,"The highest registered source domain, stripped of the subdomain." +1.6.0,true,source,source.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +1.6.0,true,source,source.user.domain,keyword,extended,,,Name of the directory the user is a member of. +1.6.0,true,source,source.user.email,keyword,extended,,,User email address. +1.6.0,true,source,source.user.full_name,keyword,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,source,source.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +1.6.0,true,source,source.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +1.6.0,true,source,source.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +1.6.0,true,source,source.user.group.name,keyword,extended,,,Name of the group. +1.6.0,true,source,source.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +1.6.0,true,source,source.user.id,keyword,core,,,Unique identifier of the user. +1.6.0,true,source,source.user.name,keyword,core,,albert,Short name or login of the user. +1.6.0,true,source,source.user.name.text,text,core,,albert,Short name or login of the user. +1.6.0,true,source,source.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +1.6.0,true,url,url.domain,keyword,extended,,www.elastic.co,Domain of the url. +1.6.0,true,url,url.extension,keyword,extended,,png,File extension from the original request url. +1.6.0,true,url,url.fragment,keyword,extended,,,Portion of the url after the `#`. +1.6.0,true,url,url.full,keyword,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +1.6.0,true,url,url.full.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +1.6.0,true,url,url.original,keyword,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +1.6.0,true,url,url.original.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +1.6.0,true,url,url.password,keyword,extended,,,Password of the request. +1.6.0,true,url,url.path,keyword,extended,,,"Path of the request, such as ""/search""." +1.6.0,true,url,url.port,long,extended,,443,"Port of the request, such as 443." +1.6.0,true,url,url.query,keyword,extended,,,Query string of the request. +1.6.0,true,url,url.registered_domain,keyword,extended,,example.com,"The highest registered url domain, stripped of the subdomain." +1.6.0,true,url,url.scheme,keyword,extended,,https,Scheme of the url. +1.6.0,true,url,url.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +1.6.0,true,url,url.username,keyword,extended,,,Username of the request. +1.6.0,true,user,user.name,keyword,core,,albert,Short name or login of the user. +1.6.0,true,user,user.name.text,text,core,,albert,Short name or login of the user. +1.6.0,true,user_agent,user_agent.device.name,keyword,extended,,iPhone,Name of the device. +1.6.0,true,user_agent,user_agent.name,keyword,extended,,Safari,Name of the user agent. +1.6.0,true,user_agent,user_agent.original,keyword,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +1.6.0,true,user_agent,user_agent.original.text,text,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +1.6.0,true,user_agent,user_agent.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +1.6.0,true,user_agent,user_agent.os.full,keyword,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +1.6.0,true,user_agent,user_agent.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +1.6.0,true,user_agent,user_agent.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +1.6.0,true,user_agent,user_agent.os.name,keyword,extended,,Mac OS X,"Operating system name, without the version." +1.6.0,true,user_agent,user_agent.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +1.6.0,true,user_agent,user_agent.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +1.6.0,true,user_agent,user_agent.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +1.6.0,true,user_agent,user_agent.version,keyword,extended,,12.0,Version of the user agent. diff --git a/usage-example/generated/ecs/ecs_flat.yml b/usage-example/generated/ecs/ecs_flat.yml new file mode 100644 index 0000000000..a2141c7ed2 --- /dev/null +++ b/usage-example/generated/ecs/ecs_flat.yml @@ -0,0 +1,3170 @@ +'@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when the + event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date +acme.account.id: + dashed_name: acme-account-id + description: Customer account for this activity. + flat_name: acme.account.id + ignore_above: 1024 + level: custom + name: account.id + normalize: [] + short: Customer account for this activity. + type: keyword +agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source may + provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + ignore_above: 1024 + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: keyword +agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword +agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword +agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword +agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. In + case of Filebeat the agent would always be Filebeat also if two Filebeat instances + are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword +agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword +client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword +client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long +client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Client domain. + type: keyword +client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip +client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword +client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client to + internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip +client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long +client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long +client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long +client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: keyword +client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword +destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long +destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Destination domain. + type: keyword +destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip +destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword +destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip +destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long +destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long +destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long +destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: keyword +destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required field + and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version of the + events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword +event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is normally + defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword +event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh logs. + Visualize and analyze events in this category to look for failed logins, and + other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: The database category denotes events and metrics relating to a data + storage and retrieval system. Note that use of this category is not limited + to relational database systems. Examples include event logs from MS SQL, MySQL, + Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database + activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system device + drivers and similar software entities such as Windows drivers, kernel extensions, + kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or has + existed on a filesystem. Use this category of events to visualize and analyze + the creation, access, and deletions of files. Events in this category can come + from both host-based and network-based sources. An example source of a network-based + detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such as host + inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can also + be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is not + meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, groups, + and administration. Use this category to visualize and analyze IAM-related logs + and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze intrusion + detection alerts from systems such as Snort, Suricata, and Palo Alto threat + detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems + such as Suricata, or other sources of malware-related events such as Palo Alto + Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection lifecycle, + network traffic, and essentially any event that includes an IP address. Many + events containing decoded network protocol transactions fit into this category. + Use events in this category to visualize or analyze counts of network ports, + protocols, addresses, geolocation information, etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, or + to determine host vulnerability in the absence of vulnerability scan data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a dashboard + of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: + events from network observers such as Zeek http log may also be included in + this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the second + level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process activity. + This field is closely related to `event.type`, which is used as a subcategory. + + This field is an array. This will allow proper categorization of some events that + fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword +event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is the + Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword +event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first read + by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain the + time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, and + the time when your agent first processed it. This can be used to monitor your + agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date +event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes from. + + It''s recommended but not required to start the dataset name with the module name, + followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword +event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference between + the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long +event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity was + last observed. + type: date +event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword +event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword +event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date +event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, intrusion + detection systems, endpoint detection and response systems, and so on.' + name: alert + - description: This value is the most general and most common value for this field. + It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once every + few seconds, or once a minute, but can also be used to describe ad-hoc numeric + metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state of a + host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard (compliant, + not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the more + general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once every + few seconds, once a minute, once an hour, or once a day, but can also be used + to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful happened + and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the highest + level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the event + contains, without being specific to the contents of the event. For example, values + of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, it + may also help understand whether the data coming in at a regular interval or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword +event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain the + name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword +event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: keyword +event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common example + is `event.category:file AND event.type:access AND event.outcome:failure` to + indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which the + result is unknown from the perspective of the event producer. For example, if + the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome doesn't + make logical sense for the event. In such cases `event.outcome` should not be + populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the lowest + level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a failure + from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each event + may populate different values of `event.outcome`, according to their perspective. + + Also note that in the case of a compound event (a single event that contains multiple + logical events), this field should be populated with the value that best captures + the overall success or failure from the perspective of the event producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the hierarchy. + type: keyword +event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention the + source of an event. It can be the name of the software that generated the event + (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword +event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` which + denied the request may also populate `event.reason` with the reason why (e.g. + `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword +event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword +event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). Use + your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your system's + original value here. + type: float +event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of 0 to + 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float +event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the exact + ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long +event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and use + cases. It''s up to the implementer to make sure severities are consistent across + events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is + meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long +event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the activity + was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date +event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does not + include timezone information already (e.g. default Syslog timestamps). It''s optional + otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated + (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword +event.type: + allowed_values: + - description: The access event type is used for the subset of events within a category + that indicate that something was accessed. Common examples include `event.category:database + AND event.type:access`, or `event.category:file AND event.type:access`. Note + for file access, both directory listings and file opens should be included in + this subcategory. You can further distinguish access operations using the ECS + `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within a category + that are related to admin objects. For example, administrative changes within + an IAM framework that do not specifically affect a user or group (e.g., adding + new applications to a federation solution or connecting discrete forests in + Active Directory) would fall into this subcategory. Common example: `event.category:iam + AND event.type:change AND event.type:admin`. You can further distinguish admin + operations using the ECS `event.action` field.' + name: admin + - description: The allowed event type is used for the subset of events within a + category that indicate that something was allowed. Common examples include `event.category:network + AND event.type:connection AND event.type:allowed` (to indicate a network firewall + event for which the firewall disposition was to allow the connection to complete) + and `event.category:intrusion_detection AND event.type:allowed` (to indicate + a network intrusion prevention system event for which the IPS disposition was + to allow the connection to complete). You can further distinguish allowed operations + using the ECS `event.action` field, populating with values of your choosing, + such as "allow", "detect", or "pass". + name: allowed + - description: The change event type is used for the subset of events within a category + that indicate that something has changed. If semantics best describe an event + as modified, then include them in this subcategory. Common examples include + `event.category:process AND event.type:change`, and `event.category:file AND + event.type:change`. You can further distinguish change operations using the + ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used for + the subset of network traffic that includes sufficient information for the event + to be included in flow or connection analysis. Events in this subcategory will + contain at least source and destination IP addresses, source and destination + TCP/UDP ports, and will usually contain counts of bytes and/or packets transferred. + Events in this subcategory may contain unidirectional or bidirectional information, + including summary information. Use this subcategory to visualize and analyze + network connections. Flow analysis, including Netflow, IPFIX, and other flow-related + events fit in this subcategory. Note that firewall events from many Next-Generation + Firewall (NGFW) devices will also fit into this subcategory. A common filter + for flow/connection information would be `event.category:network AND event.type:connection + AND event.type:end` (to view or analyze all completed network connections, ignoring + mid-flow reports). You can further distinguish connection events using the ECS + `event.action` field, populating with values of your choosing, such as "timeout", + or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is `event.category:file + AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within a + category that indicate that something was deleted. A common example is `event.category:file + AND event.type:deletion` to indicate that a file has been deleted. + name: deletion + - description: The denied event type is used for the subset of events within a category + that indicate that something was denied. Common examples include `event.category:network + AND event.type:denied` (to indicate a network firewall event for which the firewall + disposition was to deny the connection) and `event.category:intrusion_detection + AND event.type:denied` (to indicate a network intrusion prevention system event + for which the IPS disposition was to deny the connection to complete). You can + further distinguish denied operations using the ECS `event.action` field, populating + with values of your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a category + that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within a category + that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they should + use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within a category + that are related to group objects. Common example: `event.category:iam AND event.type:creation + AND event.type:group`. You can further distinguish group operations using the + ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a category + that indicate that they are purely informational, and don't report a state change, + or any type of action. For example, an initial run of a file integrity monitoring + system (FIM), where an agent reports all files under management, would fall + into the "info" subcategory. Similarly, an event containing a dump of all currently + running processes (as opposed to reporting that a process started/ended) would + fall into the "info" subcategory. An additional common examples is `event.category:intrusion_detection + AND event.type:info`. + name: info + - description: The installation event type is used for the subset of events within + a category that indicate that something was installed. A common example is `event.category:package` + AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within a + category that indicate that they contain protocol details or analysis, beyond + simply identifying the protocol. Generally, network events that contain specific + protocol details will fall into this subcategory. A common example is `event.category:network + AND event.type:protocol AND event.type:connection AND event.type:end` (to indicate + that the event is a network connection event sent at the end of a connection + that also includes a protocol detail breakdown). Note that events that only + indicate the name or id of the protocol should not use the protocol value. Further + note that when the protocol subcategory is used, the identified protocol is + populated in the ECS `network.protocol` field. + expected_event_types: + - access + - change + - end + - info + - start + name: protocol + - description: The start event type is used for the subset of events within a category + that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within a category + that are related to user objects. Common example: `event.category:iam AND event.type:deletion + AND event.type:user`. You can further distinguish user operations using the + ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the third + level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along with + the `event.category` field values, enables filtering events down to a level appropriate + for single visualization. + + This field is an array. This will allow proper categorization of some events that + fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword +event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of this + event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword +http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long +http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: keyword +http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long +http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the method + may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword +http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + ignore_above: 1024 + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: keyword +http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long +http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: keyword +http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long +http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long +http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword +labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object +message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text +network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, icq, + facebook, twitter. This would be used in situations where the vendor or service + can be decoded such as from the source/dest IP owners, ports, or wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword +network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long +network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the protocol + used in a communication. This is a tool-agnostic standard to identify flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword +network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n * inbound\n\ + \ * outbound\n * internal\n * external\n * unknown\n\nWhen mapping events\ + \ from a host-based monitoring context, populate this field from the host's point\ + \ of view.\nWhen mapping events from a network or perimeter-based monitoring context,\ + \ populate this field from the point of view of your network perimeter." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword +network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip +network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword +network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields to + describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields + include vlan.id and vlan.name. Inner vlan fields are typically used when sending + traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object +network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword +network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` is + their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long +network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword +network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name of + the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword +network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, + etc + type: keyword +network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip +related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword +server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword +server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long +server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Server domain. + type: keyword +server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip +server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword +server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip +server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long +server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long +server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long +server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: keyword +server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword +source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long +source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Source domain. + type: keyword +source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip +source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword +source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client to + internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip +source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long +source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long +source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long +source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: keyword +source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword +url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: keyword +url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword +url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword +url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: keyword +url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas in + access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: keyword +url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword +url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: keyword +url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long +url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such as + "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there is + no query field. If there is a `?` but no query, the query field exists with an + empty string. The `exists` query can be used to differentiate between the two + cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword +url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: keyword +url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword +url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword +user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: keyword +user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword +user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword +user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: keyword +user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword +user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: keyword +user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword +user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: keyword +user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword +user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword +user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword diff --git a/usage-example/generated/ecs/ecs_nested.yml b/usage-example/generated/ecs/ecs_nested.yml new file mode 100644 index 0000000000..82675ddcfc --- /dev/null +++ b/usage-example/generated/ecs/ecs_nested.yml @@ -0,0 +1,3500 @@ +acme: + description: Acme Inc. custom fields + fields: + acme.account.id: + dashed_name: acme-account-id + description: Customer account for this activity. + flat_name: acme.account.id + ignore_above: 1024 + level: custom + name: account.id + normalize: [] + short: Customer account for this activity. + type: keyword + group: 2 + name: acme + prefix: acme. + short: Acme Inc. custom fields + title: ACME + type: group +agent: + description: 'The agent fields contain the data about the software entity, if any, + that collects, detects, or observes events on a host, or takes measurements on + a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields shall + be populated with details of the agent running on the host or observer where the + event happened or the measurement was taken.' + fields: + agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + ignore_above: 1024 + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: keyword + agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword + agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword + agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword + agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword + agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + group: 2 + name: agent + prefix: agent. + short: Fields about the monitoring agent. + title: Agent + type: group +base: + description: The `base` field set contains all fields which are at the root of the + events. These fields are common across all types of events. + fields: + '@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date + labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object + message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be + concatenated to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text + tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword + group: 1 + name: base + prefix: '' + root: true + short: All fields defined directly at the root of the events. + title: Base + type: group +client: + description: 'A client is defined as the initiator of a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends the + SYN packet(s). For other protocols, the client is generally the initiator or requestor + in the network transaction. Some systems use the term "originator" to refer the + client in TCP connections. The client fields describe details about the system + acting as the client in the network event. Client fields are usually populated + in conjunction with server fields. Client fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword + client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long + client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Client domain. + type: keyword + client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip + client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword + client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip + client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long + client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long + client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long + client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: keyword + client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: client + nestings: + - client.as + - client.geo + - client.user + prefix: client. + reused_here: + - full: client.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: client.geo + schema_name: geo + short: Fields describing a location. + - full: client.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the client side of a network connection, used with server. + title: Client + type: group +destination: + description: 'Destination fields describe details about the destination of a packet/event. + + Destination fields are usually populated in conjunction with source fields.' + fields: + destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword + destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long + destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Destination domain. + type: keyword + destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip + destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword + destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip + destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long + destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long + destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long + destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: keyword + destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: destination + nestings: + - destination.as + - destination.geo + - destination.user + prefix: destination. + reused_here: + - full: destination.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: destination.geo + schema_name: geo + short: Fields describing a location. + - full: destination.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the destination side of a network connection, used with source. + title: Destination + type: group +ecs: + description: Meta-information specific to ECS. + fields: + ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword + group: 2 + name: ecs + prefix: ecs. + short: Meta-information specific to ECS. + title: ECS + type: group +event: + description: 'The event fields are used for context information about the log or + metric event itself. + + A log is defined as an event containing details of something that happened. Log + events must include the time at which the thing happened. Examples of log events + include a process starting on a host, a network packet being sent from a source + to a destination, or a network connection between a client and a server being + initiated or closed. A metric is defined as an event containing one or more numerical + measurements and the time at which the measurement was taken. Examples of metric + events include memory pressure measured on a host and device temperature. See + the `event.kind` definition in this section for additional details about metric + and state events.' + fields: + event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword + event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh + logs. Visualize and analyze events in this category to look for failed logins, + and other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: The database category denotes events and metrics relating to + a data storage and retrieval system. Note that use of this category is not + limited to relational database systems. Examples include event logs from + MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize + and analyze database activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system + device drivers and similar software entities such as Windows drivers, kernel + extensions, kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or + has existed on a filesystem. Use this category of events to visualize and + analyze the creation, access, and deletions of files. Events in this category + can come from both host-based and network-based sources. An example source + of a network-based detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such + as host inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can + also be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is + not meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, + groups, and administration. Use this category to visualize and analyze IAM-related + logs and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze + intrusion detection alerts from systems such as Snort, Suricata, and Palo + Alto threat detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS + systems such as Suricata, or other sources of malware-related events such + as Palo Alto Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection + lifecycle, network traffic, and essentially any event that includes an IP + address. Many events containing decoded network protocol transactions fit + into this category. Use events in this category to visualize or analyze + counts of network ports, protocols, addresses, geolocation information, + etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, + or to determine host vulnerability in the absence of vulnerability scan + data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a + dashboard of web server/proxy activity from apache, IIS, nginx web servers, + etc. Note: events from network observers such as Zeek http log may also + be included in this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the + second level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process + activity. This field is closely related to `event.type`, which is used as + a subcategory. + + This field is an array. This will allow proper categorization of some events + that fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword + event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is + the Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword + event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date + event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes + from. + + It''s recommended but not required to start the dataset name with the module + name, followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword + event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long + event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity + was last observed. + type: date + event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword + event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword + event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date + event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, + intrusion detection systems, endpoint detection and response systems, and + so on.' + name: alert + - description: This value is the most general and most common value for this + field. It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once + every few seconds, or once a minute, but can also be used to describe ad-hoc + numeric metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state + of a host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard + (compliant, not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the + more general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once + every few seconds, once a minute, once an hour, or once a day, but can also + be used to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful + happened and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the + highest level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the + event contains, without being specific to the contents of the event. For example, + values of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, + it may also help understand whether the data coming in at a regular interval + or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword + event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain + the name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword + event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: keyword + event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common + example is `event.category:file AND event.type:access AND event.outcome:failure` + to indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which + the result is unknown from the perspective of the event producer. For example, + if the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome + doesn't make logical sense for the event. In such cases `event.outcome` + should not be populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the + lowest level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a + failure from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each + event may populate different values of `event.outcome`, according to their + perspective. + + Also note that in the case of a compound event (a single event that contains + multiple logical events), this field should be populated with the value that + best captures the overall success or failure from the perspective of the event + producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the + hierarchy. + type: keyword + event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention + the source of an event. It can be the name of the software that generated + the event (e.g. Sysmon, httpd), or of a subsystem of the operating system + (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword + event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword + event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword + event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your + system's original value here. + type: float + event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float + event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the + exact ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long + event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and + use cases. It''s up to the implementer to make sure severities are consistent + across events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` + is meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long + event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the + activity was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date + event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword + event.type: + allowed_values: + - description: The access event type is used for the subset of events within + a category that indicate that something was accessed. Common examples include + `event.category:database AND event.type:access`, or `event.category:file + AND event.type:access`. Note for file access, both directory listings and + file opens should be included in this subcategory. You can further distinguish + access operations using the ECS `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within + a category that are related to admin objects. For example, administrative + changes within an IAM framework that do not specifically affect a user or + group (e.g., adding new applications to a federation solution or connecting + discrete forests in Active Directory) would fall into this subcategory. + Common example: `event.category:iam AND event.type:change AND event.type:admin`. + You can further distinguish admin operations using the ECS `event.action` + field.' + name: admin + - description: The allowed event type is used for the subset of events within + a category that indicate that something was allowed. Common examples include + `event.category:network AND event.type:connection AND event.type:allowed` + (to indicate a network firewall event for which the firewall disposition + was to allow the connection to complete) and `event.category:intrusion_detection + AND event.type:allowed` (to indicate a network intrusion prevention system + event for which the IPS disposition was to allow the connection to complete). + You can further distinguish allowed operations using the ECS `event.action` + field, populating with values of your choosing, such as "allow", "detect", + or "pass". + name: allowed + - description: The change event type is used for the subset of events within + a category that indicate that something has changed. If semantics best describe + an event as modified, then include them in this subcategory. Common examples + include `event.category:process AND event.type:change`, and `event.category:file + AND event.type:change`. You can further distinguish change operations using + the ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used + for the subset of network traffic that includes sufficient information for + the event to be included in flow or connection analysis. Events in this + subcategory will contain at least source and destination IP addresses, source + and destination TCP/UDP ports, and will usually contain counts of bytes + and/or packets transferred. Events in this subcategory may contain unidirectional + or bidirectional information, including summary information. Use this subcategory + to visualize and analyze network connections. Flow analysis, including Netflow, + IPFIX, and other flow-related events fit in this subcategory. Note that + firewall events from many Next-Generation Firewall (NGFW) devices will also + fit into this subcategory. A common filter for flow/connection information + would be `event.category:network AND event.type:connection AND event.type:end` + (to view or analyze all completed network connections, ignoring mid-flow + reports). You can further distinguish connection events using the ECS `event.action` + field, populating with values of your choosing, such as "timeout", or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is + `event.category:file AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within + a category that indicate that something was deleted. A common example is + `event.category:file AND event.type:deletion` to indicate that a file has + been deleted. + name: deletion + - description: The denied event type is used for the subset of events within + a category that indicate that something was denied. Common examples include + `event.category:network AND event.type:denied` (to indicate a network firewall + event for which the firewall disposition was to deny the connection) and + `event.category:intrusion_detection AND event.type:denied` (to indicate + a network intrusion prevention system event for which the IPS disposition + was to deny the connection to complete). You can further distinguish denied + operations using the ECS `event.action` field, populating with values of + your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a + category that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within + a category that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they + should use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within + a category that are related to group objects. Common example: `event.category:iam + AND event.type:creation AND event.type:group`. You can further distinguish + group operations using the ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a + category that indicate that they are purely informational, and don't report + a state change, or any type of action. For example, an initial run of a + file integrity monitoring system (FIM), where an agent reports all files + under management, would fall into the "info" subcategory. Similarly, an + event containing a dump of all currently running processes (as opposed to + reporting that a process started/ended) would fall into the "info" subcategory. + An additional common examples is `event.category:intrusion_detection AND + event.type:info`. + name: info + - description: The installation event type is used for the subset of events + within a category that indicate that something was installed. A common example + is `event.category:package` AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within + a category that indicate that they contain protocol details or analysis, + beyond simply identifying the protocol. Generally, network events that contain + specific protocol details will fall into this subcategory. A common example + is `event.category:network AND event.type:protocol AND event.type:connection + AND event.type:end` (to indicate that the event is a network connection + event sent at the end of a connection that also includes a protocol detail + breakdown). Note that events that only indicate the name or id of the protocol + should not use the protocol value. Further note that when the protocol subcategory + is used, the identified protocol is populated in the ECS `network.protocol` + field. + expected_event_types: + - access + - change + - end + - info + - start + name: protocol + - description: The start event type is used for the subset of events within + a category that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within + a category that are related to user objects. Common example: `event.category:iam + AND event.type:deletion AND event.type:user`. You can further distinguish + user operations using the ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the + third level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along + with the `event.category` field values, enables filtering events down to a + level appropriate for single visualization. + + This field is an array. This will allow proper categorization of some events + that fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword + event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of + this event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword + group: 2 + name: event + prefix: event. + short: Fields breaking down the event details. + title: Event + type: group +http: + description: Fields related to HTTP activity. Use the `url` field set to store the + url of the request. + fields: + http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long + http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: keyword + http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long + http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword + http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + ignore_above: 1024 + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: keyword + http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long + http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: keyword + http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long + http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long + http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword + group: 2 + name: http + prefix: http. + short: Fields describing an HTTP request. + title: HTTP + type: group +network: + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + fields: + network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword + network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long + network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword + network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ + \ mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ + \ monitoring context, populate this field from the point of view of your network\ + \ perimeter." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword + network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip + network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword + network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used + when sending traffic with multiple 802.1q encapsulations to a network sensor + (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object + network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword + network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long + network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword + network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword + network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + type: keyword + network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + group: 2 + name: network + nestings: + - network.inner.vlan + - network.vlan + prefix: network. + reused_here: + - full: network.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + - full: network.inner.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + short: Fields describing the communication path over which the event happened. + title: Network + type: group +related: + description: 'This field set is meant to facilitate pivoting around a piece of data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding field + in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs to + `related.ip`, you can then search for a given IP trivially, no matter where it + appeared, by querying `related.ip:192.0.2.15`.' + fields: + related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip + related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword + group: 2 + name: related + prefix: related. + short: Fields meant to facilitate pivoting around a piece of data. + title: Related + type: group +server: + description: 'A Server is defined as the responder in a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the system + acting as the server in the network event. Server fields are usually populated + in conjunction with client fields. Server fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword + server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long + server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Server domain. + type: keyword + server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip + server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword + server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip + server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long + server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long + server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long + server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: keyword + server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: server + nestings: + - server.as + - server.geo + - server.user + prefix: server. + reused_here: + - full: server.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: server.geo + schema_name: geo + short: Fields describing a location. + - full: server.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the server side of a network connection, used with client. + title: Server + type: group +source: + description: 'Source fields describe details about the source of a packet/event. + + Source fields are usually populated in conjunction with destination fields.' + fields: + source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword + source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long + source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Source domain. + type: keyword + source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip + source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword + source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client + to internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip + source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long + source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long + source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long + source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: keyword + source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: source + nestings: + - source.as + - source.geo + - source.user + prefix: source. + reused_here: + - full: source.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: source.geo + schema_name: geo + short: Fields describing a location. + - full: source.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the source side of a network connection, used with destination. + title: Source + type: group +url: + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + fields: + url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: keyword + url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request + url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword + url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword + url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: keyword + url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: keyword + url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword + url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: keyword + url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long + url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword + url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: keyword + url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword + url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword + group: 2 + name: url + prefix: url. + short: Fields that let you store URLs in various forms. + title: URL + type: group +user: + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + fields: + user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: keyword + group: 2 + name: user + nestings: + - user.group + prefix: user. + reusable: + expected: + - as: user + at: client + full: client.user + - as: user + at: destination + full: destination.user + - as: user + at: host + full: host.user + - as: user + at: server + full: server.user + - as: user + at: source + full: source.user + top_level: true + reused_here: + - full: user.group + schema_name: group + short: User's group relevant to the event. + short: Fields to describe the user relevant to the event. + title: User + type: group +user_agent: + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + fields: + user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword + user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword + user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: keyword + user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: keyword + user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword + user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: keyword + user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword + user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword + group: 2 + name: user_agent + nestings: + - user_agent.os + prefix: user_agent. + reused_here: + - full: user_agent.os + schema_name: os + short: OS fields contain information about the operating system. + short: Fields to describe a browser user_agent string. + title: User agent + type: group diff --git a/usage-example/generated/ecs/subset/web_logs/ecs_flat.yml b/usage-example/generated/ecs/subset/web_logs/ecs_flat.yml new file mode 100644 index 0000000000..a2141c7ed2 --- /dev/null +++ b/usage-example/generated/ecs/subset/web_logs/ecs_flat.yml @@ -0,0 +1,3170 @@ +'@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when the + event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date +acme.account.id: + dashed_name: acme-account-id + description: Customer account for this activity. + flat_name: acme.account.id + ignore_above: 1024 + level: custom + name: account.id + normalize: [] + short: Customer account for this activity. + type: keyword +agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source may + provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + ignore_above: 1024 + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: keyword +agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword +agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword +agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword +agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. In + case of Filebeat the agent would always be Filebeat also if two Filebeat instances + are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword +agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword +client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword +client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long +client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Client domain. + type: keyword +client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip +client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword +client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client to + internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip +client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long +client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long +client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long +client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: keyword +client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword +destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long +destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Destination domain. + type: keyword +destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip +destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword +destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip +destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long +destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long +destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long +destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: keyword +destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required field + and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version of the + events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword +event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is normally + defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword +event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh logs. + Visualize and analyze events in this category to look for failed logins, and + other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: The database category denotes events and metrics relating to a data + storage and retrieval system. Note that use of this category is not limited + to relational database systems. Examples include event logs from MS SQL, MySQL, + Elasticsearch, MongoDB, etc. Use this category to visualize and analyze database + activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system device + drivers and similar software entities such as Windows drivers, kernel extensions, + kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or has + existed on a filesystem. Use this category of events to visualize and analyze + the creation, access, and deletions of files. Events in this category can come + from both host-based and network-based sources. An example source of a network-based + detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such as host + inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can also + be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is not + meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, groups, + and administration. Use this category to visualize and analyze IAM-related logs + and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze intrusion + detection alerts from systems such as Snort, Suricata, and Palo Alto threat + detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS systems + such as Suricata, or other sources of malware-related events such as Palo Alto + Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection lifecycle, + network traffic, and essentially any event that includes an IP address. Many + events containing decoded network protocol transactions fit into this category. + Use events in this category to visualize or analyze counts of network ports, + protocols, addresses, geolocation information, etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, or + to determine host vulnerability in the absence of vulnerability scan data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a dashboard + of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: + events from network observers such as Zeek http log may also be included in + this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the second + level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process activity. + This field is closely related to `event.type`, which is used as a subcategory. + + This field is an array. This will allow proper categorization of some events that + fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword +event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is the + Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword +event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first read + by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain the + time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, and + the time when your agent first processed it. This can be used to monitor your + agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date +event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes from. + + It''s recommended but not required to start the dataset name with the module name, + followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword +event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference between + the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long +event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity was + last observed. + type: date +event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword +event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword +event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date +event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, intrusion + detection systems, endpoint detection and response systems, and so on.' + name: alert + - description: This value is the most general and most common value for this field. + It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once every + few seconds, or once a minute, but can also be used to describe ad-hoc numeric + metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state of a + host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard (compliant, + not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the more + general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once every + few seconds, once a minute, once an hour, or once a day, but can also be used + to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful happened + and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the highest + level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the event + contains, without being specific to the contents of the event. For example, values + of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, it + may also help understand whether the data coming in at a regular interval or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword +event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain the + name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword +event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: keyword +event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common example + is `event.category:file AND event.type:access AND event.outcome:failure` to + indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which the + result is unknown from the perspective of the event producer. For example, if + the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome doesn't + make logical sense for the event. In such cases `event.outcome` should not be + populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the lowest + level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a failure + from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each event + may populate different values of `event.outcome`, according to their perspective. + + Also note that in the case of a compound event (a single event that contains multiple + logical events), this field should be populated with the value that best captures + the overall success or failure from the perspective of the event producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the hierarchy. + type: keyword +event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention the + source of an event. It can be the name of the software that generated the event + (e.g. Sysmon, httpd), or of a subsystem of the operating system (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword +event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` which + denied the request may also populate `event.reason` with the reason why (e.g. + `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword +event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword +event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). Use + your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your system's + original value here. + type: float +event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of 0 to + 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float +event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the exact + ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long +event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and use + cases. It''s up to the implementer to make sure severities are consistent across + events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` is + meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long +event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the activity + was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date +event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does not + include timezone information already (e.g. default Syslog timestamps). It''s optional + otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), abbreviated + (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword +event.type: + allowed_values: + - description: The access event type is used for the subset of events within a category + that indicate that something was accessed. Common examples include `event.category:database + AND event.type:access`, or `event.category:file AND event.type:access`. Note + for file access, both directory listings and file opens should be included in + this subcategory. You can further distinguish access operations using the ECS + `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within a category + that are related to admin objects. For example, administrative changes within + an IAM framework that do not specifically affect a user or group (e.g., adding + new applications to a federation solution or connecting discrete forests in + Active Directory) would fall into this subcategory. Common example: `event.category:iam + AND event.type:change AND event.type:admin`. You can further distinguish admin + operations using the ECS `event.action` field.' + name: admin + - description: The allowed event type is used for the subset of events within a + category that indicate that something was allowed. Common examples include `event.category:network + AND event.type:connection AND event.type:allowed` (to indicate a network firewall + event for which the firewall disposition was to allow the connection to complete) + and `event.category:intrusion_detection AND event.type:allowed` (to indicate + a network intrusion prevention system event for which the IPS disposition was + to allow the connection to complete). You can further distinguish allowed operations + using the ECS `event.action` field, populating with values of your choosing, + such as "allow", "detect", or "pass". + name: allowed + - description: The change event type is used for the subset of events within a category + that indicate that something has changed. If semantics best describe an event + as modified, then include them in this subcategory. Common examples include + `event.category:process AND event.type:change`, and `event.category:file AND + event.type:change`. You can further distinguish change operations using the + ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used for + the subset of network traffic that includes sufficient information for the event + to be included in flow or connection analysis. Events in this subcategory will + contain at least source and destination IP addresses, source and destination + TCP/UDP ports, and will usually contain counts of bytes and/or packets transferred. + Events in this subcategory may contain unidirectional or bidirectional information, + including summary information. Use this subcategory to visualize and analyze + network connections. Flow analysis, including Netflow, IPFIX, and other flow-related + events fit in this subcategory. Note that firewall events from many Next-Generation + Firewall (NGFW) devices will also fit into this subcategory. A common filter + for flow/connection information would be `event.category:network AND event.type:connection + AND event.type:end` (to view or analyze all completed network connections, ignoring + mid-flow reports). You can further distinguish connection events using the ECS + `event.action` field, populating with values of your choosing, such as "timeout", + or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is `event.category:file + AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within a + category that indicate that something was deleted. A common example is `event.category:file + AND event.type:deletion` to indicate that a file has been deleted. + name: deletion + - description: The denied event type is used for the subset of events within a category + that indicate that something was denied. Common examples include `event.category:network + AND event.type:denied` (to indicate a network firewall event for which the firewall + disposition was to deny the connection) and `event.category:intrusion_detection + AND event.type:denied` (to indicate a network intrusion prevention system event + for which the IPS disposition was to deny the connection to complete). You can + further distinguish denied operations using the ECS `event.action` field, populating + with values of your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a category + that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within a category + that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they should + use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within a category + that are related to group objects. Common example: `event.category:iam AND event.type:creation + AND event.type:group`. You can further distinguish group operations using the + ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a category + that indicate that they are purely informational, and don't report a state change, + or any type of action. For example, an initial run of a file integrity monitoring + system (FIM), where an agent reports all files under management, would fall + into the "info" subcategory. Similarly, an event containing a dump of all currently + running processes (as opposed to reporting that a process started/ended) would + fall into the "info" subcategory. An additional common examples is `event.category:intrusion_detection + AND event.type:info`. + name: info + - description: The installation event type is used for the subset of events within + a category that indicate that something was installed. A common example is `event.category:package` + AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within a + category that indicate that they contain protocol details or analysis, beyond + simply identifying the protocol. Generally, network events that contain specific + protocol details will fall into this subcategory. A common example is `event.category:network + AND event.type:protocol AND event.type:connection AND event.type:end` (to indicate + that the event is a network connection event sent at the end of a connection + that also includes a protocol detail breakdown). Note that events that only + indicate the name or id of the protocol should not use the protocol value. Further + note that when the protocol subcategory is used, the identified protocol is + populated in the ECS `network.protocol` field. + expected_event_types: + - access + - change + - end + - info + - start + name: protocol + - description: The start event type is used for the subset of events within a category + that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within a category + that are related to user objects. Common example: `event.category:iam AND event.type:deletion + AND event.type:user`. You can further distinguish user operations using the + ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the third + level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along with + the `event.category` field values, enables filtering events down to a level appropriate + for single visualization. + + This field is an array. This will allow proper categorization of some events that + fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword +event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of this + event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword +http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long +http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: keyword +http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long +http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the method + may be useful in anomaly detection. Original case will be mandated in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword +http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + ignore_above: 1024 + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: keyword +http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long +http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: keyword +http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long +http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long +http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword +labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object +message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be concatenated + to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text +network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, icq, + facebook, twitter. This would be used in situations where the vendor or service + can be decoded such as from the source/dest IP owners, ports, or wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword +network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long +network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the protocol + used in a communication. This is a tool-agnostic standard to identify flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword +network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n * inbound\n\ + \ * outbound\n * internal\n * external\n * unknown\n\nWhen mapping events\ + \ from a host-based monitoring context, populate this field from the host's point\ + \ of view.\nWhen mapping events from a network or perimeter-based monitoring context,\ + \ populate this field from the point of view of your network perimeter." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword +network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip +network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword +network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields to + describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed fields + include vlan.id and vlan.name. Inner vlan fields are typically used when sending + traffic with multiple 802.1q encapsulations to a network sensor (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object +network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword +network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` is + their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long +network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword +network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name of + the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword +network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, + etc + type: keyword +network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword +network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword +related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip +related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword +server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword +server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long +server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Server domain. + type: keyword +server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip +server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword +server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip +server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet to + private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long +server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long +server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long +server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: keyword +server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event will + sometimes list an IP, a domain or a unix socket. You should always store the + raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one it + is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword +source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous system + number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long +source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword +source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long +source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Source domain. + type: keyword +source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword +source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword +source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword +source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword +source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point +source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes a + local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword +source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword +source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword +source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip +source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword +source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client to + internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip +source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long +source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long +source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long +source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: keyword +source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword +source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword +source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword +source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword +source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword +source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword +source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword +source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword +source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword +source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword +tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword +url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: keyword +url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword +url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword +url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: keyword +url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas in + access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: keyword +url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword +url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: keyword +url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long +url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such as + "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there is + no query field. If there is a `?` but no query, the query field exists with an + empty string. The `exists` query can be used to differentiate between the two + cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword +url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: keyword +url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword +url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain suffix, + is the last part of the domain name. For example, the top level domain for example.com + is "com". + + This value can be determined precisely with a list like the public suffix list + (http://publicsuffix.org). Trying to approximate this by simply taking the last + label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword +url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword +user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: keyword +user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword +user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword +user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: keyword +user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword +user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: keyword +user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword +user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: keyword +user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword +user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword +user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword diff --git a/usage-example/generated/ecs/subset/web_logs/ecs_nested.yml b/usage-example/generated/ecs/subset/web_logs/ecs_nested.yml new file mode 100644 index 0000000000..82675ddcfc --- /dev/null +++ b/usage-example/generated/ecs/subset/web_logs/ecs_nested.yml @@ -0,0 +1,3500 @@ +acme: + description: Acme Inc. custom fields + fields: + acme.account.id: + dashed_name: acme-account-id + description: Customer account for this activity. + flat_name: acme.account.id + ignore_above: 1024 + level: custom + name: account.id + normalize: [] + short: Customer account for this activity. + type: keyword + group: 2 + name: acme + prefix: acme. + short: Acme Inc. custom fields + title: ACME + type: group +agent: + description: 'The agent fields contain the data about the software entity, if any, + that collects, detects, or observes events on a host, or takes measurements on + a host. + + Examples include Beats. Agents may also run on observers. ECS agent.* fields shall + be populated with details of the agent running on the host or observer where the + event happened or the measurement was taken.' + fields: + agent.build.original: + dashed_name: agent-build-original + description: 'Extended build information for the agent. + + This field is intended to contain any build information that a data source + may provide, no specific formatting is required.' + example: metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c + built 2020-02-05 23:10:10 +0000 UTC] + flat_name: agent.build.original + ignore_above: 1024 + level: core + name: build.original + normalize: [] + short: Extended build information for the agent. + type: keyword + agent.ephemeral_id: + dashed_name: agent-ephemeral-id + description: 'Ephemeral identifier of this agent (if one exists). + + This id normally changes across restarts, but `agent.id` does not.' + example: 8a4f500f + flat_name: agent.ephemeral_id + ignore_above: 1024 + level: extended + name: ephemeral_id + normalize: [] + short: Ephemeral identifier of this agent. + type: keyword + agent.id: + dashed_name: agent-id + description: 'Unique identifier of this agent (if one exists). + + Example: For Beats this would be beat.id.' + example: 8a4f500d + flat_name: agent.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique identifier of this agent. + type: keyword + agent.name: + dashed_name: agent-name + description: 'Custom name of the agent. + + This is a name that can be given to an agent. This can be helpful if for example + two Filebeat instances are running on the same host but a human readable separation + is needed on which Filebeat instance data is coming from. + + If no name is given, the name is often left empty.' + example: foo + flat_name: agent.name + ignore_above: 1024 + level: core + name: name + normalize: [] + short: Custom name of the agent. + type: keyword + agent.type: + dashed_name: agent-type + description: 'Type of the agent. + + The agent type always stays the same and should be given by the agent used. + In case of Filebeat the agent would always be Filebeat also if two Filebeat + instances are run on the same machine.' + example: filebeat + flat_name: agent.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: Type of the agent. + type: keyword + agent.version: + dashed_name: agent-version + description: Version of the agent. + example: 6.0.0-rc2 + flat_name: agent.version + ignore_above: 1024 + level: core + name: version + normalize: [] + short: Version of the agent. + type: keyword + footnote: 'Examples: In the case of Beats for logs, the agent.name is filebeat. + For APM, it is the agent running in the app/service. The agent information does + not change if data is sent through queuing systems like Kafka, Redis, or processing + systems such as Logstash or APM Server.' + group: 2 + name: agent + prefix: agent. + short: Fields about the monitoring agent. + title: Agent + type: group +base: + description: The `base` field set contains all fields which are at the root of the + events. These fields are common across all types of events. + fields: + '@timestamp': + dashed_name: -timestamp + description: 'Date/time when the event originated. + + This is the date/time extracted from the event, typically representing when + the event was generated by the source. + + If the event source has no original timestamp, this value is typically populated + by the first time the event was received by the pipeline. + + Required field for all events.' + example: '2016-05-23T08:05:34.853Z' + flat_name: '@timestamp' + level: core + name: '@timestamp' + normalize: [] + required: true + short: Date/time when the event originated. + type: date + labels: + dashed_name: labels + description: 'Custom key/value pairs. + + Can be used to add meta information to events. Should not contain nested objects. + All values are stored as keyword. + + Example: `docker` and `k8s` labels.' + example: '{"application": "foo-bar", "env": "production"}' + flat_name: labels + level: core + name: labels + normalize: [] + object_type: keyword + short: Custom key/value pairs. + type: object + message: + dashed_name: message + description: 'For log events the message field contains the log message, optimized + for viewing in a log viewer. + + For structured logs without an original message field, other fields can be + concatenated to form a human-readable summary of the event. + + If multiple messages exist, they can be combined into one message.' + example: Hello World + flat_name: message + level: core + name: message + normalize: [] + norms: false + short: Log message optimized for viewing in a log viewer. + type: text + tags: + dashed_name: tags + description: List of keywords used to tag each event. + example: '["production", "env2"]' + flat_name: tags + ignore_above: 1024 + level: core + name: tags + normalize: + - array + short: List of keywords used to tag each event. + type: keyword + group: 1 + name: base + prefix: '' + root: true + short: All fields defined directly at the root of the events. + title: Base + type: group +client: + description: 'A client is defined as the initiator of a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the client is the initiator of the TCP connection that sends the + SYN packet(s). For other protocols, the client is generally the initiator or requestor + in the network transaction. Some systems use the term "originator" to refer the + client in TCP connections. The client fields describe details about the system + acting as the client in the network event. Client fields are usually populated + in conjunction with server fields. Client fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + client.address: + dashed_name: client-address + description: 'Some event client addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: client.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Client network address. + type: keyword + client.as.number: + dashed_name: client-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: client.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + client.as.organization.name: + dashed_name: client-as-organization-name + description: Organization name. + example: Google LLC + flat_name: client.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + client.bytes: + dashed_name: client-bytes + description: Bytes sent from the client to the server. + example: 184 + flat_name: client.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the client to the server. + type: long + client.domain: + dashed_name: client-domain + description: Client domain. + flat_name: client.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Client domain. + type: keyword + client.geo.city_name: + dashed_name: client-geo-city-name + description: City name. + example: Montreal + flat_name: client.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + client.geo.continent_name: + dashed_name: client-geo-continent-name + description: Name of the continent. + example: North America + flat_name: client.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + client.geo.country_iso_code: + dashed_name: client-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: client.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + client.geo.country_name: + dashed_name: client-geo-country-name + description: Country name. + example: Canada + flat_name: client.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + client.geo.location: + dashed_name: client-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: client.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + client.geo.name: + dashed_name: client-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: client.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + client.geo.region_iso_code: + dashed_name: client-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: client.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + client.geo.region_name: + dashed_name: client-geo-region-name + description: Region name. + example: Quebec + flat_name: client.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + client.ip: + dashed_name: client-ip + description: IP address of the client (IPv4 or IPv6). + flat_name: client.ip + level: core + name: ip + normalize: [] + short: IP address of the client. + type: ip + client.mac: + dashed_name: client-mac + description: MAC address of the client. + flat_name: client.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the client. + type: keyword + client.nat.ip: + dashed_name: client-nat-ip + description: 'Translated IP of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Client NAT ip address + type: ip + client.nat.port: + dashed_name: client-nat-port + description: 'Translated port of source based NAT sessions (e.g. internal client + to internet). + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: client.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Client NAT port + type: long + client.packets: + dashed_name: client-packets + description: Packets sent from the client to the server. + example: 12 + flat_name: client.packets + level: core + name: packets + normalize: [] + short: Packets sent from the client to the server. + type: long + client.port: + dashed_name: client-port + description: Port of the client. + flat_name: client.port + format: string + level: core + name: port + normalize: [] + short: Port of the client. + type: long + client.registered_domain: + dashed_name: client-registered-domain + description: 'The highest registered client domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: client.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered client domain, stripped of the subdomain. + type: keyword + client.top_level_domain: + dashed_name: client-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: client.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + client.user.domain: + dashed_name: client-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + client.user.email: + dashed_name: client-user-email + description: User email address. + flat_name: client.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + client.user.full_name: + dashed_name: client-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: client.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: client.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + client.user.group.domain: + dashed_name: client-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: client.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + client.user.group.id: + dashed_name: client-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: client.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + client.user.group.name: + dashed_name: client-user-group-name + description: Name of the group. + flat_name: client.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + client.user.hash: + dashed_name: client-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: client.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + client.user.id: + dashed_name: client-user-id + description: Unique identifier of the user. + flat_name: client.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + client.user.name: + dashed_name: client-user-name + description: Short name or login of the user. + example: albert + flat_name: client.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: client.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + client.user.roles: + dashed_name: client-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: client.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: client + nestings: + - client.as + - client.geo + - client.user + prefix: client. + reused_here: + - full: client.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: client.geo + schema_name: geo + short: Fields describing a location. + - full: client.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the client side of a network connection, used with server. + title: Client + type: group +destination: + description: 'Destination fields describe details about the destination of a packet/event. + + Destination fields are usually populated in conjunction with source fields.' + fields: + destination.address: + dashed_name: destination-address + description: 'Some event destination addresses are defined ambiguously. The + event will sometimes list an IP, a domain or a unix socket. You should always + store the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: destination.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Destination network address. + type: keyword + destination.as.number: + dashed_name: destination-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: destination.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + destination.as.organization.name: + dashed_name: destination-as-organization-name + description: Organization name. + example: Google LLC + flat_name: destination.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + destination.bytes: + dashed_name: destination-bytes + description: Bytes sent from the destination to the source. + example: 184 + flat_name: destination.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the destination to the source. + type: long + destination.domain: + dashed_name: destination-domain + description: Destination domain. + flat_name: destination.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Destination domain. + type: keyword + destination.geo.city_name: + dashed_name: destination-geo-city-name + description: City name. + example: Montreal + flat_name: destination.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + destination.geo.continent_name: + dashed_name: destination-geo-continent-name + description: Name of the continent. + example: North America + flat_name: destination.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + destination.geo.country_iso_code: + dashed_name: destination-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: destination.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + destination.geo.country_name: + dashed_name: destination-geo-country-name + description: Country name. + example: Canada + flat_name: destination.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + destination.geo.location: + dashed_name: destination-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: destination.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + destination.geo.name: + dashed_name: destination-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: destination.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + destination.geo.region_iso_code: + dashed_name: destination-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: destination.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + destination.geo.region_name: + dashed_name: destination-geo-region-name + description: Region name. + example: Quebec + flat_name: destination.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + destination.ip: + dashed_name: destination-ip + description: IP address of the destination (IPv4 or IPv6). + flat_name: destination.ip + level: core + name: ip + normalize: [] + short: IP address of the destination. + type: ip + destination.mac: + dashed_name: destination-mac + description: MAC address of the destination. + flat_name: destination.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the destination. + type: keyword + destination.nat.ip: + dashed_name: destination-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Destination NAT ip + type: ip + destination.nat.port: + dashed_name: destination-nat-port + description: 'Port the source session is translated to by NAT Device. + + Typically used with load balancers, firewalls, or routers.' + flat_name: destination.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Destination NAT Port + type: long + destination.packets: + dashed_name: destination-packets + description: Packets sent from the destination to the source. + example: 12 + flat_name: destination.packets + level: core + name: packets + normalize: [] + short: Packets sent from the destination to the source. + type: long + destination.port: + dashed_name: destination-port + description: Port of the destination. + flat_name: destination.port + format: string + level: core + name: port + normalize: [] + short: Port of the destination. + type: long + destination.registered_domain: + dashed_name: destination-registered-domain + description: 'The highest registered destination domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: destination.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered destination domain, stripped of the subdomain. + type: keyword + destination.top_level_domain: + dashed_name: destination-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: destination.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + destination.user.domain: + dashed_name: destination-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + destination.user.email: + dashed_name: destination-user-email + description: User email address. + flat_name: destination.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + destination.user.full_name: + dashed_name: destination-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: destination.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: destination.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + destination.user.group.domain: + dashed_name: destination-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: destination.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + destination.user.group.id: + dashed_name: destination-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: destination.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + destination.user.group.name: + dashed_name: destination-user-group-name + description: Name of the group. + flat_name: destination.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + destination.user.hash: + dashed_name: destination-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: destination.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + destination.user.id: + dashed_name: destination-user-id + description: Unique identifier of the user. + flat_name: destination.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + destination.user.name: + dashed_name: destination-user-name + description: Short name or login of the user. + example: albert + flat_name: destination.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: destination.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + destination.user.roles: + dashed_name: destination-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: destination.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: destination + nestings: + - destination.as + - destination.geo + - destination.user + prefix: destination. + reused_here: + - full: destination.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: destination.geo + schema_name: geo + short: Fields describing a location. + - full: destination.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the destination side of a network connection, used with source. + title: Destination + type: group +ecs: + description: Meta-information specific to ECS. + fields: + ecs.version: + dashed_name: ecs-version + description: 'ECS version this event conforms to. `ecs.version` is a required + field and must exist in all events. + + When querying across multiple indices -- which may conform to slightly different + ECS versions -- this field lets integrations adjust to the schema version + of the events.' + example: 1.0.0 + flat_name: ecs.version + ignore_above: 1024 + level: core + name: version + normalize: [] + required: true + short: ECS version this event conforms to. + type: keyword + group: 2 + name: ecs + prefix: ecs. + short: Meta-information specific to ECS. + title: ECS + type: group +event: + description: 'The event fields are used for context information about the log or + metric event itself. + + A log is defined as an event containing details of something that happened. Log + events must include the time at which the thing happened. Examples of log events + include a process starting on a host, a network packet being sent from a source + to a destination, or a network connection between a client and a server being + initiated or closed. A metric is defined as an event containing one or more numerical + measurements and the time at which the measurement was taken. Examples of metric + events include memory pressure measured on a host and device temperature. See + the `event.kind` definition in this section for additional details about metric + and state events.' + fields: + event.action: + dashed_name: event-action + description: 'The action captured by the event. + + This describes the information in the event. It is more specific than `event.category`. + Examples are `group-add`, `process-started`, `file-created`. The value is + normally defined by the implementer.' + example: user-password-change + flat_name: event.action + ignore_above: 1024 + level: core + name: action + normalize: [] + short: The action captured by the event. + type: keyword + event.category: + allowed_values: + - description: Events in this category are related to the challenge and response + process in which credentials are supplied and verified to allow the creation + of a session. Common sources for these logs are Windows event logs and ssh + logs. Visualize and analyze events in this category to look for failed logins, + and other authentication-related activity. + expected_event_types: + - start + - end + - info + name: authentication + - description: The database category denotes events and metrics relating to + a data storage and retrieval system. Note that use of this category is not + limited to relational database systems. Examples include event logs from + MS SQL, MySQL, Elasticsearch, MongoDB, etc. Use this category to visualize + and analyze database activity such as accesses and changes. + expected_event_types: + - access + - change + - info + - error + name: database + - description: 'Events in the driver category have to do with operating system + device drivers and similar software entities such as Windows drivers, kernel + extensions, kernel modules, etc. + + Use events and metrics in this category to visualize and analyze driver-related + activity and status on hosts.' + expected_event_types: + - change + - end + - info + - start + name: driver + - description: Relating to a set of information that has been created on, or + has existed on a filesystem. Use this category of events to visualize and + analyze the creation, access, and deletions of files. Events in this category + can come from both host-based and network-based sources. An example source + of a network-based detection of a file transfer would be the Zeek file.log. + expected_event_types: + - change + - creation + - deletion + - info + name: file + - description: 'Use this category to visualize and analyze information such + as host inventory or host lifecycle events. + + Most of the events in this category can usually be observed from the outside, + such as from a hypervisor or a control plane''s point of view. Some can + also be seen from within, such as "start" or "end". + + Note that this category is for information about hosts themselves; it is + not meant to capture activity "happening on a host".' + expected_event_types: + - access + - change + - end + - info + - start + name: host + - description: Identity and access management (IAM) events relating to users, + groups, and administration. Use this category to visualize and analyze IAM-related + logs and data from active directory, LDAP, Okta, Duo, and other IAM systems. + expected_event_types: + - admin + - change + - creation + - deletion + - group + - info + - user + name: iam + - description: Relating to intrusion detections from IDS/IPS systems and functions, + both network and host-based. Use this category to visualize and analyze + intrusion detection alerts from systems such as Snort, Suricata, and Palo + Alto threat detections. + expected_event_types: + - allowed + - denied + - info + name: intrusion_detection + - description: Malware detection events and alerts. Use this category to visualize + and analyze malware detections from EDR/EPP systems such as Elastic Endpoint + Security, Symantec Endpoint Protection, Crowdstrike, and network IDS/IPS + systems such as Suricata, or other sources of malware-related events such + as Palo Alto Networks threat logs and Wildfire logs. + expected_event_types: + - info + name: malware + - description: Relating to all network activity, including network connection + lifecycle, network traffic, and essentially any event that includes an IP + address. Many events containing decoded network protocol transactions fit + into this category. Use events in this category to visualize or analyze + counts of network ports, protocols, addresses, geolocation information, + etc. + expected_event_types: + - access + - allowed + - connection + - denied + - end + - info + - protocol + - start + name: network + - description: Relating to software packages installed on hosts. Use this category + to visualize and analyze inventory of software installed on various hosts, + or to determine host vulnerability in the absence of vulnerability scan + data. + expected_event_types: + - access + - change + - deletion + - info + - installation + - start + name: package + - description: Use this category of events to visualize and analyze process-specific + information such as lifecycle events or process ancestry. + expected_event_types: + - access + - change + - end + - info + - start + name: process + - description: 'Relating to web server access. Use this category to create a + dashboard of web server/proxy activity from apache, IIS, nginx web servers, + etc. Note: events from network observers such as Zeek http log may also + be included in this category.' + expected_event_types: + - access + - error + - info + name: web + dashed_name: event-category + description: 'This is one of four ECS Categorization Fields, and indicates the + second level in the ECS category hierarchy. + + `event.category` represents the "big buckets" of ECS categories. For example, + filtering on `event.category:process` yields all events relating to process + activity. This field is closely related to `event.type`, which is used as + a subcategory. + + This field is an array. This will allow proper categorization of some events + that fall in multiple categories.' + example: authentication + flat_name: event.category + ignore_above: 1024 + level: core + name: category + normalize: + - array + short: Event category. The second categorization field in the hierarchy. + type: keyword + event.code: + dashed_name: event-code + description: 'Identification code for this event, if one exists. + + Some event sources use event codes to identify messages unambiguously, regardless + of message language or wording adjustments over time. An example of this is + the Windows Event ID.' + example: 4648 + flat_name: event.code + ignore_above: 1024 + level: extended + name: code + normalize: [] + short: Identification code for this event. + type: keyword + event.created: + dashed_name: event-created + description: 'event.created contains the date/time when the event was first + read by an agent, or by your pipeline. + + This field is distinct from @timestamp in that @timestamp typically contain + the time extracted from the original event. + + In most situations, these two timestamps will be slightly different. The difference + can be used to calculate the delay between your source generating an event, + and the time when your agent first processed it. This can be used to monitor + your agent''s or pipeline''s ability to keep up with your event source. + + In case the two timestamps are identical, @timestamp should be used.' + example: '2016-05-23T08:05:34.857Z' + flat_name: event.created + level: core + name: created + normalize: [] + short: Time when the event was first read by an agent or by your pipeline. + type: date + event.dataset: + dashed_name: event-dataset + description: 'Name of the dataset. + + If an event source publishes more than one type of log or events (e.g. access + log, error log), the dataset is used to specify which one the event comes + from. + + It''s recommended but not required to start the dataset name with the module + name, followed by a dot, then the dataset name.' + example: apache.access + flat_name: event.dataset + ignore_above: 1024 + level: core + name: dataset + normalize: [] + short: Name of the dataset. + type: keyword + event.duration: + dashed_name: event-duration + description: 'Duration of the event in nanoseconds. + + If event.start and event.end are known this value should be the difference + between the end and start time.' + flat_name: event.duration + format: duration + input_format: nanoseconds + level: core + name: duration + normalize: [] + output_format: asMilliseconds + output_precision: 1 + short: Duration of the event in nanoseconds. + type: long + event.end: + dashed_name: event-end + description: event.end contains the date when the event ended or when the activity + was last observed. + flat_name: event.end + level: extended + name: end + normalize: [] + short: event.end contains the date when the event ended or when the activity + was last observed. + type: date + event.hash: + dashed_name: event-hash + description: Hash (perhaps logstash fingerprint) of raw field to be able to + demonstrate log integrity. + example: 123456789012345678901234567890ABCD + flat_name: event.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + short: Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate + log integrity. + type: keyword + event.id: + dashed_name: event-id + description: Unique ID to describe the event. + example: 8a4f500d + flat_name: event.id + ignore_above: 1024 + level: core + name: id + normalize: [] + short: Unique ID to describe the event. + type: keyword + event.ingested: + dashed_name: event-ingested + description: 'Timestamp when an event arrived in the central data store. + + This is different from `@timestamp`, which is when the event originally occurred. It''s + also different from `event.created`, which is meant to capture the first time + an agent saw the event. + + In normal conditions, assuming no tampering, the timestamps should chronologically + look like this: `@timestamp` < `event.created` < `event.ingested`.' + example: '2016-05-23T08:05:35.101Z' + flat_name: event.ingested + level: core + name: ingested + normalize: [] + short: Timestamp when an event arrived in the central data store. + type: date + event.kind: + allowed_values: + - description: 'This value indicates an event that describes an alert or notable + event, triggered by a detection rule. + + `event.kind:alert` is often populated for events coming from firewalls, + intrusion detection systems, endpoint detection and response systems, and + so on.' + name: alert + - description: This value is the most general and most common value for this + field. It is used to represent events that indicate that something happened. + name: event + - description: 'This value is used to indicate that this event describes a numeric + measurement taken at given point in time. + + Examples include CPU utilization, memory usage, or device temperature. + + Metric events are often collected on a predictable frequency, such as once + every few seconds, or once a minute, but can also be used to describe ad-hoc + numeric metric queries.' + name: metric + - description: 'The state value is similar to metric, indicating that this event + describes a measurement taken at given point in time, except that the measurement + does not result in a numeric value, but rather one of a fixed set of categorical + values that represent conditions or states. + + Examples include periodic events reporting Elasticsearch cluster state (green/yellow/red), + the state of a TCP connection (open, closed, fin_wait, etc.), the state + of a host with respect to a software vulnerability (vulnerable, not vulnerable), + and the state of a system regarding compliance with a regulatory standard + (compliant, not compliant). + + Note that an event that describes a change of state would not use `event.kind:state`, + but instead would use ''event.kind:event'' since a state change fits the + more general event definition of something that happened. + + State events are often collected on a predictable frequency, such as once + every few seconds, once a minute, once an hour, or once a day, but can also + be used to describe ad-hoc state queries.' + name: state + - description: This value indicates that an error occurred during the ingestion + of this event, and that event data may be missing, inconsistent, or incorrect. + `event.kind:pipeline_error` is often associated with parsing errors. + name: pipeline_error + - description: 'This value is used by the Elastic SIEM app to denote an Elasticsearch + document that was created by a SIEM detection engine rule. + + A signal will typically trigger a notification that something meaningful + happened and should be investigated. + + Usage of this value is reserved, and pipelines should not populate `event.kind` + with the value "signal".' + name: signal + dashed_name: event-kind + description: 'This is one of four ECS Categorization Fields, and indicates the + highest level in the ECS category hierarchy. + + `event.kind` gives high-level information about what type of information the + event contains, without being specific to the contents of the event. For example, + values of this field distinguish alert events from metric events. + + The value of this field can be used to inform how these kinds of events should + be handled. They may warrant different retention, different access control, + it may also help understand whether the data coming in at a regular interval + or not.' + example: alert + flat_name: event.kind + ignore_above: 1024 + level: core + name: kind + normalize: [] + short: The kind of the event. The highest categorization field in the hierarchy. + type: keyword + event.module: + dashed_name: event-module + description: 'Name of the module this data is coming from. + + If your monitoring agent supports the concept of modules or plugins to process + events of a given source (e.g. Apache logs), `event.module` should contain + the name of this module.' + example: apache + flat_name: event.module + ignore_above: 1024 + level: core + name: module + normalize: [] + short: Name of the module this data is coming from. + type: keyword + event.original: + dashed_name: event-original + description: 'Raw text message of entire event. Used to demonstrate log integrity. + + This field is not indexed and doc_values are disabled. It cannot be searched, + but it can be retrieved from `_source`.' + doc_values: false + example: Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| + worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232 + flat_name: event.original + ignore_above: 1024 + index: false + level: core + name: original + normalize: [] + short: Raw text message of entire event. + type: keyword + event.outcome: + allowed_values: + - description: Indicates that this event describes a failed result. A common + example is `event.category:file AND event.type:access AND event.outcome:failure` + to indicate that a file access was attempted, but was not successful. + name: failure + - description: Indicates that this event describes a successful result. A common + example is `event.category:file AND event.type:create AND event.outcome:success` + to indicate that a file was successfully created. + name: success + - description: Indicates that this event describes only an attempt for which + the result is unknown from the perspective of the event producer. For example, + if the event contains information only about the request side of a transaction + that results in a response, populating `event.outcome:unknown` in the request + event is appropriate. The unknown value should not be used when an outcome + doesn't make logical sense for the event. In such cases `event.outcome` + should not be populated. + name: unknown + dashed_name: event-outcome + description: 'This is one of four ECS Categorization Fields, and indicates the + lowest level in the ECS category hierarchy. + + `event.outcome` simply denotes whether the event represents a success or a + failure from the perspective of the entity that produced the event. + + Note that when a single transaction is described in multiple events, each + event may populate different values of `event.outcome`, according to their + perspective. + + Also note that in the case of a compound event (a single event that contains + multiple logical events), this field should be populated with the value that + best captures the overall success or failure from the perspective of the event + producer. + + Further note that not all events will have an associated outcome. For example, + this field is generally not populated for metric events, events with `event.type:info`, + or any events for which an outcome does not make logical sense.' + example: success + flat_name: event.outcome + ignore_above: 1024 + level: core + name: outcome + normalize: [] + short: The outcome of the event. The lowest level categorization field in the + hierarchy. + type: keyword + event.provider: + dashed_name: event-provider + description: 'Source of the event. + + Event transports such as Syslog or the Windows Event Log typically mention + the source of an event. It can be the name of the software that generated + the event (e.g. Sysmon, httpd), or of a subsystem of the operating system + (kernel, Microsoft-Windows-Security-Auditing).' + example: kernel + flat_name: event.provider + ignore_above: 1024 + level: extended + name: provider + normalize: [] + short: Source of the event. + type: keyword + event.reason: + dashed_name: event-reason + description: 'Reason why this event happened, according to the source. + + This describes the why of a particular action or outcome captured in the event. + Where `event.action` captures the action from the event, `event.reason` describes + why that action was taken. For example, a web proxy with an `event.action` + which denied the request may also populate `event.reason` with the reason + why (e.g. `blocked site`).' + example: Terminated an unexpected process + flat_name: event.reason + ignore_above: 1024 + level: extended + name: reason + normalize: [] + short: Reason why this event happened, according to the source + type: keyword + event.reference: + dashed_name: event-reference + description: 'Reference URL linking to additional information about this event. + + This URL links to a static definition of the this event. Alert events, indicated + by `event.kind:alert`, are a common use case for this field.' + example: https://system.example.com/event/#0001234 + flat_name: event.reference + ignore_above: 1024 + level: extended + name: reference + normalize: [] + short: Event reference URL + type: keyword + event.risk_score: + dashed_name: event-risk-score + description: Risk score or priority of the event (e.g. security solutions). + Use your system's original value here. + flat_name: event.risk_score + level: core + name: risk_score + normalize: [] + short: Risk score or priority of the event (e.g. security solutions). Use your + system's original value here. + type: float + event.risk_score_norm: + dashed_name: event-risk-score-norm + description: 'Normalized risk score or priority of the event, on a scale of + 0 to 100. + + This is mainly useful if you use more than one system that assigns risk scores, + and you want to see a normalized value across all systems.' + flat_name: event.risk_score_norm + level: extended + name: risk_score_norm + normalize: [] + short: Normalized risk score or priority of the event (0-100). + type: float + event.sequence: + dashed_name: event-sequence + description: 'Sequence number of the event. + + The sequence number is a value published by some event sources, to make the + exact ordering of events unambiguous, regardless of the timestamp precision.' + flat_name: event.sequence + format: string + level: extended + name: sequence + normalize: [] + short: Sequence number of the event. + type: long + event.severity: + dashed_name: event-severity + description: 'The numeric severity of the event according to your event source. + + What the different severity values mean can be different between sources and + use cases. It''s up to the implementer to make sure severities are consistent + across events from the same source. + + The Syslog severity belongs in `log.syslog.severity.code`. `event.severity` + is meant to represent the severity according to the event source (e.g. firewall, + IDS). If the event source does not publish its own severity, you may optionally + copy the `log.syslog.severity.code` to `event.severity`.' + example: 7 + flat_name: event.severity + format: string + level: core + name: severity + normalize: [] + short: Numeric severity of the event. + type: long + event.start: + dashed_name: event-start + description: event.start contains the date when the event started or when the + activity was first observed. + flat_name: event.start + level: extended + name: start + normalize: [] + short: event.start contains the date when the event started or when the activity + was first observed. + type: date + event.timezone: + dashed_name: event-timezone + description: 'This field should be populated when the event''s timestamp does + not include timezone information already (e.g. default Syslog timestamps). + It''s optional otherwise. + + Acceptable timezone formats are: a canonical ID (e.g. "Europe/Amsterdam"), + abbreviated (e.g. "EST") or an HH:mm differential (e.g. "-05:00").' + flat_name: event.timezone + ignore_above: 1024 + level: extended + name: timezone + normalize: [] + short: Event time zone. + type: keyword + event.type: + allowed_values: + - description: The access event type is used for the subset of events within + a category that indicate that something was accessed. Common examples include + `event.category:database AND event.type:access`, or `event.category:file + AND event.type:access`. Note for file access, both directory listings and + file opens should be included in this subcategory. You can further distinguish + access operations using the ECS `event.action` field. + name: access + - description: 'The admin event type is used for the subset of events within + a category that are related to admin objects. For example, administrative + changes within an IAM framework that do not specifically affect a user or + group (e.g., adding new applications to a federation solution or connecting + discrete forests in Active Directory) would fall into this subcategory. + Common example: `event.category:iam AND event.type:change AND event.type:admin`. + You can further distinguish admin operations using the ECS `event.action` + field.' + name: admin + - description: The allowed event type is used for the subset of events within + a category that indicate that something was allowed. Common examples include + `event.category:network AND event.type:connection AND event.type:allowed` + (to indicate a network firewall event for which the firewall disposition + was to allow the connection to complete) and `event.category:intrusion_detection + AND event.type:allowed` (to indicate a network intrusion prevention system + event for which the IPS disposition was to allow the connection to complete). + You can further distinguish allowed operations using the ECS `event.action` + field, populating with values of your choosing, such as "allow", "detect", + or "pass". + name: allowed + - description: The change event type is used for the subset of events within + a category that indicate that something has changed. If semantics best describe + an event as modified, then include them in this subcategory. Common examples + include `event.category:process AND event.type:change`, and `event.category:file + AND event.type:change`. You can further distinguish change operations using + the ECS `event.action` field. + name: change + - description: Used primarily with `event.category:network` this value is used + for the subset of network traffic that includes sufficient information for + the event to be included in flow or connection analysis. Events in this + subcategory will contain at least source and destination IP addresses, source + and destination TCP/UDP ports, and will usually contain counts of bytes + and/or packets transferred. Events in this subcategory may contain unidirectional + or bidirectional information, including summary information. Use this subcategory + to visualize and analyze network connections. Flow analysis, including Netflow, + IPFIX, and other flow-related events fit in this subcategory. Note that + firewall events from many Next-Generation Firewall (NGFW) devices will also + fit into this subcategory. A common filter for flow/connection information + would be `event.category:network AND event.type:connection AND event.type:end` + (to view or analyze all completed network connections, ignoring mid-flow + reports). You can further distinguish connection events using the ECS `event.action` + field, populating with values of your choosing, such as "timeout", or "reset". + name: connection + - description: The "creation" event type is used for the subset of events within + a category that indicate that something was created. A common example is + `event.category:file AND event.type:creation`. + name: creation + - description: The deletion event type is used for the subset of events within + a category that indicate that something was deleted. A common example is + `event.category:file AND event.type:deletion` to indicate that a file has + been deleted. + name: deletion + - description: The denied event type is used for the subset of events within + a category that indicate that something was denied. Common examples include + `event.category:network AND event.type:denied` (to indicate a network firewall + event for which the firewall disposition was to deny the connection) and + `event.category:intrusion_detection AND event.type:denied` (to indicate + a network intrusion prevention system event for which the IPS disposition + was to deny the connection to complete). You can further distinguish denied + operations using the ECS `event.action` field, populating with values of + your choosing, such as "blocked", "dropped", or "quarantined". + name: denied + - description: The end event type is used for the subset of events within a + category that indicate something has ended. A common example is `event.category:process + AND event.type:end`. + name: end + - description: The error event type is used for the subset of events within + a category that indicate or describe an error. A common example is `event.category:database + AND event.type:error`. Note that pipeline errors that occur during the event + ingestion process should not use this `event.type` value. Instead, they + should use `event.kind:pipeline_error`. + name: error + - description: 'The group event type is used for the subset of events within + a category that are related to group objects. Common example: `event.category:iam + AND event.type:creation AND event.type:group`. You can further distinguish + group operations using the ECS `event.action` field.' + name: group + - description: The info event type is used for the subset of events within a + category that indicate that they are purely informational, and don't report + a state change, or any type of action. For example, an initial run of a + file integrity monitoring system (FIM), where an agent reports all files + under management, would fall into the "info" subcategory. Similarly, an + event containing a dump of all currently running processes (as opposed to + reporting that a process started/ended) would fall into the "info" subcategory. + An additional common examples is `event.category:intrusion_detection AND + event.type:info`. + name: info + - description: The installation event type is used for the subset of events + within a category that indicate that something was installed. A common example + is `event.category:package` AND `event.type:installation`. + name: installation + - description: The protocol event type is used for the subset of events within + a category that indicate that they contain protocol details or analysis, + beyond simply identifying the protocol. Generally, network events that contain + specific protocol details will fall into this subcategory. A common example + is `event.category:network AND event.type:protocol AND event.type:connection + AND event.type:end` (to indicate that the event is a network connection + event sent at the end of a connection that also includes a protocol detail + breakdown). Note that events that only indicate the name or id of the protocol + should not use the protocol value. Further note that when the protocol subcategory + is used, the identified protocol is populated in the ECS `network.protocol` + field. + expected_event_types: + - access + - change + - end + - info + - start + name: protocol + - description: The start event type is used for the subset of events within + a category that indicate something has started. A common example is `event.category:process + AND event.type:start`. + name: start + - description: 'The user event type is used for the subset of events within + a category that are related to user objects. Common example: `event.category:iam + AND event.type:deletion AND event.type:user`. You can further distinguish + user operations using the ECS `event.action` field.' + name: user + dashed_name: event-type + description: 'This is one of four ECS Categorization Fields, and indicates the + third level in the ECS category hierarchy. + + `event.type` represents a categorization "sub-bucket" that, when used along + with the `event.category` field values, enables filtering events down to a + level appropriate for single visualization. + + This field is an array. This will allow proper categorization of some events + that fall in multiple event types.' + flat_name: event.type + ignore_above: 1024 + level: core + name: type + normalize: + - array + short: Event type. The third categorization field in the hierarchy. + type: keyword + event.url: + dashed_name: event-url + description: 'URL linking to an external system to continue investigation of + this event. + + This URL links to another system where in-depth investigation of the specific + occurrence of this event can take place. Alert events, indicated by `event.kind:alert`, + are a common use case for this field.' + example: https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe + flat_name: event.url + ignore_above: 1024 + level: extended + name: url + normalize: [] + short: Event investigation URL + type: keyword + group: 2 + name: event + prefix: event. + short: Fields breaking down the event details. + title: Event + type: group +http: + description: Fields related to HTTP activity. Use the `url` field set to store the + url of the request. + fields: + http.request.body.bytes: + dashed_name: http-request-body-bytes + description: Size in bytes of the request body. + example: 887 + flat_name: http.request.body.bytes + format: bytes + level: extended + name: request.body.bytes + normalize: [] + short: Size in bytes of the request body. + type: long + http.request.body.content: + dashed_name: http-request-body-content + description: The full HTTP request body. + example: Hello world + flat_name: http.request.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.request.body.content.text + name: text + norms: false + type: text + name: request.body.content + normalize: [] + short: The full HTTP request body. + type: keyword + http.request.bytes: + dashed_name: http-request-bytes + description: Total size in bytes of the request (body and headers). + example: 1437 + flat_name: http.request.bytes + format: bytes + level: extended + name: request.bytes + normalize: [] + short: Total size in bytes of the request (body and headers). + type: long + http.request.method: + dashed_name: http-request-method + description: 'HTTP request method. + + Prior to ECS 1.6.0 the following guidance was provided: + + "The field value must be normalized to lowercase for querying." + + As of ECS 1.6.0, the guidance is deprecated because the original case of the + method may be useful in anomaly detection. Original case will be mandated + in ECS 2.0.0' + example: GET, POST, PUT, PoST + flat_name: http.request.method + ignore_above: 1024 + level: extended + name: request.method + normalize: [] + short: HTTP request method. + type: keyword + http.request.referrer: + dashed_name: http-request-referrer + description: Referrer for this HTTP request. + example: https://blog.example.com/ + flat_name: http.request.referrer + ignore_above: 1024 + level: extended + name: request.referrer + normalize: [] + short: Referrer for this HTTP request. + type: keyword + http.response.body.bytes: + dashed_name: http-response-body-bytes + description: Size in bytes of the response body. + example: 887 + flat_name: http.response.body.bytes + format: bytes + level: extended + name: response.body.bytes + normalize: [] + short: Size in bytes of the response body. + type: long + http.response.body.content: + dashed_name: http-response-body-content + description: The full HTTP response body. + example: Hello world + flat_name: http.response.body.content + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: http.response.body.content.text + name: text + norms: false + type: text + name: response.body.content + normalize: [] + short: The full HTTP response body. + type: keyword + http.response.bytes: + dashed_name: http-response-bytes + description: Total size in bytes of the response (body and headers). + example: 1437 + flat_name: http.response.bytes + format: bytes + level: extended + name: response.bytes + normalize: [] + short: Total size in bytes of the response (body and headers). + type: long + http.response.status_code: + dashed_name: http-response-status-code + description: HTTP response status code. + example: 404 + flat_name: http.response.status_code + format: string + level: extended + name: response.status_code + normalize: [] + short: HTTP response status code. + type: long + http.version: + dashed_name: http-version + description: HTTP version. + example: 1.1 + flat_name: http.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: HTTP version. + type: keyword + group: 2 + name: http + prefix: http. + short: Fields describing an HTTP request. + title: HTTP + type: group +network: + description: 'The network is defined as the communication path over which a host + or network event happens. + + The network.* fields should be populated with details about the network activity + associated with an event.' + fields: + network.application: + dashed_name: network-application + description: 'A name given to an application level protocol. This can be arbitrarily + assigned for things like microservices, but also apply to things like skype, + icq, facebook, twitter. This would be used in situations where the vendor + or service can be decoded such as from the source/dest IP owners, ports, or + wire format. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: aim + flat_name: network.application + ignore_above: 1024 + level: extended + name: application + normalize: [] + short: Application level protocol name. + type: keyword + network.bytes: + dashed_name: network-bytes + description: 'Total bytes transferred in both directions. + + If `source.bytes` and `destination.bytes` are known, `network.bytes` is their + sum.' + example: 368 + flat_name: network.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Total bytes transferred in both directions. + type: long + network.community_id: + dashed_name: network-community-id + description: 'A hash of source and destination IPs and ports, as well as the + protocol used in a communication. This is a tool-agnostic standard to identify + flows. + + Learn more at https://github.com/corelight/community-id-spec.' + example: 1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0= + flat_name: network.community_id + ignore_above: 1024 + level: extended + name: community_id + normalize: [] + short: A hash of source and destination IPs and ports. + type: keyword + network.direction: + dashed_name: network-direction + description: "Direction of the network traffic.\nRecommended values are:\n \ + \ * inbound\n * outbound\n * internal\n * external\n * unknown\n\nWhen\ + \ mapping events from a host-based monitoring context, populate this field\ + \ from the host's point of view.\nWhen mapping events from a network or perimeter-based\ + \ monitoring context, populate this field from the point of view of your network\ + \ perimeter." + example: inbound + flat_name: network.direction + ignore_above: 1024 + level: core + name: direction + normalize: [] + short: Direction of the network traffic. + type: keyword + network.forwarded_ip: + dashed_name: network-forwarded-ip + description: Host IP address when the source IP address is the proxy. + example: 192.1.1.2 + flat_name: network.forwarded_ip + level: core + name: forwarded_ip + normalize: [] + short: Host IP address when the source IP address is the proxy. + type: ip + network.iana_number: + dashed_name: network-iana-number + description: IANA Protocol Number (https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml). + Standardized list of protocols. This aligns well with NetFlow and sFlow related + logs which use the IANA Protocol Number. + example: 6 + flat_name: network.iana_number + ignore_above: 1024 + level: extended + name: iana_number + normalize: [] + short: IANA Protocol Number. + type: keyword + network.inner: + dashed_name: network-inner + description: Network.inner fields are added in addition to network.vlan fields + to describe the innermost VLAN when q-in-q VLAN tagging is present. Allowed + fields include vlan.id and vlan.name. Inner vlan fields are typically used + when sending traffic with multiple 802.1q encapsulations to a network sensor + (e.g. Zeek, Wireshark.) + flat_name: network.inner + level: extended + name: inner + normalize: [] + short: Inner VLAN tag information + type: object + network.inner.vlan.id: + dashed_name: network-inner-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.inner.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.inner.vlan.name: + dashed_name: network-inner-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.inner.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + network.name: + dashed_name: network-name + description: Name given by operators to sections of their network. + example: Guest Wifi + flat_name: network.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name given by operators to sections of their network. + type: keyword + network.packets: + dashed_name: network-packets + description: 'Total packets transferred in both directions. + + If `source.packets` and `destination.packets` are known, `network.packets` + is their sum.' + example: 24 + flat_name: network.packets + level: core + name: packets + normalize: [] + short: Total packets transferred in both directions. + type: long + network.protocol: + dashed_name: network-protocol + description: 'L7 Network protocol name. ex. http, lumberjack, transport protocol. + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: http + flat_name: network.protocol + ignore_above: 1024 + level: core + name: protocol + normalize: [] + short: L7 Network protocol name. + type: keyword + network.transport: + dashed_name: network-transport + description: 'Same as network.iana_number, but instead using the Keyword name + of the transport layer (udp, tcp, ipv6-icmp, etc.) + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: tcp + flat_name: network.transport + ignore_above: 1024 + level: core + name: transport + normalize: [] + short: Protocol Name corresponding to the field `iana_number`. + type: keyword + network.type: + dashed_name: network-type + description: 'In the OSI Model this would be the Network Layer. ipv4, ipv6, + ipsec, pim, etc + + The field value must be normalized to lowercase for querying. See the documentation + section "Implementing ECS".' + example: ipv4 + flat_name: network.type + ignore_above: 1024 + level: core + name: type + normalize: [] + short: In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, + pim, etc + type: keyword + network.vlan.id: + dashed_name: network-vlan-id + description: VLAN ID as reported by the observer. + example: 10 + flat_name: network.vlan.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: vlan + short: VLAN ID as reported by the observer. + type: keyword + network.vlan.name: + dashed_name: network-vlan-name + description: Optional VLAN name as reported by the observer. + example: outside + flat_name: network.vlan.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: vlan + short: Optional VLAN name as reported by the observer. + type: keyword + group: 2 + name: network + nestings: + - network.inner.vlan + - network.vlan + prefix: network. + reused_here: + - full: network.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + - full: network.inner.vlan + schema_name: vlan + short: Fields to describe observed VLAN information. + short: Fields describing the communication path over which the event happened. + title: Network + type: group +related: + description: 'This field set is meant to facilitate pivoting around a piece of data. + + Some pieces of information can be seen in many places in an ECS event. To facilitate + searching for them, store an array of all seen values to their corresponding field + in `related.`. + + A concrete example is IP addresses, which can be under host, observer, source, + destination, client, server, and network.forwarded_ip. If you append all IPs to + `related.ip`, you can then search for a given IP trivially, no matter where it + appeared, by querying `related.ip:192.0.2.15`.' + fields: + related.ip: + dashed_name: related-ip + description: All of the IPs seen on your event. + flat_name: related.ip + level: extended + name: ip + normalize: + - array + short: All of the IPs seen on your event. + type: ip + related.user: + dashed_name: related-user + description: All the user names seen on your event. + flat_name: related.user + ignore_above: 1024 + level: extended + name: user + normalize: + - array + short: All the user names seen on your event. + type: keyword + group: 2 + name: related + prefix: related. + short: Fields meant to facilitate pivoting around a piece of data. + title: Related + type: group +server: + description: 'A Server is defined as the responder in a network connection for events + regarding sessions, connections, or bidirectional flow records. + + For TCP events, the server is the receiver of the initial SYN packet(s) of the + TCP connection. For other protocols, the server is generally the responder in + the network transaction. Some systems actually use the term "responder" to refer + the server in TCP connections. The server fields describe details about the system + acting as the server in the network event. Server fields are usually populated + in conjunction with client fields. Server fields are generally not populated for + packet-level events. + + Client / server representations can add semantic context to an exchange, which + is helpful to visualize the data in certain situations. If your context falls + in that category, you should still ensure that source and destination are filled + appropriately.' + fields: + server.address: + dashed_name: server-address + description: 'Some event server addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: server.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Server network address. + type: keyword + server.as.number: + dashed_name: server-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: server.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + server.as.organization.name: + dashed_name: server-as-organization-name + description: Organization name. + example: Google LLC + flat_name: server.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + server.bytes: + dashed_name: server-bytes + description: Bytes sent from the server to the client. + example: 184 + flat_name: server.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the server to the client. + type: long + server.domain: + dashed_name: server-domain + description: Server domain. + flat_name: server.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Server domain. + type: keyword + server.geo.city_name: + dashed_name: server-geo-city-name + description: City name. + example: Montreal + flat_name: server.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + server.geo.continent_name: + dashed_name: server-geo-continent-name + description: Name of the continent. + example: North America + flat_name: server.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + server.geo.country_iso_code: + dashed_name: server-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: server.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + server.geo.country_name: + dashed_name: server-geo-country-name + description: Country name. + example: Canada + flat_name: server.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + server.geo.location: + dashed_name: server-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: server.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + server.geo.name: + dashed_name: server-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: server.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + server.geo.region_iso_code: + dashed_name: server-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: server.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + server.geo.region_name: + dashed_name: server-geo-region-name + description: Region name. + example: Quebec + flat_name: server.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + server.ip: + dashed_name: server-ip + description: IP address of the server (IPv4 or IPv6). + flat_name: server.ip + level: core + name: ip + normalize: [] + short: IP address of the server. + type: ip + server.mac: + dashed_name: server-mac + description: MAC address of the server. + flat_name: server.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the server. + type: keyword + server.nat.ip: + dashed_name: server-nat-ip + description: 'Translated ip of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Server NAT ip + type: ip + server.nat.port: + dashed_name: server-nat-port + description: 'Translated port of destination based NAT sessions (e.g. internet + to private DMZ) + + Typically used with load balancers, firewalls, or routers.' + flat_name: server.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Server NAT port + type: long + server.packets: + dashed_name: server-packets + description: Packets sent from the server to the client. + example: 12 + flat_name: server.packets + level: core + name: packets + normalize: [] + short: Packets sent from the server to the client. + type: long + server.port: + dashed_name: server-port + description: Port of the server. + flat_name: server.port + format: string + level: core + name: port + normalize: [] + short: Port of the server. + type: long + server.registered_domain: + dashed_name: server-registered-domain + description: 'The highest registered server domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: server.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered server domain, stripped of the subdomain. + type: keyword + server.top_level_domain: + dashed_name: server-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: server.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + server.user.domain: + dashed_name: server-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + server.user.email: + dashed_name: server-user-email + description: User email address. + flat_name: server.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + server.user.full_name: + dashed_name: server-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: server.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: server.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + server.user.group.domain: + dashed_name: server-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: server.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + server.user.group.id: + dashed_name: server-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: server.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + server.user.group.name: + dashed_name: server-user-group-name + description: Name of the group. + flat_name: server.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + server.user.hash: + dashed_name: server-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: server.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + server.user.id: + dashed_name: server-user-id + description: Unique identifier of the user. + flat_name: server.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + server.user.name: + dashed_name: server-user-name + description: Short name or login of the user. + example: albert + flat_name: server.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: server.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + server.user.roles: + dashed_name: server-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: server.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: server + nestings: + - server.as + - server.geo + - server.user + prefix: server. + reused_here: + - full: server.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: server.geo + schema_name: geo + short: Fields describing a location. + - full: server.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the server side of a network connection, used with client. + title: Server + type: group +source: + description: 'Source fields describe details about the source of a packet/event. + + Source fields are usually populated in conjunction with destination fields.' + fields: + source.address: + dashed_name: source-address + description: 'Some event source addresses are defined ambiguously. The event + will sometimes list an IP, a domain or a unix socket. You should always store + the raw address in the `.address` field. + + Then it should be duplicated to `.ip` or `.domain`, depending on which one + it is.' + flat_name: source.address + ignore_above: 1024 + level: extended + name: address + normalize: [] + short: Source network address. + type: keyword + source.as.number: + dashed_name: source-as-number + description: Unique number allocated to the autonomous system. The autonomous + system number (ASN) uniquely identifies each network on the Internet. + example: 15169 + flat_name: source.as.number + level: extended + name: number + normalize: [] + original_fieldset: as + short: Unique number allocated to the autonomous system. + type: long + source.as.organization.name: + dashed_name: source-as-organization-name + description: Organization name. + example: Google LLC + flat_name: source.as.organization.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.as.organization.name.text + name: text + norms: false + type: text + name: organization.name + normalize: [] + original_fieldset: as + short: Organization name. + type: keyword + source.bytes: + dashed_name: source-bytes + description: Bytes sent from the source to the destination. + example: 184 + flat_name: source.bytes + format: bytes + level: core + name: bytes + normalize: [] + short: Bytes sent from the source to the destination. + type: long + source.domain: + dashed_name: source-domain + description: Source domain. + flat_name: source.domain + ignore_above: 1024 + level: core + name: domain + normalize: [] + short: Source domain. + type: keyword + source.geo.city_name: + dashed_name: source-geo-city-name + description: City name. + example: Montreal + flat_name: source.geo.city_name + ignore_above: 1024 + level: core + name: city_name + normalize: [] + original_fieldset: geo + short: City name. + type: keyword + source.geo.continent_name: + dashed_name: source-geo-continent-name + description: Name of the continent. + example: North America + flat_name: source.geo.continent_name + ignore_above: 1024 + level: core + name: continent_name + normalize: [] + original_fieldset: geo + short: Name of the continent. + type: keyword + source.geo.country_iso_code: + dashed_name: source-geo-country-iso-code + description: Country ISO code. + example: CA + flat_name: source.geo.country_iso_code + ignore_above: 1024 + level: core + name: country_iso_code + normalize: [] + original_fieldset: geo + short: Country ISO code. + type: keyword + source.geo.country_name: + dashed_name: source-geo-country-name + description: Country name. + example: Canada + flat_name: source.geo.country_name + ignore_above: 1024 + level: core + name: country_name + normalize: [] + original_fieldset: geo + short: Country name. + type: keyword + source.geo.location: + dashed_name: source-geo-location + description: Longitude and latitude. + example: '{ "lon": -73.614830, "lat": 45.505918 }' + flat_name: source.geo.location + level: core + name: location + normalize: [] + original_fieldset: geo + short: Longitude and latitude. + type: geo_point + source.geo.name: + dashed_name: source-geo-name + description: 'User-defined description of a location, at the level of granularity + they care about. + + Could be the name of their data centers, the floor number, if this describes + a local physical entity, city names. + + Not typically used in automated geolocation.' + example: boston-dc + flat_name: source.geo.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: geo + short: User-defined description of a location. + type: keyword + source.geo.region_iso_code: + dashed_name: source-geo-region-iso-code + description: Region ISO code. + example: CA-QC + flat_name: source.geo.region_iso_code + ignore_above: 1024 + level: core + name: region_iso_code + normalize: [] + original_fieldset: geo + short: Region ISO code. + type: keyword + source.geo.region_name: + dashed_name: source-geo-region-name + description: Region name. + example: Quebec + flat_name: source.geo.region_name + ignore_above: 1024 + level: core + name: region_name + normalize: [] + original_fieldset: geo + short: Region name. + type: keyword + source.ip: + dashed_name: source-ip + description: IP address of the source (IPv4 or IPv6). + flat_name: source.ip + level: core + name: ip + normalize: [] + short: IP address of the source. + type: ip + source.mac: + dashed_name: source-mac + description: MAC address of the source. + flat_name: source.mac + ignore_above: 1024 + level: core + name: mac + normalize: [] + short: MAC address of the source. + type: keyword + source.nat.ip: + dashed_name: source-nat-ip + description: 'Translated ip of source based NAT sessions (e.g. internal client + to internet) + + Typically connections traversing load balancers, firewalls, or routers.' + flat_name: source.nat.ip + level: extended + name: nat.ip + normalize: [] + short: Source NAT ip + type: ip + source.nat.port: + dashed_name: source-nat-port + description: 'Translated port of source based NAT sessions. (e.g. internal client + to internet) + + Typically used with load balancers, firewalls, or routers.' + flat_name: source.nat.port + format: string + level: extended + name: nat.port + normalize: [] + short: Source NAT port + type: long + source.packets: + dashed_name: source-packets + description: Packets sent from the source to the destination. + example: 12 + flat_name: source.packets + level: core + name: packets + normalize: [] + short: Packets sent from the source to the destination. + type: long + source.port: + dashed_name: source-port + description: Port of the source. + flat_name: source.port + format: string + level: core + name: port + normalize: [] + short: Port of the source. + type: long + source.registered_domain: + dashed_name: source-registered-domain + description: 'The highest registered source domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: source.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered source domain, stripped of the subdomain. + type: keyword + source.top_level_domain: + dashed_name: source-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: source.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + source.user.domain: + dashed_name: source-user-domain + description: 'Name of the directory the user is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: user + short: Name of the directory the user is a member of. + type: keyword + source.user.email: + dashed_name: source-user-email + description: User email address. + flat_name: source.user.email + ignore_above: 1024 + level: extended + name: email + normalize: [] + original_fieldset: user + short: User email address. + type: keyword + source.user.full_name: + dashed_name: source-user-full-name + description: User's full name, if available. + example: Albert Einstein + flat_name: source.user.full_name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: source.user.full_name.text + name: text + norms: false + type: text + name: full_name + normalize: [] + original_fieldset: user + short: User's full name, if available. + type: keyword + source.user.group.domain: + dashed_name: source-user-group-domain + description: 'Name of the directory the group is a member of. + + For example, an LDAP or Active Directory domain name.' + flat_name: source.user.group.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + original_fieldset: group + short: Name of the directory the group is a member of. + type: keyword + source.user.group.id: + dashed_name: source-user-group-id + description: Unique identifier for the group on the system/platform. + flat_name: source.user.group.id + ignore_above: 1024 + level: extended + name: id + normalize: [] + original_fieldset: group + short: Unique identifier for the group on the system/platform. + type: keyword + source.user.group.name: + dashed_name: source-user-group-name + description: Name of the group. + flat_name: source.user.group.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + original_fieldset: group + short: Name of the group. + type: keyword + source.user.hash: + dashed_name: source-user-hash + description: 'Unique user hash to correlate information for a user in anonymized + form. + + Useful if `user.id` or `user.name` contain confidential information and cannot + be used.' + flat_name: source.user.hash + ignore_above: 1024 + level: extended + name: hash + normalize: [] + original_fieldset: user + short: Unique user hash to correlate information for a user in anonymized form. + type: keyword + source.user.id: + dashed_name: source-user-id + description: Unique identifier of the user. + flat_name: source.user.id + ignore_above: 1024 + level: core + name: id + normalize: [] + original_fieldset: user + short: Unique identifier of the user. + type: keyword + source.user.name: + dashed_name: source-user-name + description: Short name or login of the user. + example: albert + flat_name: source.user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: source.user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: user + short: Short name or login of the user. + type: keyword + source.user.roles: + dashed_name: source-user-roles + description: Array of user roles at the time of the event. + example: '["kibana_admin", "reporting_user"]' + flat_name: source.user.roles + ignore_above: 1024 + level: extended + name: roles + normalize: + - array + original_fieldset: user + short: Array of user roles at the time of the event. + type: keyword + group: 2 + name: source + nestings: + - source.as + - source.geo + - source.user + prefix: source. + reused_here: + - full: source.as + schema_name: as + short: Fields describing an Autonomous System (Internet routing prefix). + - full: source.geo + schema_name: geo + short: Fields describing a location. + - full: source.user + schema_name: user + short: Fields to describe the user relevant to the event. + short: Fields about the source side of a network connection, used with destination. + title: Source + type: group +url: + description: URL fields provide support for complete or partial URLs, and supports + the breaking down into scheme, domain, path, and so on. + fields: + url.domain: + dashed_name: url-domain + description: 'Domain of the url, such as "www.elastic.co". + + In some cases a URL may refer to an IP and/or port directly, without a domain + name. In this case, the IP address would go to the `domain` field.' + example: www.elastic.co + flat_name: url.domain + ignore_above: 1024 + level: extended + name: domain + normalize: [] + short: Domain of the url. + type: keyword + url.extension: + dashed_name: url-extension + description: 'The field contains the file extension from the original request + url. + + The file extension is only set if it exists, as not every url has a file extension. + + The leading period must not be included. For example, the value must be "png", + not ".png".' + example: png + flat_name: url.extension + ignore_above: 1024 + level: extended + name: extension + normalize: [] + short: File extension from the original request url. + type: keyword + url.fragment: + dashed_name: url-fragment + description: 'Portion of the url after the `#`, such as "top". + + The `#` is not part of the fragment.' + flat_name: url.fragment + ignore_above: 1024 + level: extended + name: fragment + normalize: [] + short: Portion of the url after the `#`. + type: keyword + url.full: + dashed_name: url-full + description: If full URLs are important to your use case, they should be stored + in `url.full`, whether this field is reconstructed or present in the event + source. + example: https://www.elastic.co:443/search?q=elasticsearch#top + flat_name: url.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.full.text + name: text + norms: false + type: text + name: full + normalize: [] + short: Full unparsed URL. + type: keyword + url.original: + dashed_name: url-original + description: 'Unmodified original url as seen in the event source. + + Note that in network monitoring, the observed URL may be a full URL, whereas + in access logs, the URL is often just represented as a path. + + This field is meant to represent the URL as it was observed, complete or not.' + example: https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch + flat_name: url.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: url.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unmodified original url as seen in the event source. + type: keyword + url.password: + dashed_name: url-password + description: Password of the request. + flat_name: url.password + ignore_above: 1024 + level: extended + name: password + normalize: [] + short: Password of the request. + type: keyword + url.path: + dashed_name: url-path + description: Path of the request, such as "/search". + flat_name: url.path + ignore_above: 1024 + level: extended + name: path + normalize: [] + short: Path of the request, such as "/search". + type: keyword + url.port: + dashed_name: url-port + description: Port of the request, such as 443. + example: 443 + flat_name: url.port + format: string + level: extended + name: port + normalize: [] + short: Port of the request, such as 443. + type: long + url.query: + dashed_name: url-query + description: 'The query field describes the query string of the request, such + as "q=elasticsearch". + + The `?` is excluded from the query string. If a URL contains no `?`, there + is no query field. If there is a `?` but no query, the query field exists + with an empty string. The `exists` query can be used to differentiate between + the two cases.' + flat_name: url.query + ignore_above: 1024 + level: extended + name: query + normalize: [] + short: Query string of the request. + type: keyword + url.registered_domain: + dashed_name: url-registered-domain + description: 'The highest registered url domain, stripped of the subdomain. + + For example, the registered domain for "foo.example.com" is "example.com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last two labels will not work well for TLDs such as "co.uk".' + example: example.com + flat_name: url.registered_domain + ignore_above: 1024 + level: extended + name: registered_domain + normalize: [] + short: The highest registered url domain, stripped of the subdomain. + type: keyword + url.scheme: + dashed_name: url-scheme + description: 'Scheme of the request, such as "https". + + Note: The `:` is not part of the scheme.' + example: https + flat_name: url.scheme + ignore_above: 1024 + level: extended + name: scheme + normalize: [] + short: Scheme of the url. + type: keyword + url.top_level_domain: + dashed_name: url-top-level-domain + description: 'The effective top level domain (eTLD), also known as the domain + suffix, is the last part of the domain name. For example, the top level domain + for example.com is "com". + + This value can be determined precisely with a list like the public suffix + list (http://publicsuffix.org). Trying to approximate this by simply taking + the last label will not work well for effective TLDs such as "co.uk".' + example: co.uk + flat_name: url.top_level_domain + ignore_above: 1024 + level: extended + name: top_level_domain + normalize: [] + short: The effective top level domain (com, org, net, co.uk). + type: keyword + url.username: + dashed_name: url-username + description: Username of the request. + flat_name: url.username + ignore_above: 1024 + level: extended + name: username + normalize: [] + short: Username of the request. + type: keyword + group: 2 + name: url + prefix: url. + short: Fields that let you store URLs in various forms. + title: URL + type: group +user: + description: 'The user fields describe information about the user that is relevant + to the event. + + Fields can have one entry or multiple entries. If a user has more than one id, + provide an array that includes all of them.' + fields: + user.name: + dashed_name: user-name + description: Short name or login of the user. + example: albert + flat_name: user.name + ignore_above: 1024 + level: core + multi_fields: + - flat_name: user.name.text + name: text + norms: false + type: text + name: name + normalize: [] + short: Short name or login of the user. + type: keyword + group: 2 + name: user + nestings: + - user.group + prefix: user. + reusable: + expected: + - as: user + at: client + full: client.user + - as: user + at: destination + full: destination.user + - as: user + at: host + full: host.user + - as: user + at: server + full: server.user + - as: user + at: source + full: source.user + top_level: true + reused_here: + - full: user.group + schema_name: group + short: User's group relevant to the event. + short: Fields to describe the user relevant to the event. + title: User + type: group +user_agent: + description: 'The user_agent fields normally come from a browser request. + + They often show up in web service logs coming from the parsed user agent string.' + fields: + user_agent.device.name: + dashed_name: user-agent-device-name + description: Name of the device. + example: iPhone + flat_name: user_agent.device.name + ignore_above: 1024 + level: extended + name: device.name + normalize: [] + short: Name of the device. + type: keyword + user_agent.name: + dashed_name: user-agent-name + description: Name of the user agent. + example: Safari + flat_name: user_agent.name + ignore_above: 1024 + level: extended + name: name + normalize: [] + short: Name of the user agent. + type: keyword + user_agent.original: + dashed_name: user-agent-original + description: Unparsed user_agent string. + example: Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 + (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 + flat_name: user_agent.original + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.original.text + name: text + norms: false + type: text + name: original + normalize: [] + short: Unparsed user_agent string. + type: keyword + user_agent.os.family: + dashed_name: user-agent-os-family + description: OS family (such as redhat, debian, freebsd, windows). + example: debian + flat_name: user_agent.os.family + ignore_above: 1024 + level: extended + name: family + normalize: [] + original_fieldset: os + short: OS family (such as redhat, debian, freebsd, windows). + type: keyword + user_agent.os.full: + dashed_name: user-agent-os-full + description: Operating system name, including the version or code name. + example: Mac OS Mojave + flat_name: user_agent.os.full + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.full.text + name: text + norms: false + type: text + name: full + normalize: [] + original_fieldset: os + short: Operating system name, including the version or code name. + type: keyword + user_agent.os.kernel: + dashed_name: user-agent-os-kernel + description: Operating system kernel version as a raw string. + example: 4.4.0-112-generic + flat_name: user_agent.os.kernel + ignore_above: 1024 + level: extended + name: kernel + normalize: [] + original_fieldset: os + short: Operating system kernel version as a raw string. + type: keyword + user_agent.os.name: + dashed_name: user-agent-os-name + description: Operating system name, without the version. + example: Mac OS X + flat_name: user_agent.os.name + ignore_above: 1024 + level: extended + multi_fields: + - flat_name: user_agent.os.name.text + name: text + norms: false + type: text + name: name + normalize: [] + original_fieldset: os + short: Operating system name, without the version. + type: keyword + user_agent.os.platform: + dashed_name: user-agent-os-platform + description: Operating system platform (such centos, ubuntu, windows). + example: darwin + flat_name: user_agent.os.platform + ignore_above: 1024 + level: extended + name: platform + normalize: [] + original_fieldset: os + short: Operating system platform (such centos, ubuntu, windows). + type: keyword + user_agent.os.version: + dashed_name: user-agent-os-version + description: Operating system version as a raw string. + example: 10.14.1 + flat_name: user_agent.os.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + original_fieldset: os + short: Operating system version as a raw string. + type: keyword + user_agent.version: + dashed_name: user-agent-version + description: Version of the user agent. + example: 12.0 + flat_name: user_agent.version + ignore_above: 1024 + level: extended + name: version + normalize: [] + short: Version of the user agent. + type: keyword + group: 2 + name: user_agent + nestings: + - user_agent.os + prefix: user_agent. + reused_here: + - full: user_agent.os + schema_name: os + short: OS fields contain information about the operating system. + short: Fields to describe a browser user_agent string. + title: User agent + type: group diff --git a/usage-example/generated/elasticsearch/6/template.json b/usage-example/generated/elasticsearch/6/template.json new file mode 100644 index 0000000000..2f598e8f9b --- /dev/null +++ b/usage-example/generated/elasticsearch/6/template.json @@ -0,0 +1,1158 @@ +{ + "index_patterns": [ + "acme-weblogs-*" + ], + "mappings": { + "_doc": { + "_meta": { + "version": "1.6.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "strings_as_keyword": { + "mapping": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "acme": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "agent": { + "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "message": { + "norms": false, + "type": "text" + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "related": { + "properties": { + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + } + }, + "order": 1, + "settings": { + "index": { + "codec": "best_compression", + "mapping": { + "total_fields": { + "limit": 1000 + } + }, + "refresh_interval": "2s" + } + } +} \ No newline at end of file diff --git a/usage-example/generated/elasticsearch/7/template.json b/usage-example/generated/elasticsearch/7/template.json new file mode 100644 index 0000000000..c632cfda07 --- /dev/null +++ b/usage-example/generated/elasticsearch/7/template.json @@ -0,0 +1,1156 @@ +{ + "index_patterns": [ + "acme-weblogs-*" + ], + "mappings": { + "_meta": { + "version": "1.6.0" + }, + "date_detection": false, + "dynamic_templates": [ + { + "strings_as_keyword": { + "mapping": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "match_mapping_type": "string" + } + } + ], + "properties": { + "@timestamp": { + "type": "date" + }, + "acme": { + "properties": { + "account": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "agent": { + "properties": { + "build": { + "properties": { + "original": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ephemeral_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "client": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "destination": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "ecs": { + "properties": { + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "event": { + "properties": { + "action": { + "ignore_above": 1024, + "type": "keyword" + }, + "category": { + "ignore_above": 1024, + "type": "keyword" + }, + "code": { + "ignore_above": 1024, + "type": "keyword" + }, + "created": { + "type": "date" + }, + "dataset": { + "ignore_above": 1024, + "type": "keyword" + }, + "duration": { + "type": "long" + }, + "end": { + "type": "date" + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "ingested": { + "type": "date" + }, + "kind": { + "ignore_above": 1024, + "type": "keyword" + }, + "module": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "doc_values": false, + "ignore_above": 1024, + "index": false, + "type": "keyword" + }, + "outcome": { + "ignore_above": 1024, + "type": "keyword" + }, + "provider": { + "ignore_above": 1024, + "type": "keyword" + }, + "reason": { + "ignore_above": 1024, + "type": "keyword" + }, + "reference": { + "ignore_above": 1024, + "type": "keyword" + }, + "risk_score": { + "type": "float" + }, + "risk_score_norm": { + "type": "float" + }, + "sequence": { + "type": "long" + }, + "severity": { + "type": "long" + }, + "start": { + "type": "date" + }, + "timezone": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "http": { + "properties": { + "request": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "method": { + "ignore_above": 1024, + "type": "keyword" + }, + "referrer": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "response": { + "properties": { + "body": { + "properties": { + "bytes": { + "type": "long" + }, + "content": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "bytes": { + "type": "long" + }, + "status_code": { + "type": "long" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "labels": { + "type": "object" + }, + "message": { + "norms": false, + "type": "text" + }, + "network": { + "properties": { + "application": { + "ignore_above": 1024, + "type": "keyword" + }, + "bytes": { + "type": "long" + }, + "community_id": { + "ignore_above": 1024, + "type": "keyword" + }, + "direction": { + "ignore_above": 1024, + "type": "keyword" + }, + "forwarded_ip": { + "type": "ip" + }, + "iana_number": { + "ignore_above": 1024, + "type": "keyword" + }, + "inner": { + "properties": { + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + }, + "type": "object" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "packets": { + "type": "long" + }, + "protocol": { + "ignore_above": 1024, + "type": "keyword" + }, + "transport": { + "ignore_above": 1024, + "type": "keyword" + }, + "type": { + "ignore_above": 1024, + "type": "keyword" + }, + "vlan": { + "properties": { + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "related": { + "properties": { + "ip": { + "type": "ip" + }, + "user": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "server": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "source": { + "properties": { + "address": { + "ignore_above": 1024, + "type": "keyword" + }, + "as": { + "properties": { + "number": { + "type": "long" + }, + "organization": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "bytes": { + "type": "long" + }, + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "geo": { + "properties": { + "city_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "continent_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "country_name": { + "ignore_above": 1024, + "type": "keyword" + }, + "location": { + "type": "geo_point" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_iso_code": { + "ignore_above": 1024, + "type": "keyword" + }, + "region_name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "ip": { + "type": "ip" + }, + "mac": { + "ignore_above": 1024, + "type": "keyword" + }, + "nat": { + "properties": { + "ip": { + "type": "ip" + }, + "port": { + "type": "long" + } + } + }, + "packets": { + "type": "long" + }, + "port": { + "type": "long" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "user": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "email": { + "ignore_above": 1024, + "type": "keyword" + }, + "full_name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "group": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "hash": { + "ignore_above": 1024, + "type": "keyword" + }, + "id": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "roles": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "tags": { + "ignore_above": 1024, + "type": "keyword" + }, + "url": { + "properties": { + "domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "extension": { + "ignore_above": 1024, + "type": "keyword" + }, + "fragment": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "password": { + "ignore_above": 1024, + "type": "keyword" + }, + "path": { + "ignore_above": 1024, + "type": "keyword" + }, + "port": { + "type": "long" + }, + "query": { + "ignore_above": 1024, + "type": "keyword" + }, + "registered_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "scheme": { + "ignore_above": 1024, + "type": "keyword" + }, + "top_level_domain": { + "ignore_above": 1024, + "type": "keyword" + }, + "username": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user": { + "properties": { + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "user_agent": { + "properties": { + "device": { + "properties": { + "name": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "name": { + "ignore_above": 1024, + "type": "keyword" + }, + "original": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "os": { + "properties": { + "family": { + "ignore_above": 1024, + "type": "keyword" + }, + "full": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "kernel": { + "ignore_above": 1024, + "type": "keyword" + }, + "name": { + "fields": { + "text": { + "norms": false, + "type": "text" + } + }, + "ignore_above": 1024, + "type": "keyword" + }, + "platform": { + "ignore_above": 1024, + "type": "keyword" + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + }, + "version": { + "ignore_above": 1024, + "type": "keyword" + } + } + } + } + }, + "order": 1, + "settings": { + "index": { + "codec": "best_compression", + "mapping": { + "total_fields": { + "limit": 1000 + } + }, + "refresh_interval": "2s" + } + } +} \ No newline at end of file From 40ffbcfae5ae7c1f03647bf718eee8ac14d8ed7d Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Wed, 21 Oct 2020 13:09:28 -0500 Subject: [PATCH 21/45] Update Jinja2 section to reflect template refactoring (#1018) --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c5e06d8041..45bd56d5cc 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -151,7 +151,7 @@ The following files are generated based on the current schema using [Jinja](http | ------------------ | -------- | | [fields.asciidoc](docs/fields.asciidoc) | [fields_template.j2](scripts/templates/fields_template.j2) | | [fields-values.asciidoc](docs/field-values.asciidoc) | [field_values_template.j2](scripts/templates/field_values_template.j2) | -| [field-details.asciidoc](docs/field-details.asciidoc) | [field_details directory](scripts/templates/field_details) | +| [field-details.asciidoc](docs/field-details.asciidoc) | [field_details.j2](scripts/templates/field_details.j2) | Running `make` will update these files using the [scripts/generators/asciidoc_fields.py](scripts/generators/asciidoc_fields.py) generator. These doc files should *not* be modified directly. Any changes as a result of a schema update and subsequent run of `make` *should* be committed. From 4562e116f134230b2b0885345e6cf9ddfe7355af Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Wed, 21 Oct 2020 14:18:11 -0400 Subject: [PATCH 22/45] New default make task that generates main and experimental artifacts. (#1041) Also changing the order of the 'generate' task: it now starts with the new generator, then runs the legacy scripts. --- Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 07f0442421..67ee219d8a 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ # # Variables # -.DEFAULT_GOAL := generate +.DEFAULT_GOAL := all FIND := find . -type f -not -path './build/*' -not -path './.git/*' FORCE_GO_MODULES := GO111MODULE=on OPEN_DOCS ?= "--open" @@ -12,6 +12,10 @@ VERSION := $(shell cat version) # Targets (sorted alphabetically) # +# Default build generates main and experimental artifacts +.PHONY: all +all: generate experimental + # Check verifies that all of the committed files that are generated are # up-to-date. .PHONY: check @@ -60,7 +64,7 @@ fmt: ve # Alias to generate everything. .PHONY: generate -generate: legacy_use_cases codegen generator +generate: generator legacy_use_cases codegen $(PYTHON) --version # Run the new generator From 260a3eb83d4cb5cbe58b1e0ba4526d57da70ed57 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Wed, 21 Oct 2020 14:58:49 -0400 Subject: [PATCH 23/45] Add support for `scaling_factor` in the generator (#1042) --- CHANGELOG.next.md | 1 + scripts/generators/beats.py | 2 +- scripts/generators/es_template.py | 2 ++ scripts/schema/cleaner.py | 6 ++++-- scripts/tests/test_es_template.py | 13 +++++++++++++ scripts/tests/unit/test_schema_cleaner.py | 7 +++++++ 6 files changed, 28 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 4c63b041eb..3c8577cb6c 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -30,6 +30,7 @@ Thanks, you're awesome :-) --> * Added ability to supply free-form usage documentation per fieldset. #988 * Added the `path` key when type is `alias`, to support the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html). #877 +* Added support for `scaled_float`'s mandatory parameter `scaling_factor`. #1042 #### Improvements diff --git a/scripts/generators/beats.py b/scripts/generators/beats.py index 457fecc5ec..0d182b40db 100644 --- a/scripts/generators/beats.py +++ b/scripts/generators/beats.py @@ -34,7 +34,7 @@ def fieldset_field_array(source_fields, df_whitelist, fieldset_prefix): allowed_keys = ['name', 'level', 'required', 'type', 'object_type', 'ignore_above', 'multi_fields', 'format', 'input_format', 'output_format', 'output_precision', 'description', - 'example', 'enabled', 'index', 'path'] + 'example', 'enabled', 'index', 'path', 'scaling_factor'] multi_fields_allowed_keys = ['name', 'type', 'norms', 'default_field', 'normalizer', 'ignore_above'] fields = [] diff --git a/scripts/generators/es_template.py b/scripts/generators/es_template.py index 08e925f0ae..9fed37ee05 100644 --- a/scripts/generators/es_template.py +++ b/scripts/generators/es_template.py @@ -61,6 +61,8 @@ def entry_for(field): ecs_helpers.dict_copy_existing_keys(field, field_entry, ['norms']) elif field['type'] == 'alias': ecs_helpers.dict_copy_existing_keys(field, field_entry, ['path']) + elif field['type'] == 'scaled_float': + ecs_helpers.dict_copy_existing_keys(field, field_entry, ['scaling_factor']) if 'multi_fields' in field: field_entry['fields'] = {} diff --git a/scripts/schema/cleaner.py b/scripts/schema/cleaner.py index fa5838cbb7..ab3acfcaeb 100644 --- a/scripts/schema/cleaner.py +++ b/scripts/schema/cleaner.py @@ -159,10 +159,12 @@ def field_mandatory_attributes(field): current_field_attributes = sorted(field['field_details'].keys()) missing_attributes = ecs_helpers.list_subtract(FIELD_MANDATORY_ATTRIBUTES, current_field_attributes) - # The `alias` type requires a target path. - # https://github.com/elastic/ecs/issues/876 + # `alias` fields require a target `path` attribute. if field['field_details'].get('type') == 'alias' and 'path' not in current_field_attributes: missing_attributes.append('path') + # `scaled_float` fields require a `scaling_factor` attribute. + if field['field_details'].get('type') == 'scaled_float' and 'scaling_factor' not in current_field_attributes: + missing_attributes.append('scaling_factor') if len(missing_attributes) > 0: msg = "Field is missing the following mandatory attributes: {}.\nFound these: {}.\nField details: {}" diff --git a/scripts/tests/test_es_template.py b/scripts/tests/test_es_template.py index 9136f8b99e..a1491d2241 100644 --- a/scripts/tests/test_es_template.py +++ b/scripts/tests/test_es_template.py @@ -122,6 +122,19 @@ def test_entry_for_alias(self): } self.assertEqual(es_template.entry_for(test_map), exp) + def test_entry_for_scaled_float(self): + test_map = { + 'name': 'test.scaled_float', + 'type': 'scaled_float', + 'scaling_factor': 1000 + } + + exp = { + 'type': 'scaled_float', + 'scaling_factor': 1000 + } + self.assertEqual(es_template.entry_for(test_map), exp) + if __name__ == '__main__': unittest.main() diff --git a/scripts/tests/unit/test_schema_cleaner.py b/scripts/tests/unit/test_schema_cleaner.py index ba86728e2d..13f78c4e91 100644 --- a/scripts/tests/unit/test_schema_cleaner.py +++ b/scripts/tests/unit/test_schema_cleaner.py @@ -164,6 +164,13 @@ def test_field_raises_on_alias_missing_path_attribute(self): "mandatory attributes: {}".format("path")): cleaner.field_mandatory_attributes(field) + def test_raises_on_missing_scaling_factor(self): + field = self.schema_process()['process']['fields']['pid'] + field['field_details']['type'] = "scaled_float" + with self.assertRaisesRegex(ValueError, + "mandatory attributes: {}".format("scaling_factor")): + cleaner.field_mandatory_attributes(field) + def test_field_simple_cleanup(self): my_field = { 'field_details': { From 13a12c013b4c9d2d5f3626a5f15995de535e5514 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Thu, 22 Oct 2020 15:24:01 -0500 Subject: [PATCH 24/45] Correct experimental usage example (#1045) Co-authored-by: Mathieu Martin --- USAGE.md | 8 ++++++++ experimental/README.md | 3 +-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/USAGE.md b/USAGE.md index 9d478dfa3e..e32cd01cb0 100644 --- a/USAGE.md +++ b/USAGE.md @@ -187,6 +187,14 @@ For example, if we defined the following schema definition in a file named `mypr Unique identifier of the widget. ``` +Multiple directory targets can also be provided: + +``` +$ python scripts/generator.py \ + --include ../myproject/custom-fields-A/ ../myproject/custom-fields-B \ + --out ../myproject/out/ +``` + Generate artifacts using `--include` to load our custom definitions in addition to `--out` to place them in the desired output directory: ``` diff --git a/experimental/README.md b/experimental/README.md index c9141e8e6a..92780c5d4c 100644 --- a/experimental/README.md +++ b/experimental/README.md @@ -14,8 +14,7 @@ The [experimental/schemas](./schemas) directory contains the YAML files for the If you use the ECS generator script as described in [USAGE.md](../USAGE.md) to maintain your custom index templates, here's how you can try these experimental changes in your project: ```sh -$ python scripts/generator.py --include experimental/schemas \ - --include ../myproject/fields/custom/ \ +$ python scripts/generator.py --include experimental/schemas ../myproject/fields/custom/ \ --out ../myproject/fields/generated ``` From 472041e61f26b60d3476ba1fed95188a639888a4 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Mon, 26 Oct 2020 10:19:19 -0400 Subject: [PATCH 25/45] Fix the discuss link in the GH issue templates (#1047) --- .github/ISSUE_TEMPLATE/config.yml | 2 +- .github/ISSUE_TEMPLATE/schema-issue.md | 2 +- .github/ISSUE_TEMPLATE/tooling-bug.md | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index ba06e34be8..fffe8d5cc3 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,5 +1,5 @@ blank_issues_enabled: true contact_links: - name: Question - url: https://discuss.elastic.co/tag/elastic-common-schema + url: https://discuss.elastic.co/tag/ecs-elastic-common-schema about: Ask (and answer) questions here. diff --git a/.github/ISSUE_TEMPLATE/schema-issue.md b/.github/ISSUE_TEMPLATE/schema-issue.md index 52f33a68ea..a28fd1c901 100644 --- a/.github/ISSUE_TEMPLATE/schema-issue.md +++ b/.github/ISSUE_TEMPLATE/schema-issue.md @@ -7,7 +7,7 @@ labels: "bug" diff --git a/.github/ISSUE_TEMPLATE/tooling-bug.md b/.github/ISSUE_TEMPLATE/tooling-bug.md index 2055665ed3..70d055efc7 100644 --- a/.github/ISSUE_TEMPLATE/tooling-bug.md +++ b/.github/ISSUE_TEMPLATE/tooling-bug.md @@ -7,7 +7,7 @@ labels: "bug" From d3546c96c9361599aedbe7a8bee07a61b9797cfb Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Mon, 26 Oct 2020 10:19:39 -0400 Subject: [PATCH 26/45] Add fallback for constant_keyword (#1046) --- CHANGELOG.next.md | 1 + scripts/schema/oss.py | 6 ++++-- scripts/tests/unit/test_schema_oss.py | 11 ++++++++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 3c8577cb6c..c53e8cf33b 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -31,6 +31,7 @@ Thanks, you're awesome :-) --> * Added ability to supply free-form usage documentation per fieldset. #988 * Added the `path` key when type is `alias`, to support the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html). #877 * Added support for `scaled_float`'s mandatory parameter `scaling_factor`. #1042 +* Added ability for --oss flag to fall back `constant_keyword` to `keyword`. #1046 #### Improvements diff --git a/scripts/schema/oss.py b/scripts/schema/oss.py index ba38a254b1..bfc07bb071 100644 --- a/scripts/schema/oss.py +++ b/scripts/schema/oss.py @@ -13,6 +13,7 @@ from schema import visitor TYPE_FALLBACKS = { + 'constant_keyword': 'keyword', 'wildcard': 'keyword', 'version': 'keyword' } @@ -25,5 +26,6 @@ def fallback(fields): def perform_fallback(field): """Performs a best effort fallback of basic data types to equivalent OSS data types.""" - if field['field_details']['type'] in TYPE_FALLBACKS.keys(): - field['field_details']['type'] = TYPE_FALLBACKS[field['field_details']['type']] + fallback_type = TYPE_FALLBACKS.get(field['field_details']['type']) + if fallback_type: + field['field_details']['type'] = fallback_type diff --git a/scripts/tests/unit/test_schema_oss.py b/scripts/tests/unit/test_schema_oss.py index 4ac08d9d08..910b7959ca 100644 --- a/scripts/tests/unit/test_schema_oss.py +++ b/scripts/tests/unit/test_schema_oss.py @@ -14,6 +14,8 @@ class TestSchemaOss(unittest.TestCase): def setUp(self): self.maxDiff = None + # Fallbacks + def test_wildcard_fallback(self): field = {'field_details': {'name': 'myfield', 'type': 'wildcard'}} oss.perform_fallback(field) @@ -24,12 +26,19 @@ def test_version_fallback(self): oss.perform_fallback(field) self.assertEqual('keyword', field['field_details']['type']) + def test_constant_keyword_fallback(self): + field = {'field_details': {'name': 'myfield', 'type': 'constant_keyword'}} + oss.perform_fallback(field) + self.assertEqual('keyword', field['field_details']['type']) + + # Not falling back + def test_basic_without_fallback(self): field = {'field_details': {'name': 'myfield', 'type': 'histogram'}} oss.perform_fallback(field) self.assertEqual('histogram', field['field_details']['type']) - def test_oss_no_fallback(self): + def test_oss_no_fallback_needed(self): field = {'field_details': {'name': 'myfield', 'type': 'keyword'}} oss.perform_fallback(field) self.assertEqual('keyword', field['field_details']['type']) From f868575e7b7d0ea92a8457234ed7834e460c04e7 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Tue, 27 Oct 2020 13:07:03 -0400 Subject: [PATCH 27/45] Add event.category session. (#1049) --- CHANGELOG.next.md | 2 ++ docs/field-details.asciidoc | 2 +- docs/field-values.asciidoc | 13 +++++++++++++ experimental/generated/ecs/ecs_flat.yml | 10 ++++++++++ experimental/generated/ecs/ecs_nested.yml | 10 ++++++++++ generated/ecs/ecs_flat.yml | 10 ++++++++++ generated/ecs/ecs_nested.yml | 10 ++++++++++ schemas/event.yml | 9 +++++++++ 8 files changed, 65 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index c53e8cf33b..ef673a8d71 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -10,6 +10,8 @@ Thanks, you're awesome :-) --> ### Schema Changes +* Added `event.category` "session". #1049 + #### Breaking changes #### Bugfixes diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index f961b6fa89..a89a0bf6e1 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -1597,7 +1597,7 @@ Note: this field should contain an array of values. *Important*: The field value must be one of the following: -authentication, configuration, database, driver, file, host, iam, intrusion_detection, malware, network, package, process, web +authentication, configuration, database, driver, file, host, iam, intrusion_detection, malware, network, package, process, session, web To learn more about when to use which value, visit the page <> diff --git a/docs/field-values.asciidoc b/docs/field-values.asciidoc index 1ef4b8e072..653b031cc2 100644 --- a/docs/field-values.asciidoc +++ b/docs/field-values.asciidoc @@ -144,6 +144,7 @@ that will require subsequent breaking changes. * <> * <> * <> +* <> * <> [float] @@ -298,6 +299,18 @@ Use this category of events to visualize and analyze process-specific informatio access, change, end, info, start +[float] +[[ecs-event-category-session]] +==== session + +The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc. + + +*Expected event types for category session:* + +start, end, info + + [float] [[ecs-event-category-web]] ==== web diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml index 13a7c32325..28898f42e2 100644 --- a/experimental/generated/ecs/ecs_flat.yml +++ b/experimental/generated/ecs/ecs_flat.yml @@ -1774,6 +1774,16 @@ event.category: - info - start name: process + - description: The session category is applied to events and metrics regarding logical + persistent connections to hosts and services. Use this category to visualize + and analyze interactive or automated persistent connections between assets. + Data for this category may come from Windows Event logs, SSH logs, or stateless + sessions such as HTTP cookie-based sessions, etc. + expected_event_types: + - start + - end + - info + name: session - description: 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index bfb2df366d..f17cc20d19 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -2168,6 +2168,16 @@ event: - info - start name: process + - description: The session category is applied to events and metrics regarding + logical persistent connections to hosts and services. Use this category + to visualize and analyze interactive or automated persistent connections + between assets. Data for this category may come from Windows Event logs, + SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc. + expected_event_types: + - start + - end + - info + name: session - description: 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index 81a1ee4950..d085df9e87 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -1814,6 +1814,16 @@ event.category: - info - start name: process + - description: The session category is applied to events and metrics regarding logical + persistent connections to hosts and services. Use this category to visualize + and analyze interactive or automated persistent connections between assets. + Data for this category may come from Windows Event logs, SSH logs, or stateless + sessions such as HTTP cookie-based sessions, etc. + expected_event_types: + - start + - end + - info + name: session - description: 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also be included in diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index 1ca8779d5e..3bb3ce663b 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -2209,6 +2209,16 @@ event: - info - start name: process + - description: The session category is applied to events and metrics regarding + logical persistent connections to hosts and services. Use this category + to visualize and analyze interactive or automated persistent connections + between assets. Data for this category may come from Windows Event logs, + SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc. + expected_event_types: + - start + - end + - info + name: session - description: 'Relating to web server access. Use this category to create a dashboard of web server/proxy activity from apache, IIS, nginx web servers, etc. Note: events from network observers such as Zeek http log may also diff --git a/schemas/event.yml b/schemas/event.yml index 6778790784..b4add99818 100644 --- a/schemas/event.yml +++ b/schemas/event.yml @@ -277,6 +277,15 @@ - end - info - start + - name: session + description: > + The session category is applied to events and metrics regarding logical persistent connections to hosts and services. + Use this category to visualize and analyze interactive or automated persistent connections between assets. + Data for this category may come from Windows Event logs, SSH logs, or stateless sessions such as HTTP cookie-based sessions, etc. + expected_event_types: + - start + - end + - info - name: web description: > Relating to web server access. Use this category to create a dashboard of From d75353aee37e11e659629c69c4611dd729912e2e Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Tue, 27 Oct 2020 13:53:10 -0400 Subject: [PATCH 28/45] Add event.category registry (#1040) --- CHANGELOG.next.md | 5 +++-- docs/field-details.asciidoc | 2 +- docs/field-values.asciidoc | 13 +++++++++++++ experimental/generated/ecs/ecs_flat.yml | 9 +++++++++ experimental/generated/ecs/ecs_nested.yml | 9 +++++++++ generated/ecs/ecs_flat.yml | 9 +++++++++ generated/ecs/ecs_nested.yml | 9 +++++++++ schemas/event.yml | 9 +++++++++ 8 files changed, 62 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index ef673a8d71..103f8099a2 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -10,14 +10,15 @@ Thanks, you're awesome :-) --> ### Schema Changes -* Added `event.category` "session". #1049 - #### Breaking changes #### Bugfixes #### Added +* Added `event.category` "registry". #1040 +* Added `event.category` "session". #1049 + #### Improvements #### Deprecated diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index a89a0bf6e1..ddcb587a24 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -1597,7 +1597,7 @@ Note: this field should contain an array of values. *Important*: The field value must be one of the following: -authentication, configuration, database, driver, file, host, iam, intrusion_detection, malware, network, package, process, session, web +authentication, configuration, database, driver, file, host, iam, intrusion_detection, malware, network, package, process, registry, session, web To learn more about when to use which value, visit the page <> diff --git a/docs/field-values.asciidoc b/docs/field-values.asciidoc index 653b031cc2..6f3adc1c26 100644 --- a/docs/field-values.asciidoc +++ b/docs/field-values.asciidoc @@ -144,6 +144,7 @@ that will require subsequent breaking changes. * <> * <> * <> +* <> * <> * <> @@ -299,6 +300,18 @@ Use this category of events to visualize and analyze process-specific informatio access, change, end, info, start +[float] +[[ecs-event-category-registry]] +==== registry + +Having to do with settings and assets stored in the Windows registry. Use this category to visualize and analyze activity such as registry access and modifications. + + +*Expected event types for category registry:* + +access, change, creation, deletion + + [float] [[ecs-event-category-session]] ==== session diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml index 28898f42e2..b07d2ba201 100644 --- a/experimental/generated/ecs/ecs_flat.yml +++ b/experimental/generated/ecs/ecs_flat.yml @@ -1774,6 +1774,15 @@ event.category: - info - start name: process + - description: Having to do with settings and assets stored in the Windows registry. + Use this category to visualize and analyze activity such as registry access + and modifications. + expected_event_types: + - access + - change + - creation + - deletion + name: registry - description: The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index f17cc20d19..ebd19083ed 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -2168,6 +2168,15 @@ event: - info - start name: process + - description: Having to do with settings and assets stored in the Windows registry. + Use this category to visualize and analyze activity such as registry access + and modifications. + expected_event_types: + - access + - change + - creation + - deletion + name: registry - description: The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections diff --git a/generated/ecs/ecs_flat.yml b/generated/ecs/ecs_flat.yml index d085df9e87..9447fa982b 100644 --- a/generated/ecs/ecs_flat.yml +++ b/generated/ecs/ecs_flat.yml @@ -1814,6 +1814,15 @@ event.category: - info - start name: process + - description: Having to do with settings and assets stored in the Windows registry. + Use this category to visualize and analyze activity such as registry access + and modifications. + expected_event_types: + - access + - change + - creation + - deletion + name: registry - description: The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections between assets. diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index 3bb3ce663b..ca9424eaed 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -2209,6 +2209,15 @@ event: - info - start name: process + - description: Having to do with settings and assets stored in the Windows registry. + Use this category to visualize and analyze activity such as registry access + and modifications. + expected_event_types: + - access + - change + - creation + - deletion + name: registry - description: The session category is applied to events and metrics regarding logical persistent connections to hosts and services. Use this category to visualize and analyze interactive or automated persistent connections diff --git a/schemas/event.yml b/schemas/event.yml index b4add99818..45128fcf4a 100644 --- a/schemas/event.yml +++ b/schemas/event.yml @@ -277,6 +277,15 @@ - end - info - start + - name: registry + description: > + Having to do with settings and assets stored in the Windows registry. + Use this category to visualize and analyze activity such as registry access and modifications. + expected_event_types: + - access + - change + - creation + - deletion - name: session description: > The session category is applied to events and metrics regarding logical persistent connections to hosts and services. From dfd5c5a28be5d6adfcb4454c584b3cc189d64cc2 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Tue, 27 Oct 2020 17:58:01 -0500 Subject: [PATCH 29/45] Add wildcard type support to go code generator (#1050) * add wildcard type support * also add version and constant_keyword * changelog --- CHANGELOG.next.md | 1 + scripts/cmd/gocodegen/gocodegen.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.next.md b/CHANGELOG.next.md index 103f8099a2..c05fd1c2f7 100644 --- a/CHANGELOG.next.md +++ b/CHANGELOG.next.md @@ -35,6 +35,7 @@ Thanks, you're awesome :-) --> * Added the `path` key when type is `alias`, to support the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html). #877 * Added support for `scaled_float`'s mandatory parameter `scaling_factor`. #1042 * Added ability for --oss flag to fall back `constant_keyword` to `keyword`. #1046 +* Added support in the generated Go source go for `wildcard`, `version`, and `constant_keyword` data types. #1050 #### Improvements diff --git a/scripts/cmd/gocodegen/gocodegen.go b/scripts/cmd/gocodegen/gocodegen.go index c202691ce0..8fff5ed5d9 100644 --- a/scripts/cmd/gocodegen/gocodegen.go +++ b/scripts/cmd/gocodegen/gocodegen.go @@ -274,7 +274,7 @@ func goDataType(fieldName, elasticsearchDataType string) string { } switch elasticsearchDataType { - case "keyword", "text", "ip", "geo_point": + case "keyword", "wildcard", "version", "constant_keyword", "text", "ip", "geo_point": return "string" case "long": return "int64" From 0fb41a17249640db6e2a32f90d88ef648f159c11 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Wed, 28 Oct 2020 13:22:30 -0500 Subject: [PATCH 30/45] Add constant_keyword to OSS fallback types list (#1058) --- USAGE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/USAGE.md b/USAGE.md index e32cd01cb0..3888a4aad2 100644 --- a/USAGE.md +++ b/USAGE.md @@ -351,6 +351,7 @@ Indices using purely OSS types will benefit from the normalization of ECS, but m Current fallbacks applied by this flag are: +- `constant_keyword` => `keyword` - `wildcard` => `keyword` - `version` => `keyword` From 67a596ee263de8598aac3a63fb65794c432474a7 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Mon, 2 Nov 2020 11:57:41 -0500 Subject: [PATCH 31/45] Change the index pattern in the sample template. (#1048) --- CHANGELOG.md | 5 +++ .../generated/elasticsearch/7/template.json | 2 +- generated/elasticsearch/6/template.json | 2 +- generated/elasticsearch/7/template.json | 2 +- generated/elasticsearch/README.md | 41 ++++++++++++++----- scripts/generators/es_template.py | 2 +- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2150e1c38f..6a5f1d977a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,11 @@ All notable changes to this project will be documented in this file based on the ### Tooling and Artifact Changes +#### Breaking changes + +* Changed the index pattern of the sample Elasticsearch template from `ecs-*` to + `try-ecs-*` to avoid conflicting with Logstash' `ecs-logstash-*`. #1048 + #### Bugfixes * Addressed issue where foreign reuses weren't using the user-supplied `as` value for their destination. #960 diff --git a/experimental/generated/elasticsearch/7/template.json b/experimental/generated/elasticsearch/7/template.json index c4cded14d5..80d7e168d4 100644 --- a/experimental/generated/elasticsearch/7/template.json +++ b/experimental/generated/elasticsearch/7/template.json @@ -1,6 +1,6 @@ { "index_patterns": [ - "ecs-*" + "try-ecs-*" ], "mappings": { "_meta": { diff --git a/generated/elasticsearch/6/template.json b/generated/elasticsearch/6/template.json index c597a6d2cb..0f6e8dfb83 100644 --- a/generated/elasticsearch/6/template.json +++ b/generated/elasticsearch/6/template.json @@ -1,6 +1,6 @@ { "index_patterns": [ - "ecs-*" + "try-ecs-*" ], "mappings": { "_doc": { diff --git a/generated/elasticsearch/7/template.json b/generated/elasticsearch/7/template.json index 63c8c381c8..8583630fb1 100644 --- a/generated/elasticsearch/7/template.json +++ b/generated/elasticsearch/7/template.json @@ -1,6 +1,6 @@ { "index_patterns": [ - "ecs-*" + "try-ecs-*" ], "mappings": { "_meta": { diff --git a/generated/elasticsearch/README.md b/generated/elasticsearch/README.md index 062afac1f9..40579d141c 100644 --- a/generated/elasticsearch/README.md +++ b/generated/elasticsearch/README.md @@ -3,33 +3,52 @@ Crafting the perfect Elasticsearch template is an art. But here's a good starting point for experimentation. +When you're ready to customize this template to the precise needs of your use case, +please check out [USAGE.md](../../USAGE.md). + +## Notes on index naming + +This sample Elasticsearch template will apply to any index named `try-ecs-*`. +This is good for experimentation. + +Note that an index following ECS can be named however you need. There's no requirement +to have "ecs" in the index name. + ## Instructions -Load the template from your shell +If you want to play with a specific version of ECS, check out the proper branch first. + +``` +git checkout 1.6 +``` + +Load the template in Elasticsearch from your shell. ```bash # Elasticsearch 7 -curl -XPOST 'localhost:9200/_template/ecs-test' --header "Content-Type: application/json" \ +curl -XPOST 'localhost:9200/_template/try-ecs' \ + --header "Content-Type: application/json" \ -d @'generated/elasticsearch/7/template.json' # or Elasticsearch 6 -curl -XPOST 'localhost:9200/_template/ecs-test' --header "Content-Type: application/json" \ +curl -XPOST 'localhost:9200/_template/try-ecs' \ + --header "Content-Type: application/json" \ -d @'generated/elasticsearch/6/template.json' ``` Play from Kibana Dev Tools ``` -# 👀 -GET _template/ecs-test +# Look at the template you just uploaded 👀 +GET _template/try-ecs -# index -PUT ecs-test -GET ecs-test -POST ecs-test/_doc -{ "@timestamp": "2019-02-26T22:38:39.000Z", "message": "Hello ECS World", "host": { "ip": "10.42.42.42"} } +# index a document +PUT try-ecs-test +GET try-ecs-test +POST try-ecs-test/_doc +{ "@timestamp": "2020-10-26T22:38:39.000Z", "message": "Hello ECS World", "host": { "ip": "10.42.42.42"} } # enjoy -GET ecs-test/_search +GET try-ecs-test/_search { "query": { "term": { "host.ip": "10.0.0.0/8" } } } ``` diff --git a/scripts/generators/es_template.py b/scripts/generators/es_template.py index 9fed37ee05..13498cef9d 100644 --- a/scripts/generators/es_template.py +++ b/scripts/generators/es_template.py @@ -109,7 +109,7 @@ def save_json(file, data): def default_template_settings(): return { - "index_patterns": ["ecs-*"], + "index_patterns": ["try-ecs-*"], "order": 1, "settings": { "index": { From ec19b97fede82b3c9090a1edb925b5182f4fc666 Mon Sep 17 00:00:00 2001 From: EamonnTP Date: Wed, 4 Nov 2020 16:43:58 +0000 Subject: [PATCH 32/45] Prepare link to Logs docs changing with the 7.10 release in "products-solutions" page (#1074) --- docs/products-solutions.asciidoc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/products-solutions.asciidoc b/docs/products-solutions.asciidoc index a8fca573cd..945653779f 100644 --- a/docs/products-solutions.asciidoc +++ b/docs/products-solutions.asciidoc @@ -9,10 +9,14 @@ The following Elastic products support ECS out of the box, as of version 7.0: ** {security-guide}/siem-field-reference.html[Elastic Security Field Reference] - a list of ECS fields used in the SIEM app * https://www.elastic.co/products/endpoint-security[Elastic Endpoint Security Server] -* {logs-guide}/logs-app-overview.html[Logs Monitoring] +ifeval::["{branch}"=="7.9"] +* {logs-guide}/logs-app-overview.html[Log Monitoring] +endif::[] +ifeval::["{branch}"!="7.9"] +* {observability-guide}/monitor-logs.html[Log Monitoring] +endif::[] * Log formatters that support ECS out of the box for various languages can be found https://github.com/elastic/ecs-logging/blob/master/README.md[here]. // TODO Insert community & partner solutions here - From 9008a543e94776908a355a1fc0bba5719abafabf Mon Sep 17 00:00:00 2001 From: EamonnTP Date: Wed, 4 Nov 2020 16:47:28 +0000 Subject: [PATCH 33/45] Prepare link to Logs docs changing with the 7.10 release in "getting-started" (#1073) --- docs/using-getting-started.asciidoc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/docs/using-getting-started.asciidoc b/docs/using-getting-started.asciidoc index 8e322d7428..c81521a783 100644 --- a/docs/using-getting-started.asciidoc +++ b/docs/using-getting-started.asciidoc @@ -285,5 +285,10 @@ Here are some examples of additional fields processed by metadata or parser proc We've covered at a high level how to map your events to ECS. Now if you'd like your events to render well in the Elastic solutions, check out the reference guides below to learn more about each: -* {logs-guide}/logs-fields-reference.html[Logs Monitoring Field Reference] +ifeval::["{branch}"=="7.9"] +* {logs-guide}/logs-fields-reference.html[Log Monitoring Field Reference] +endif::[] +ifeval::["{branch}"!="7.9"] +* {observability-guide}/logs-app-fields.html[Log Monitoring Field Reference] +endif::[] * {security-guide}/siem-field-reference.html[Elastic Security Field Reference] From cba2dfa5b7e093b6c4823f6b4d3f0564640e680b Mon Sep 17 00:00:00 2001 From: shimonmodi Date: Mon, 9 Nov 2020 12:54:51 -0800 Subject: [PATCH 34/45] [RFC] Cyber Threat Intelligence Fields Stage 1 (#1037) --- rfcs/text/0008-threat-intel.md | 89 ++++++++++++++++++++++++++++------ 1 file changed, 75 insertions(+), 14 deletions(-) diff --git a/rfcs/text/0008-threat-intel.md b/rfcs/text/0008-threat-intel.md index 1e12232415..90b0584459 100644 --- a/rfcs/text/0008-threat-intel.md +++ b/rfcs/text/0008-threat-intel.md @@ -1,7 +1,7 @@ # 0008: Cyber Threat Intelligence Fields -- Stage: **0 (strawperson)** +- Stage: **1 (proposal)** - Date: **2020-10-15** Elastic Security Solution will be adding the capability to ingest, process and utilize threat intelligence information for increasing detection coverage and helping analysts making quicker investigation decisions. Threat intelligence can be collected from a number of sources with a variety of structured and semi-structured data representations. This makes threat intelligence an ideal candidate for ECS mappings. Threat intelligence data will require ECS mappings to normalize it and make it usable in our security solution. This RFC is focused on identifying new field sets and values that need to be created for threat intelligence data. Existing ECS field reuse will be prioritized where possible. If new fields are required we will utilize [STIX Cyber Observable data model](https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_mlbmudhl16lr) as guidance. @@ -21,6 +21,46 @@ Stage 0: Provide a high level summary of the premise of these changes. Briefly d Stage 1: Describe at a high level how this change affects fields. Which fieldsets will be impacted? How many fields overall? Are we primarily adding fields, removing fields, or changing existing fields? The goal here is to understand the fundamental technical implications and likely extent of these changes. ~2-5 sentences. --> +### Proposed New Fields for Threat fieldset + + * threat.time_first_seen + _The date and time when intelligence souce first reported sighting this indicator._ + * threat.time_last_seen + _The date and time when intelligence source last reported sighting this indicator._ + * threat.sightings + _Number of times this indicator was observed conducting threat activity._ + * threat.type + _Type of indicator as reprsented by Cyber Observable in STIX 2.0_ + * threat.description + _Describes the type of action conducted by the threat._ + * threat.tlp + _Traffic Light Protocol, which dictates sharing policies_ + * threat.classification + _Describes type of threat delivery (Hacktool etc.) and family name. + * threat.scanner_stats + _Count of Anti virus/EDR that successfully detected malicious file or URL. Sources like VirusTotal, Reversing Labs often provide these statistics._ + +### Proposed New Values + + * event.kind:enrichment _Propose adding this value to capture outcome of this event. It could also appy to other types of contextual data such as directory services, IPAM data, asset lists._ + * event.category:threat _Proposed threat.type field would be a subcategory for this value of event.category_ + * event.type:indicator _Proposed value represents type of threat information. In future this could be extended to other STIX 2.0 Standard Data Objects like Actor, Infrastucture etc._ + +### Existing ECS Fields For Nested Use in Threat.* + + * file.* + * file.hash.* + * url.* + * user.* + * registry.* + * as.* + * host.* + * network.* + * x509.* + * pe.* + * source.* + * destination.* + @@ -35,12 +75,41 @@ Stage 3: Add or update all remaining field definitions. The list should now be e Stage 1: Describe at a high-level how these field changes will be used in practice. Real world examples are encouraged. The goal here is to understand how people would leverage these fields to gain insights or solve problems. ~1-3 paragraphs. --> +The additions to threat.* fields and nested use will be used to represent data collected threat intelligence sources. A new rule type Indicator match will be introduced in 7.10 and ECS threat fields will enable a new category of detection alerts that matches incoming log and event data against threat intelligence sources and generates an alert. Additionally in the future we will be able to enrich events and alerts with context from threat intelligence to assist analysts in their investigative workflows. + ## Source data +There are many sources of threat intelligence including open source, closed source and membership based ISAC's. Depending on the source the level of details can vary from atomic indicators of compromise (IoC) to higher order context around threat tactics, infrastructure and motivations. Generally freely available (open source) intelligence sources will provide details more focused on IoC's and commercial intelligence services will provide higher order details. + +These sources typically provide intelligence that can be downloaded through REST API or in some cases downloadable CSV's or text files. These intelligence sources will update their data repositories at varying intervals. + +Some examples of open source intelligence are: + * [Abuse.ch Feodo Tracker](https://feodotracker.abuse.ch/downloads/ipblocklist.csv) - see below for sample data + * [Phish Tank](https://www.phishtank.com/) + +Some examples of commercial intelligence include: + * [Anomali ThreatStream](https://www.anomali.com/products/threatstream) + * [Virus Total](https://www.virustotal.com/gui/intelligence-overview) + * [Domain Tools](https://www.domaintools.com/products/api-integration/) + +#### Abuse.ch Feodo Tracker + +``` +# Firstseen,DstIP,DstPort,LastOnline,Malware +2020-10-29 19:16:38,181.120.29.49,80,2020-11-02,Heodo +2020-10-29 19:16:35,190.45.24.210,80,2020-11-02,Heodo +2020-10-29 19:16:32,109.242.153.9,80,2020-11-02,Heodo +2020-10-29 19:16:28,169.1.39.242,80,2020-11-02,Heodo +2020-10-29 19:14:24,201.171.244.130,80,2020-11-02,Heodo +2020-10-29 19:14:20,64.207.182.168,8080,2020-11-02,Heodo +2020-10-29 19:14:19,173.173.254.105,80,2020-11-02,Heodo +2020-10-29 19:14:16,153.204.122.254,80,2020-10-30,Heodo +2020-10-29 19:14:13,201.163.74.203,80,2020-11-02,Heodo +``` @@ -64,6 +133,7 @@ The goal here is to research and understand the impact of these changes on users +There is a proposal to nest all IoC fields under `threat.ioc.*` instead of the current `threat.* structure.` This would make it consistent with taxonomy structure for `threat.tactic.*` and `threat.techinique.*` . This needs to be resovled in Stage 2 of the RFC process. +* @shimonmodi | author +* @peasead | subject matter expert +* @MikePaquette | subject matter expert ## References @@ -112,6 +172,7 @@ e.g.: * Stage 0: https://github.com/elastic/ecs/pull/986 +* Stage 1: https://github.com/elastic/ecs/pull/1037 - Stage: **1 (proposal)** -- Date: **2020-10-15** +- Date: **2020-11-09** Elastic Security Solution will be adding the capability to ingest, process and utilize threat intelligence information for increasing detection coverage and helping analysts making quicker investigation decisions. Threat intelligence can be collected from a number of sources with a variety of structured and semi-structured data representations. This makes threat intelligence an ideal candidate for ECS mappings. Threat intelligence data will require ECS mappings to normalize it and make it usable in our security solution. This RFC is focused on identifying new field sets and values that need to be created for threat intelligence data. Existing ECS field reuse will be prioritized where possible. If new fields are required we will utilize [STIX Cyber Observable data model](https://docs.oasis-open.org/cti/stix/v2.1/cs01/stix-v2.1-cs01.html#_mlbmudhl16lr) as guidance. @@ -39,14 +39,14 @@ Stage 1: Describe at a high level how this change affects fields. Which fieldset _Describes type of threat delivery (Hacktool etc.) and family name. * threat.scanner_stats _Count of Anti virus/EDR that successfully detected malicious file or URL. Sources like VirusTotal, Reversing Labs often provide these statistics._ - + ### Proposed New Values * event.kind:enrichment _Propose adding this value to capture outcome of this event. It could also appy to other types of contextual data such as directory services, IPAM data, asset lists._ * event.category:threat _Proposed threat.type field would be a subcategory for this value of event.category_ * event.type:indicator _Proposed value represents type of threat information. In future this could be extended to other STIX 2.0 Standard Data Objects like Actor, Infrastucture etc._ -### Existing ECS Fields For Nested Use in Threat.* +### Existing ECS Fields For Nested Use in Threat.* * file.* * file.hash.* @@ -75,7 +75,7 @@ Stage 3: Add or update all remaining field definitions. The list should now be e Stage 1: Describe at a high-level how these field changes will be used in practice. Real world examples are encouraged. The goal here is to understand how people would leverage these fields to gain insights or solve problems. ~1-3 paragraphs. --> -The additions to threat.* fields and nested use will be used to represent data collected threat intelligence sources. A new rule type Indicator match will be introduced in 7.10 and ECS threat fields will enable a new category of detection alerts that matches incoming log and event data against threat intelligence sources and generates an alert. Additionally in the future we will be able to enrich events and alerts with context from threat intelligence to assist analysts in their investigative workflows. +The additions to threat.* fields and nested use will be used to represent data collected threat intelligence sources. A new rule type Indicator match will be introduced in 7.10 and ECS threat fields will enable a new category of detection alerts that matches incoming log and event data against threat intelligence sources and generates an alert. Additionally in the future we will be able to enrich events and alerts with context from threat intelligence to assist analysts in their investigative workflows. ## Source data @@ -83,14 +83,14 @@ The additions to threat.* fields and nested use will be used to represent data c Stage 1: Provide a high-level description of example sources of data. This does not yet need to be a concrete example of a source document, but instead can simply describe a potential source (e.g. nginx access log). This will ultimately be fleshed out to include literal source examples in a future stage. The goal here is to identify practical sources for these fields in the real world. ~1-3 sentences or unordered list. --> -There are many sources of threat intelligence including open source, closed source and membership based ISAC's. Depending on the source the level of details can vary from atomic indicators of compromise (IoC) to higher order context around threat tactics, infrastructure and motivations. Generally freely available (open source) intelligence sources will provide details more focused on IoC's and commercial intelligence services will provide higher order details. +There are many sources of threat intelligence including open source, closed source and membership based ISAC's. Depending on the source the level of details can vary from atomic indicators of compromise (IoC) to higher order context around threat tactics, infrastructure and motivations. Generally freely available (open source) intelligence sources will provide details more focused on IoC's and commercial intelligence services will provide higher order details. -These sources typically provide intelligence that can be downloaded through REST API or in some cases downloadable CSV's or text files. These intelligence sources will update their data repositories at varying intervals. +These sources typically provide intelligence that can be downloaded through REST API or in some cases downloadable CSV's or text files. These intelligence sources will update their data repositories at varying intervals. Some examples of open source intelligence are: * [Abuse.ch Feodo Tracker](https://feodotracker.abuse.ch/downloads/ipblocklist.csv) - see below for sample data * [Phish Tank](https://www.phishtank.com/) - + Some examples of commercial intelligence include: * [Anomali ThreatStream](https://www.anomali.com/products/threatstream) * [Virus Total](https://www.virustotal.com/gui/intelligence-overview) @@ -173,6 +173,7 @@ The following are the people that consulted on the contents of this RFC. * Stage 0: https://github.com/elastic/ecs/pull/986 * Stage 1: https://github.com/elastic/ecs/pull/1037 + * Stage 1 correction: https://github.com/elastic/ecs/pull/1100 -- Stage: **2 (draft)** -- Date: **2020-10-02** +- Stage: **3 (candidate)** +- Date: **2020-11-10** Wildcard is a data type for Elasticsearch string fields being introduced in Elasticsearch 7.9. Wildcard optimizes performance for queries using wildcards (`*`) and regex, allowing users to perform `grep`-like searches without the limitations of the existing text[0] and keyword[1] types. +This RFC focuses on migrating a subset of existing ECS fields, all of which are currently using the `keyword` type, to `wildcard`. Any net new fields introduced into ECS and are well-suited are encouraged to use `wildcard` independently of this RFC. + ## Fields * [Introductory blog post for the wildcard type](https://www.elastic.co/blog/find-strings-within-strings-faster-with-the-new-elasticsearch-wildcard-field) +* [Wildcard field type in the Elasticsearch docs](elastic.co/guide/en/elasticsearch/reference/current/keyword.html#wildcard-field-type) * https://github.com/elastic/ecs/issues/570 * https://github.com/elastic/mechagodzilla/issues/2 * https://github.com/elastic/ecs/issues/105 @@ -498,3 +525,4 @@ The following are the people that consulted on the contents of this RFC. * Stage 0: https://github.com/elastic/ecs/pull/890 * Stage 1: https://github.com/elastic/ecs/pull/904 * Stage 2: https://github.com/elastic/ecs/pull/970 +* Stage 3: https://github.com/elastic/ecs/pull/1015 diff --git a/rfcs/text/0001/event.yml b/rfcs/text/0001/event.yml deleted file mode 100644 index 07daa3ac87..0000000000 --- a/rfcs/text/0001/event.yml +++ /dev/null @@ -1,5 +0,0 @@ ---- -- name: event - fields: - - name: original - type: wildcard diff --git a/rfcs/text/0001/process.yml b/rfcs/text/0001/process.yml index da492e4564..e759e97e86 100644 --- a/rfcs/text/0001/process.yml +++ b/rfcs/text/0001/process.yml @@ -7,6 +7,8 @@ type: wildcard - name: name type: wildcard + - name: thread.name + type: wildcard - name: title type: wildcard - name: working_directory From fad7fa814443174aea8de3b36b118bed9c1b37f5 Mon Sep 17 00:00:00 2001 From: Ron Cohen Date: Wed, 11 Nov 2020 17:26:53 +0100 Subject: [PATCH 40/45] [RFC] data_stream fields (#980) Co-authored-by: Mathieu Martin Co-authored-by: Eric Beahan --- rfcs/text/0009-data_stream-fields.md | 189 +++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 rfcs/text/0009-data_stream-fields.md diff --git a/rfcs/text/0009-data_stream-fields.md b/rfcs/text/0009-data_stream-fields.md new file mode 100644 index 0000000000..dff6a963bc --- /dev/null +++ b/rfcs/text/0009-data_stream-fields.md @@ -0,0 +1,189 @@ +# 0009: Data stream fields + + +- Stage: **1 (proposal)** +- Date: **2020-11-11** + +When introducing the new indexing strategy for Elastic Agent which uses data streams, we found that adding a few [constant_keyword](https://www.elastic.co/guide/en/elasticsearch/reference/master/keyword.html#constant-keyword-field-type) fields corresponding to the central components in the new indexing strategy would be advantageous. + + + + + + +## Fields + + + +This RFC proposes to introduce a new fieldset called "data_stream". The fieldset consists of the following fields: +Field | Mapping type | Description +----------|--------------|-------------- +data_stream.type | constant_keyword | An overarching type for the data stream. Currently allowed values include "logs", "metrics". We expect to also add "traces" and "synthetics" in the near future +data_stream.dataset | constant_keyword | The field can contain anything that makes sense to signify the source of the data. Examples include `nginx.access`, `prometheus`, `endpoint` etc. For data streams that otherwise fit, but that do not have dataset set we use the value "generic" for the dataset value. `event.dataset` should have the same value as `data_stream.dataset`. +data_stream.namespace | constant_keyword | A user defined namespace. Namespaces are useful to allow grouping of data. Many of our customers already organize their indices this way, and now we are providing this best practice as a default. Many people will use `default` as the value. + +In the new indexing strategy, the value of the data stream fields combine to the name of the actual data stream in the following manner `{data_stream.type}-{data_stream.dataset}-{data_stream.namespace}`. This means the fields can only contain characters that are valid as part of names of data streams. + +### Restrictions on values + +Due to the fact that the values of the `data_stream` fields make up the data stream name, the restrictions on data stream names also apply to values for the `data_stream` fields. As an example, they cannot include \, /, *, ?, ", <, >, |, ` `. Please see the Elasticsearch reference for [restrictions on index/data stream names](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html#indices-create-api-path-params). Here follows the _additional_ restrictions imposed on the data stream fields: + +**data_stream.type** + +`data_stream.type` is restricted to `logs` or `metrics` for now. + +Any future values for `data_stream.type` should also adhere to the following restrictions (these are derived from the Elasticsearch index restrictions): +* Must not contain `-` +* Must not start with `+` or `_` + +**data_stream.dataset** + +* Must not contain `-` +* No longer than 100 chars + +**data_stream.namespace** + +* No longer than 100 chars + + +### On the use of Constant Keyword fields + +The new indexing strategy results in users having many more indices than they used to. Elasticsearch is very good at searching for specific documents across indices, but for some common queries we can make it even better by using `constant_keyword` fields. For example, it's often the case that you'd want to find only documents that contain logs from a certain service or logs from a given namespace. For a query such as `data_stream.type: logs AND data_stream.namespace: billing-app` Elasticsearch can quickly determine that only a small subset of the indices are relevant to search through. + + + + +## Usage + + + +Data stream fields are already in use in Elastic Agent. Leveraging the data stream fields described here allow users to filter by a specific data type (logs, metrics etc.), dataset (nginx.access, prometheus) or namespace. The following are examples of common queries pertaining to specific datatypes, datasets or namespaces: + +* `data_stream.type: logs` +* `data_stream.dataset: nginx.access` +* `data_stream.type: logs AND data_stream.namespace: web-frontend` + +As previously described, fields mapped as `constant_keyword` allows Elasticsearch to drastically optimize queries involving those fields. See the [Elasticsearch documentation](https://www.elastic.co/guide/en/elasticsearch/reference/current/faster-filtering-with-constant-keyword.html) on `constant_keyword` for more information. + + +## Source data + + + +Today, Elastic Agent adds the data_stream fields in all documents ingested. It's also possible to use the fields in data from other data sources. Elasticsearch 7.9+ ships with built-in index template mappings which will ensure that documents indexed into data streams that match `logs-*-*` and `metrics-*-*` will get the fields mapped correctly to `constant_keyword` types. + +### Using data_stream fields with regular indices +`data_stream` fields only make sense when indexing into data streams. They should not to be used for regular indices. + + + + + + +## Scope of impact + +* We've described that `generic` is a valid value for `data_stream.dataset` in some cases. Since `event.dataset` should always have the same value, this will also apply to `event.dataset`. We should update the documentation on `event.dataset` to reflect this. +* Since `data_stream.dataset` and `event.dataset` should contain the same value, the restrictions imposed on `data_stream.dataset` might affect the `event.dataset` value. This means users may need to translate their custom dataset values (e.g. `event.dataset: firewall/config`) to an equivalent legal dataset, according to the character restrictions imposed by the use of the value in `data_stream.dataset`, for example `data_stream.dataset: firewall.config`. + + + + + +## Concerns + + +### Relation to event.* fields +Concerns have been raised about how these fields relate to the event fields. Specifically, `event.type`, `event.kind`, `event.category` etc. Specifically, `data_stream.type` seems closer to `event.kind` than `event.type`. There are other inconsistencies here and we didn't find a way to square this concern at the time. It was decided to move forward with the `data_stream` fields for now and consider them to be unrelated to the event fields. `event.dataset` and `data_stream.dataset`, however, should contain the same value. + + + + + + + +## Real-world implementations + + + +Elastic Agent already uses the data_stream fields. + +Additionally, as previously described, beginning in version 7.9, Elasticsearch ships with built-in index templates for data streams which will automatically ensure that data_stream fields get correctly mapped when the data stream name match `logs-*-*` and `metrics-*-*`. + + +## People + +The following are the people that consulted on the contents of this RFC. + +* @roncohen | author, sponsor +* @ruflin | subject matter expert + + + + + +## References + + + +* Elasticsearch documentation on the [constant_keyword mapping type](https://www.elastic.co/guide/en/elasticsearch/reference/master/keyword.html#constant-keyword-field-type) +* https://www.elastic.co/guide/en/elasticsearch/reference/current/faster-filtering-with-constant-keyword.html +* Previous discussion on [dataset fields](https://github.com/elastic/ecs/pull/845) +* Discussion on [field value restrictions](https://github.com/elastic/kibana/issues/75846) +* Restrictions on [index names](https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html) + + +### RFC Pull Requests + + + +* Stage 1: https://github.com/elastic/ecs/pull/980 + + From 6cbb5448edf921ed9b8b797bd8310003f109259a Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Wed, 11 Nov 2020 15:12:14 -0500 Subject: [PATCH 41/45] [RFC] Multiple users in an event, stage 3 PR (#1017) --- rfcs/text/0007-multiple-users.md | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/rfcs/text/0007-multiple-users.md b/rfcs/text/0007-multiple-users.md index 9403eecb0a..31e015e8b9 100644 --- a/rfcs/text/0007-multiple-users.md +++ b/rfcs/text/0007-multiple-users.md @@ -1,8 +1,8 @@ # 0007: Multiple users in an event -- Stage: **2 (proposal)** -- Date: **2020-10-02** +- Stage: **3 (candidate)** +- Date: **2020-11-11** Many log events refer to more than one user at the same time. Examples of this are remote logons as someone else, user management and privilege escalation. @@ -67,7 +67,7 @@ This can be seen in more detail on PR [ecs#869](https://github.com/elastic/ecs/p The examples below will only populate `user.name` and sometimes `user.id` inside the various `user` nestings, for readability. -However in implementations, otherwise noted all `user` fields that can reasonably +However in implementations, unless otherwise noted, all `user` fields that can reasonably be populated in each location should be populated. ### User fields at the Root of an Event @@ -636,14 +636,6 @@ and the assumed role in the `userIdentity`. This makes it easy to keep track of the real user at `user.*` and the escalated privileges at `user.effective.*` in all subsequent activity after privilege escalation. - - - - ## Scope of impact ### New fields for IAM @@ -671,12 +663,12 @@ These came up while working on this RFC; this is not guidance that was given in the past. Data sources that populate these fields will need to be revisited and adjusted accordingly. - +Please let us know before the next major ECS release if you disagree with this, and share how you're using them. ## Concerns @@ -686,11 +678,11 @@ In past discussions and recent research, we have not identified a clear purpose for the user fields nested at `host.user.*`. We are considering deprecating these fields with the intent to remove them completely. -Please let us know if you disagree with this, and share how you're using them. #### Resolution -No resolution yet. +They will be marked as deprecated starting with ECS 1.8, and will be removed in +the next ECS major release. ### Documenting the purpose of each usage of the user fields @@ -727,7 +719,7 @@ Stage 4: Identify at least one real-world, production-ready implementation that The following are the people that consulted on the contents of this RFC. * @webmat | author -* TBD | sponsor +* @jonathan-buttner | sponsor * @leehinman | subject matter expert * @janniten | subject matter expert * @willemdh | subject matter expert @@ -765,6 +757,7 @@ e.g.: * Stage 2: https://github.com/elastic/ecs/pull/914 * Stage 2 correction: https://github.com/elastic/ecs/pull/996 +* Stage 3: https://github.com/elastic/ecs/pull/1017 Note: This RFC was initially proposed via a PR that targeted stage 2, given the amount of discussion that has already has happened on this subject. From 42bb9c7c04446cf1581059ff2b6fb58e85249f81 Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Thu, 12 Nov 2020 14:10:47 -0600 Subject: [PATCH 42/45] Remove index parameter for wildcard fields (#1115) --- CHANGELOG.md | 2 +- experimental/generated/beats/fields.ecs.yml | 1 - experimental/generated/ecs/ecs_flat.yml | 1 - experimental/generated/ecs/ecs_nested.yml | 1 - schemas/README.md | 5 +++-- scripts/schema/cleaner.py | 3 +++ scripts/tests/unit/test_schema_cleaner.py | 4 ++++ 7 files changed, 11 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index edd614a6b0..c06a627c99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ All notable changes to this project will be documented in this file based on the * Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 * Added `configuration` as an allowed `event.category`. #963 * Added a new directory with experimental artifacts, which includes all changes - from RFCs that have reached stage 2. #993, #1053 + from RFCs that have reached stage 2. #993, #1053, #1115 #### Improvements diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml index 5352e2bb18..5b7158538e 100644 --- a/experimental/generated/beats/fields.ecs.yml +++ b/experimental/generated/beats/fields.ecs.yml @@ -1160,7 +1160,6 @@ norms: false default_field: false description: The stack trace of this error in plain text. - index: true - name: type level: extended type: wildcard diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml index 7a92b47716..3c14cf04a3 100644 --- a/experimental/generated/ecs/ecs_flat.yml +++ b/experimental/generated/ecs/ecs_flat.yml @@ -1599,7 +1599,6 @@ error.stack_trace: dashed_name: error-stack-trace description: The stack trace of this error in plain text. flat_name: error.stack_trace - index: true level: extended multi_fields: - flat_name: error.stack_trace.text diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index da428dae70..f7a2bc93ae 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -1971,7 +1971,6 @@ error: dashed_name: error-stack-trace description: The stack trace of this error in plain text. flat_name: error.stack_trace - index: true level: extended multi_fields: - flat_name: error.stack_trace.text diff --git a/schemas/README.md b/schemas/README.md index 88440c0354..39b18f4bd7 100644 --- a/schemas/README.md +++ b/schemas/README.md @@ -129,7 +129,8 @@ Supported keys to describe fields Example values that are composite types (array, object) should be quoted to avoid YAML interpretation in ECS-generated artifacts and other downstream projects depending on the schema. - multi\_fields (optional): Specify additional ways to index the field. -- index (optional): If `False`, means field is not indexed (overrides type) +- index (optional): If `False`, means field is not indexed (overrides type). This parameter has no effect + on a `wildcard` field. - format: Field format that can be used in a Kibana index template. - normalize: Normalization steps that should be applied at ingestion time. Supported values: - array: the content of the field should be an array (even when there's only one value). @@ -151,7 +152,7 @@ Supported keys to describe expected values for a field Optionally, entries in this list can specify 'expected\_event\_types'. - expected\_event\_types: list of expected "event.type" values to use in association with that category. - + Supported keys when using the [alias field type](https://www.elastic.co/guide/en/elasticsearch/reference/current/alias.html) ```YAML diff --git a/scripts/schema/cleaner.py b/scripts/schema/cleaner.py index ab3acfcaeb..185d0abedc 100644 --- a/scripts/schema/cleaner.py +++ b/scripts/schema/cleaner.py @@ -144,6 +144,9 @@ def field_or_multi_field_datatype_defaults(field_details): field_details.setdefault('ignore_above', 1024) if field_details['type'] == 'text': field_details.setdefault('norms', False) + # wildcard needs the index param stripped + if field_details['type'] == 'wildcard': + field_details.pop('index', None) if 'index' in field_details and not field_details['index']: field_details.setdefault('doc_values', False) diff --git a/scripts/tests/unit/test_schema_cleaner.py b/scripts/tests/unit/test_schema_cleaner.py index 13f78c4e91..bc3dbdc621 100644 --- a/scripts/tests/unit/test_schema_cleaner.py +++ b/scripts/tests/unit/test_schema_cleaner.py @@ -223,6 +223,10 @@ def test_field_defaults(self): cleaner.field_defaults({'field_details': field_details}) self.assertEqual(field_details['doc_values'], False) + field_details = {**field_min_details, **{'type': 'wildcard', 'index': True}} + cleaner.field_defaults({'field_details': field_details}) + self.assertNotIn('index', field_details) + def test_field_defaults_dont_override(self): field_details = { 'description': 'description', From 881da082d14df17a7ff2df7a52a1ffdeee7154ae Mon Sep 17 00:00:00 2001 From: Eric Beahan Date: Thu, 12 Nov 2020 15:12:13 -0600 Subject: [PATCH 43/45] Add dns.answer object into experimental schema (#1118) --- CHANGELOG.md | 2 +- experimental/generated/beats/fields.ecs.yml | 13 +++++++++++++ experimental/generated/csv/fields.csv | 1 + experimental/generated/ecs/ecs_flat.yml | 19 +++++++++++++++++++ experimental/generated/ecs/ecs_nested.yml | 19 +++++++++++++++++++ .../generated/elasticsearch/7/template.json | 3 ++- experimental/schemas/dns.yml | 2 ++ 7 files changed, 57 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c06a627c99..c519e9418b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ All notable changes to this project will be documented in this file based on the * Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 * Added `configuration` as an allowed `event.category`. #963 * Added a new directory with experimental artifacts, which includes all changes - from RFCs that have reached stage 2. #993, #1053, #1115 + from RFCs that have reached stage 2. #993, #1053, #1115, #1118 #### Improvements diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml index 5b7158538e..939826cfe3 100644 --- a/experimental/generated/beats/fields.ecs.yml +++ b/experimental/generated/beats/fields.ecs.yml @@ -967,6 +967,19 @@ (`dns.type:answer`).' type: group fields: + - name: answers + level: extended + type: object + description: 'An array containing an object for each answer section returned + by the server. + + The main keys that should be present in these objects are defined by ECS. + Records that have more information may contain more keys than what ECS defines. + + Not all DNS data sources give all details about DNS answers. At minimum, answer + objects must contain the `data` key. If more information is available, map + as much of it to ECS as possible, and add any additional fields to the answer + objects as custom fields.' - name: answers.class level: extended type: keyword diff --git a/experimental/generated/csv/fields.csv b/experimental/generated/csv/fields.csv index 67053f2d9c..705a2f55d0 100644 --- a/experimental/generated/csv/fields.csv +++ b/experimental/generated/csv/fields.csv @@ -113,6 +113,7 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description 2.0.0-dev,true,dll,dll.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. 2.0.0-dev,true,dll,dll.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." 2.0.0-dev,true,dll,dll.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev,true,dns,dns.answers,object,extended,array,,Array of DNS answers. 2.0.0-dev,true,dns,dns.answers.class,keyword,extended,,IN,The class of DNS data contained in this resource record. 2.0.0-dev,true,dns,dns.answers.data,wildcard,extended,,10.10.10.10,The data describing the resource. 2.0.0-dev,true,dns,dns.answers.name,keyword,extended,,www.example.com,The domain name to which this resource record pertains. diff --git a/experimental/generated/ecs/ecs_flat.yml b/experimental/generated/ecs/ecs_flat.yml index 3c14cf04a3..e67d668343 100644 --- a/experimental/generated/ecs/ecs_flat.yml +++ b/experimental/generated/ecs/ecs_flat.yml @@ -1318,6 +1318,25 @@ dll.pe.product: original_fieldset: pe short: Internal product name of the file, provided at compile-time. type: keyword +dns.answers: + dashed_name: dns-answers + description: 'An array containing an object for each answer section returned by + the server. + + The main keys that should be present in these objects are defined by ECS. Records + that have more information may contain more keys than what ECS defines. + + Not all DNS data sources give all details about DNS answers. At minimum, answer + objects must contain the `data` key. If more information is available, map as + much of it to ECS as possible, and add any additional fields to the answer objects + as custom fields.' + flat_name: dns.answers + level: extended + name: answers + normalize: + - array + short: Array of DNS answers. + type: object dns.answers.class: dashed_name: dns-answers-class description: The class of DNS data contained in this resource record. diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index f7a2bc93ae..7b14063c20 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -1667,6 +1667,25 @@ dns: (`dns.type:query`) or they should represent a full exchange and contain the query details as well as all of the answers that were provided for this query (`dns.type:answer`).' fields: + dns.answers: + dashed_name: dns-answers + description: 'An array containing an object for each answer section returned + by the server. + + The main keys that should be present in these objects are defined by ECS. + Records that have more information may contain more keys than what ECS defines. + + Not all DNS data sources give all details about DNS answers. At minimum, answer + objects must contain the `data` key. If more information is available, map + as much of it to ECS as possible, and add any additional fields to the answer + objects as custom fields.' + flat_name: dns.answers + level: extended + name: answers + normalize: + - array + short: Array of DNS answers. + type: object dns.answers.class: dashed_name: dns-answers-class description: The class of DNS data contained in this resource record. diff --git a/experimental/generated/elasticsearch/7/template.json b/experimental/generated/elasticsearch/7/template.json index 6782a5638f..5844768b69 100644 --- a/experimental/generated/elasticsearch/7/template.json +++ b/experimental/generated/elasticsearch/7/template.json @@ -568,7 +568,8 @@ "ignore_above": 1024, "type": "keyword" } - } + }, + "type": "object" }, "header_flags": { "ignore_above": 1024, diff --git a/experimental/schemas/dns.yml b/experimental/schemas/dns.yml index 54f9ccd69a..466859c09f 100644 --- a/experimental/schemas/dns.yml +++ b/experimental/schemas/dns.yml @@ -3,5 +3,7 @@ fields: - name: question.name type: wildcard + - name: answers + type: object - name: answers.data type: wildcard From cc674c824de8d85ef3c39e1c6b83ccae32d2cae4 Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Thu, 12 Nov 2020 16:32:20 -0500 Subject: [PATCH 44/45] Clarify x509 definition guidance for network events with only one cert (#1114) --- CHANGELOG.md | 2 ++ code/go/ecs/x509.go | 13 +++++++------ docs/field-details.asciidoc | 6 +++++- experimental/generated/beats/fields.ecs.yml | 17 ++++++++++------- experimental/generated/ecs/ecs_nested.yml | 16 +++++++++------- generated/beats/fields.ecs.yml | 17 ++++++++++------- generated/ecs/ecs_nested.yml | 16 +++++++++------- schemas/x509.yml | 10 ++++++---- 8 files changed, 58 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c519e9418b..a3642fef99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ All notable changes to this project will be documented in this file based on the * Provided better guidance for mapping network events. #969 * Added the field `.subdomain` under `client`, `destination`, `server`, `source` and `url`, to match its presence at `dns.question.subdomain`. #981 +* Clarified ambiguity in guidance on how to use x509 fields for connections with + only one certificate. #1114 ### Tooling and Artifact Changes diff --git a/code/go/ecs/x509.go b/code/go/ecs/x509.go index 99d916a641..d3509dda98 100644 --- a/code/go/ecs/x509.go +++ b/code/go/ecs/x509.go @@ -26,12 +26,13 @@ import ( // This implements the common core fields for x509 certificates. This // information is likely logged with TLS sessions, digital signatures found in // executable binaries, S/MIME information in email bodies, or analysis of -// files on disk. When only a single certificate is logged in an event, it -// should be nested under `file`. When hashes of the DER-encoded certificate -// are available, the `hash` data set should be populated as well (e.g. -// `file.hash.sha256`). For events that contain certificate information for -// both sides of the connection, the x509 object could be nested under the -// respective side of the connection information (e.g. `tls.server.x509`). +// files on disk. +// When the certificate relates to a file, use the fields at `file.x509`. When +// hashes of the DER-encoded certificate are available, the `hash` data set +// should be populated as well (e.g. `file.hash.sha256`). +// Events that contain certificate information about network connections, +// should use the x509 fields under the relevant TLS fields: `tls.server.x509` +// and/or `tls.client.x509`. type X509 struct { // Version of x509 format. VersionNumber string `ecs:"version_number"` diff --git a/docs/field-details.asciidoc b/docs/field-details.asciidoc index ddcb587a24..25f01313b3 100644 --- a/docs/field-details.asciidoc +++ b/docs/field-details.asciidoc @@ -6957,7 +6957,11 @@ example: `Critical` [[ecs-x509]] === x509 Certificate Fields -This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that contain certificate information for both sides of the connection, the x509 object could be nested under the respective side of the connection information (e.g. `tls.server.x509`). +This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. + +When the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). + +Events that contain certificate information about network connections, should use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`. [discrete] ==== x509 Certificate Field Details diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml index 939826cfe3..bbf36a676d 100644 --- a/experimental/generated/beats/fields.ecs.yml +++ b/experimental/generated/beats/fields.ecs.yml @@ -5895,15 +5895,18 @@ - name: x509 title: x509 Certificate group: 2 - description: This implements the common core fields for x509 certificates. This + description: 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files - on disk. When only a single certificate is logged in an event, it should be - nested under `file`. When hashes of the DER-encoded certificate are available, - the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For - events that contain certificate information for both sides of the connection, - the x509 object could be nested under the respective side of the connection - information (e.g. `tls.server.x509`). + on disk. + + When the certificate relates to a file, use the fields at `file.x509`. When + hashes of the DER-encoded certificate are available, the `hash` data set should + be populated as well (e.g. `file.hash.sha256`). + + Events that contain certificate information about network connections, should + use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or + `tls.client.x509`.' type: group fields: - name: alternative_names diff --git a/experimental/generated/ecs/ecs_nested.yml b/experimental/generated/ecs/ecs_nested.yml index 7b14063c20..57b2385bee 100644 --- a/experimental/generated/ecs/ecs_nested.yml +++ b/experimental/generated/ecs/ecs_nested.yml @@ -10393,14 +10393,16 @@ vulnerability: title: Vulnerability type: group x509: - description: This implements the common core fields for x509 certificates. This + description: 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable - binaries, S/MIME information in email bodies, or analysis of files on disk. When - only a single certificate is logged in an event, it should be nested under `file`. - When hashes of the DER-encoded certificate are available, the `hash` data set - should be populated as well (e.g. `file.hash.sha256`). For events that contain - certificate information for both sides of the connection, the x509 object could - be nested under the respective side of the connection information (e.g. `tls.server.x509`). + binaries, S/MIME information in email bodies, or analysis of files on disk. + + When the certificate relates to a file, use the fields at `file.x509`. When hashes + of the DER-encoded certificate are available, the `hash` data set should be populated + as well (e.g. `file.hash.sha256`). + + Events that contain certificate information about network connections, should + use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`.' fields: x509.alternative_names: dashed_name: x509-alternative-names diff --git a/generated/beats/fields.ecs.yml b/generated/beats/fields.ecs.yml index b2d3e4ef5a..12a6db1f75 100644 --- a/generated/beats/fields.ecs.yml +++ b/generated/beats/fields.ecs.yml @@ -5765,15 +5765,18 @@ - name: x509 title: x509 Certificate group: 2 - description: This implements the common core fields for x509 certificates. This + description: 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files - on disk. When only a single certificate is logged in an event, it should be - nested under `file`. When hashes of the DER-encoded certificate are available, - the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For - events that contain certificate information for both sides of the connection, - the x509 object could be nested under the respective side of the connection - information (e.g. `tls.server.x509`). + on disk. + + When the certificate relates to a file, use the fields at `file.x509`. When + hashes of the DER-encoded certificate are available, the `hash` data set should + be populated as well (e.g. `file.hash.sha256`). + + Events that contain certificate information about network connections, should + use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or + `tls.client.x509`.' type: group fields: - name: alternative_names diff --git a/generated/ecs/ecs_nested.yml b/generated/ecs/ecs_nested.yml index ca9424eaed..f8b86c0ee0 100644 --- a/generated/ecs/ecs_nested.yml +++ b/generated/ecs/ecs_nested.yml @@ -10084,14 +10084,16 @@ vulnerability: title: Vulnerability type: group x509: - description: This implements the common core fields for x509 certificates. This + description: 'This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable - binaries, S/MIME information in email bodies, or analysis of files on disk. When - only a single certificate is logged in an event, it should be nested under `file`. - When hashes of the DER-encoded certificate are available, the `hash` data set - should be populated as well (e.g. `file.hash.sha256`). For events that contain - certificate information for both sides of the connection, the x509 object could - be nested under the respective side of the connection information (e.g. `tls.server.x509`). + binaries, S/MIME information in email bodies, or analysis of files on disk. + + When the certificate relates to a file, use the fields at `file.x509`. When hashes + of the DER-encoded certificate are available, the `hash` data set should be populated + as well (e.g. `file.hash.sha256`). + + Events that contain certificate information about network connections, should + use the x509 fields under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`.' fields: x509.alternative_names: dashed_name: x509-alternative-names diff --git a/schemas/x509.yml b/schemas/x509.yml index 06209dcbeb..124551c96c 100644 --- a/schemas/x509.yml +++ b/schemas/x509.yml @@ -6,10 +6,12 @@ description: > This implements the common core fields for x509 certificates. This information is likely logged with TLS sessions, digital signatures found in executable binaries, S/MIME information in email bodies, or analysis of files on disk. - When only a single certificate is logged in an event, it should be nested under `file`. When hashes of the DER-encoded - certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). For events that - contain certificate information for both sides of the connection, the x509 object could be nested under the respective - side of the connection information (e.g. `tls.server.x509`). + + When the certificate relates to a file, use the fields at `file.x509`. When hashes of the DER-encoded + certificate are available, the `hash` data set should be populated as well (e.g. `file.hash.sha256`). + + Events that contain certificate information about network connections, should use the x509 fields + under the relevant TLS fields: `tls.server.x509` and/or `tls.client.x509`. type: group reusable: top_level: false From 4ee5c21f4f3f0e76fe894951c57867e5c48088fe Mon Sep 17 00:00:00 2001 From: Mathieu Martin Date: Thu, 12 Nov 2020 16:38:15 -0500 Subject: [PATCH 45/45] Indicate when artifacts include experimental changes (#1117) --- CHANGELOG.md | 2 +- experimental/generated/beats/fields.ecs.yml | 2 +- experimental/generated/csv/fields.csv | 1440 ++++++++--------- .../generated/elasticsearch/7/template.json | 2 +- scripts/generator.py | 4 + scripts/schema/loader.py | 5 +- 6 files changed, 730 insertions(+), 725 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3642fef99..03cdf80570 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,7 +19,7 @@ All notable changes to this project will be documented in this file based on the * Added `threat.technique.subtechnique` to capture MITRE ATT&CK® subtechniques. #951 * Added `configuration` as an allowed `event.category`. #963 * Added a new directory with experimental artifacts, which includes all changes - from RFCs that have reached stage 2. #993, #1053, #1115, #1118 + from RFCs that have reached stage 2. #993, #1053, #1115, #1117, #1118 #### Improvements diff --git a/experimental/generated/beats/fields.ecs.yml b/experimental/generated/beats/fields.ecs.yml index bbf36a676d..185a64addd 100644 --- a/experimental/generated/beats/fields.ecs.yml +++ b/experimental/generated/beats/fields.ecs.yml @@ -1,5 +1,5 @@ # WARNING! Do not edit this file directly, it was generated by the ECS project, -# based on ECS version 2.0.0-dev. +# based on ECS version 2.0.0-dev+exp. # Please visit https://github.com/elastic/ecs to suggest changes to ECS fields. - key: ecs diff --git a/experimental/generated/csv/fields.csv b/experimental/generated/csv/fields.csv index 705a2f55d0..d92245dcaa 100644 --- a/experimental/generated/csv/fields.csv +++ b/experimental/generated/csv/fields.csv @@ -1,721 +1,721 @@ ECS_Version,Indexed,Field_Set,Field,Type,Level,Normalization,Example,Description -2.0.0-dev,true,base,@timestamp,date,core,,2016-05-23T08:05:34.853Z,Date/time when the event originated. -2.0.0-dev,true,base,labels,object,core,,"{""application"": ""foo-bar"", ""env"": ""production""}",Custom key/value pairs. -2.0.0-dev,true,base,message,text,core,,Hello World,Log message optimized for viewing in a log viewer. -2.0.0-dev,true,base,tags,keyword,core,array,"[""production"", ""env2""]",List of keywords used to tag each event. -2.0.0-dev,true,agent,agent.build.original,wildcard,core,,"metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]",Extended build information for the agent. -2.0.0-dev,true,agent,agent.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this agent. -2.0.0-dev,true,agent,agent.id,keyword,core,,8a4f500d,Unique identifier of this agent. -2.0.0-dev,true,agent,agent.name,keyword,core,,foo,Custom name of the agent. -2.0.0-dev,true,agent,agent.type,keyword,core,,filebeat,Type of the agent. -2.0.0-dev,true,agent,agent.version,keyword,core,,6.0.0-rc2,Version of the agent. -2.0.0-dev,true,client,client.address,keyword,extended,,,Client network address. -2.0.0-dev,true,client,client.as.number,long,extended,,15169,Unique number allocated to the autonomous system. -2.0.0-dev,true,client,client.as.organization.name,wildcard,extended,,Google LLC,Organization name. -2.0.0-dev,true,client,client.as.organization.name.text,text,extended,,Google LLC,Organization name. -2.0.0-dev,true,client,client.bytes,long,core,,184,Bytes sent from the client to the server. -2.0.0-dev,true,client,client.domain,wildcard,core,,,Client domain. -2.0.0-dev,true,client,client.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,client,client.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,client,client.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,client,client.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,client,client.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,client,client.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,client,client.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,client,client.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,client,client.ip,ip,core,,,IP address of the client. -2.0.0-dev,true,client,client.mac,keyword,core,,,MAC address of the client. -2.0.0-dev,true,client,client.nat.ip,ip,extended,,,Client NAT ip address -2.0.0-dev,true,client,client.nat.port,long,extended,,,Client NAT port -2.0.0-dev,true,client,client.packets,long,core,,12,Packets sent from the client to the server. -2.0.0-dev,true,client,client.port,long,core,,,Port of the client. -2.0.0-dev,true,client,client.registered_domain,wildcard,extended,,example.com,"The highest registered client domain, stripped of the subdomain." -2.0.0-dev,true,client,client.subdomain,keyword,extended,,east,The subdomain of the domain. -2.0.0-dev,true,client,client.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,client,client.user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,client,client.user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,client,client.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,client,client.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,client,client.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,client,client.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,client,client.user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,client,client.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,client,client.user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,client,client.user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,client,client.user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,client,client.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,cloud,cloud.account.id,keyword,extended,,666777888999,The cloud account or organization id. -2.0.0-dev,true,cloud,cloud.account.name,keyword,extended,,elastic-dev,The cloud account name. -2.0.0-dev,true,cloud,cloud.availability_zone,keyword,extended,,us-east-1c,Availability zone in which this host is running. -2.0.0-dev,true,cloud,cloud.instance.id,keyword,extended,,i-1234567890abcdef0,Instance ID of the host machine. -2.0.0-dev,true,cloud,cloud.instance.name,keyword,extended,,,Instance name of the host machine. -2.0.0-dev,true,cloud,cloud.machine.type,keyword,extended,,t2.medium,Machine type of the host machine. -2.0.0-dev,true,cloud,cloud.project.id,keyword,extended,,my-project,The cloud project id. -2.0.0-dev,true,cloud,cloud.project.name,keyword,extended,,my project,The cloud project name. -2.0.0-dev,true,cloud,cloud.provider,keyword,extended,,aws,Name of the cloud provider. -2.0.0-dev,true,cloud,cloud.region,keyword,extended,,us-east-1,Region in which this host is running. -2.0.0-dev,true,container,container.id,keyword,core,,,Unique container id. -2.0.0-dev,true,container,container.image.name,keyword,extended,,,Name of the image the container was built on. -2.0.0-dev,true,container,container.image.tag,keyword,extended,array,,Container image tags. -2.0.0-dev,true,container,container.labels,object,extended,,,Image labels. -2.0.0-dev,true,container,container.name,keyword,extended,,,Container name. -2.0.0-dev,true,container,container.runtime,keyword,extended,,docker,Runtime managing this container. -2.0.0-dev,true,destination,destination.address,keyword,extended,,,Destination network address. -2.0.0-dev,true,destination,destination.as.number,long,extended,,15169,Unique number allocated to the autonomous system. -2.0.0-dev,true,destination,destination.as.organization.name,wildcard,extended,,Google LLC,Organization name. -2.0.0-dev,true,destination,destination.as.organization.name.text,text,extended,,Google LLC,Organization name. -2.0.0-dev,true,destination,destination.bytes,long,core,,184,Bytes sent from the destination to the source. -2.0.0-dev,true,destination,destination.domain,wildcard,core,,,Destination domain. -2.0.0-dev,true,destination,destination.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,destination,destination.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,destination,destination.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,destination,destination.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,destination,destination.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,destination,destination.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,destination,destination.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,destination,destination.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,destination,destination.ip,ip,core,,,IP address of the destination. -2.0.0-dev,true,destination,destination.mac,keyword,core,,,MAC address of the destination. -2.0.0-dev,true,destination,destination.nat.ip,ip,extended,,,Destination NAT ip -2.0.0-dev,true,destination,destination.nat.port,long,extended,,,Destination NAT Port -2.0.0-dev,true,destination,destination.packets,long,core,,12,Packets sent from the destination to the source. -2.0.0-dev,true,destination,destination.port,long,core,,,Port of the destination. -2.0.0-dev,true,destination,destination.registered_domain,wildcard,extended,,example.com,"The highest registered destination domain, stripped of the subdomain." -2.0.0-dev,true,destination,destination.subdomain,keyword,extended,,east,The subdomain of the domain. -2.0.0-dev,true,destination,destination.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,destination,destination.user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,destination,destination.user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,destination,destination.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,destination,destination.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,destination,destination.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,destination,destination.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,destination,destination.user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,destination,destination.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,destination,destination.user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,destination,destination.user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,destination,destination.user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,destination,destination.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,dll,dll.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. -2.0.0-dev,true,dll,dll.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. -2.0.0-dev,true,dll,dll.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer -2.0.0-dev,true,dll,dll.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. -2.0.0-dev,true,dll,dll.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. -2.0.0-dev,true,dll,dll.hash.md5,keyword,extended,,,MD5 hash. -2.0.0-dev,true,dll,dll.hash.sha1,keyword,extended,,,SHA1 hash. -2.0.0-dev,true,dll,dll.hash.sha256,keyword,extended,,,SHA256 hash. -2.0.0-dev,true,dll,dll.hash.sha512,keyword,extended,,,SHA512 hash. -2.0.0-dev,true,dll,dll.name,keyword,core,,kernel32.dll,Name of the library. -2.0.0-dev,true,dll,dll.path,keyword,extended,,C:\Windows\System32\kernel32.dll,Full file path of the library. -2.0.0-dev,true,dll,dll.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. -2.0.0-dev,true,dll,dll.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." -2.0.0-dev,true,dll,dll.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." -2.0.0-dev,true,dll,dll.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. -2.0.0-dev,true,dll,dll.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. -2.0.0-dev,true,dll,dll.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." -2.0.0-dev,true,dll,dll.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." -2.0.0-dev,true,dns,dns.answers,object,extended,array,,Array of DNS answers. -2.0.0-dev,true,dns,dns.answers.class,keyword,extended,,IN,The class of DNS data contained in this resource record. -2.0.0-dev,true,dns,dns.answers.data,wildcard,extended,,10.10.10.10,The data describing the resource. -2.0.0-dev,true,dns,dns.answers.name,keyword,extended,,www.example.com,The domain name to which this resource record pertains. -2.0.0-dev,true,dns,dns.answers.ttl,long,extended,,180,The time interval in seconds that this resource record may be cached before it should be discarded. -2.0.0-dev,true,dns,dns.answers.type,keyword,extended,,CNAME,The type of data contained in this resource record. -2.0.0-dev,true,dns,dns.header_flags,keyword,extended,array,"[""RD"", ""RA""]",Array of DNS header flags. -2.0.0-dev,true,dns,dns.id,keyword,extended,,62111,The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. -2.0.0-dev,true,dns,dns.op_code,keyword,extended,,QUERY,The DNS operation code that specifies the kind of query in the message. -2.0.0-dev,true,dns,dns.question.class,keyword,extended,,IN,The class of records being queried. -2.0.0-dev,true,dns,dns.question.name,wildcard,extended,,www.example.com,The name being queried. -2.0.0-dev,true,dns,dns.question.registered_domain,keyword,extended,,example.com,"The highest registered domain, stripped of the subdomain." -2.0.0-dev,true,dns,dns.question.subdomain,keyword,extended,,www,The subdomain of the domain. -2.0.0-dev,true,dns,dns.question.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,dns,dns.question.type,keyword,extended,,AAAA,The type of record being queried. -2.0.0-dev,true,dns,dns.resolved_ip,ip,extended,array,"[""10.10.10.10"", ""10.10.10.11""]",Array containing all IPs seen in answers.data -2.0.0-dev,true,dns,dns.response_code,keyword,extended,,NOERROR,The DNS response code. -2.0.0-dev,true,dns,dns.type,keyword,extended,,answer,"The type of DNS event captured, query or answer." -2.0.0-dev,true,ecs,ecs.version,keyword,core,,1.0.0,ECS version this event conforms to. -2.0.0-dev,true,error,error.code,keyword,core,,,Error code describing the error. -2.0.0-dev,true,error,error.id,keyword,core,,,Unique identifier for the error. -2.0.0-dev,true,error,error.message,text,core,,,Error message. -2.0.0-dev,true,error,error.stack_trace,wildcard,extended,,,The stack trace of this error in plain text. -2.0.0-dev,true,error,error.stack_trace.text,text,extended,,,The stack trace of this error in plain text. -2.0.0-dev,true,error,error.type,wildcard,extended,,java.lang.NullPointerException,"The type of the error, for example the class name of the exception." -2.0.0-dev,true,event,event.action,keyword,core,,user-password-change,The action captured by the event. -2.0.0-dev,true,event,event.category,keyword,core,array,authentication,Event category. The second categorization field in the hierarchy. -2.0.0-dev,true,event,event.code,keyword,extended,,4648,Identification code for this event. -2.0.0-dev,true,event,event.created,date,core,,2016-05-23T08:05:34.857Z,Time when the event was first read by an agent or by your pipeline. -2.0.0-dev,true,event,event.dataset,keyword,core,,apache.access,Name of the dataset. -2.0.0-dev,true,event,event.duration,long,core,,,Duration of the event in nanoseconds. -2.0.0-dev,true,event,event.end,date,extended,,,event.end contains the date when the event ended or when the activity was last observed. -2.0.0-dev,true,event,event.hash,keyword,extended,,123456789012345678901234567890ABCD,Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. -2.0.0-dev,true,event,event.id,keyword,core,,8a4f500d,Unique ID to describe the event. -2.0.0-dev,true,event,event.ingested,date,core,,2016-05-23T08:05:35.101Z,Timestamp when an event arrived in the central data store. -2.0.0-dev,true,event,event.kind,keyword,core,,alert,The kind of the event. The highest categorization field in the hierarchy. -2.0.0-dev,true,event,event.module,keyword,core,,apache,Name of the module this data is coming from. -2.0.0-dev,false,event,event.original,keyword,core,,Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232,Raw text message of entire event. -2.0.0-dev,true,event,event.outcome,keyword,core,,success,The outcome of the event. The lowest level categorization field in the hierarchy. -2.0.0-dev,true,event,event.provider,keyword,extended,,kernel,Source of the event. -2.0.0-dev,true,event,event.reason,keyword,extended,,Terminated an unexpected process,"Reason why this event happened, according to the source" -2.0.0-dev,true,event,event.reference,keyword,extended,,https://system.example.com/event/#0001234,Event reference URL -2.0.0-dev,true,event,event.risk_score,float,core,,,Risk score or priority of the event (e.g. security solutions). Use your system's original value here. -2.0.0-dev,true,event,event.risk_score_norm,float,extended,,,Normalized risk score or priority of the event (0-100). -2.0.0-dev,true,event,event.sequence,long,extended,,,Sequence number of the event. -2.0.0-dev,true,event,event.severity,long,core,,7,Numeric severity of the event. -2.0.0-dev,true,event,event.start,date,extended,,,event.start contains the date when the event started or when the activity was first observed. -2.0.0-dev,true,event,event.timezone,keyword,extended,,,Event time zone. -2.0.0-dev,true,event,event.type,keyword,core,array,,Event type. The third categorization field in the hierarchy. -2.0.0-dev,true,event,event.url,keyword,extended,,https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe,Event investigation URL -2.0.0-dev,true,file,file.accessed,date,extended,,,Last time the file was accessed. -2.0.0-dev,true,file,file.attributes,keyword,extended,array,"[""readonly"", ""system""]",Array of file attributes. -2.0.0-dev,true,file,file.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. -2.0.0-dev,true,file,file.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. -2.0.0-dev,true,file,file.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer -2.0.0-dev,true,file,file.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. -2.0.0-dev,true,file,file.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. -2.0.0-dev,true,file,file.created,date,extended,,,File creation time. -2.0.0-dev,true,file,file.ctime,date,extended,,,Last time the file attributes or metadata changed. -2.0.0-dev,true,file,file.device,keyword,extended,,sda,Device that is the source of the file. -2.0.0-dev,true,file,file.directory,wildcard,extended,,/home/alice,Directory where the file is located. -2.0.0-dev,true,file,file.drive_letter,keyword,extended,,C,Drive letter where the file is located. -2.0.0-dev,true,file,file.extension,keyword,extended,,png,"File extension, excluding the leading dot." -2.0.0-dev,true,file,file.gid,keyword,extended,,1001,Primary group ID (GID) of the file. -2.0.0-dev,true,file,file.group,keyword,extended,,alice,Primary group name of the file. -2.0.0-dev,true,file,file.hash.md5,keyword,extended,,,MD5 hash. -2.0.0-dev,true,file,file.hash.sha1,keyword,extended,,,SHA1 hash. -2.0.0-dev,true,file,file.hash.sha256,keyword,extended,,,SHA256 hash. -2.0.0-dev,true,file,file.hash.sha512,keyword,extended,,,SHA512 hash. -2.0.0-dev,true,file,file.inode,keyword,extended,,256383,Inode representing the file in the filesystem. -2.0.0-dev,true,file,file.mime_type,keyword,extended,,,"Media type of file, document, or arrangement of bytes." -2.0.0-dev,true,file,file.mode,keyword,extended,,0640,Mode of the file in octal representation. -2.0.0-dev,true,file,file.mtime,date,extended,,,Last time the file content was modified. -2.0.0-dev,true,file,file.name,keyword,extended,,example.png,"Name of the file including the extension, without the directory." -2.0.0-dev,true,file,file.owner,keyword,extended,,alice,File owner's username. -2.0.0-dev,true,file,file.path,wildcard,extended,,/home/alice/example.png,"Full path to the file, including the file name." -2.0.0-dev,true,file,file.path.text,text,extended,,/home/alice/example.png,"Full path to the file, including the file name." -2.0.0-dev,true,file,file.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. -2.0.0-dev,true,file,file.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." -2.0.0-dev,true,file,file.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." -2.0.0-dev,true,file,file.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. -2.0.0-dev,true,file,file.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. -2.0.0-dev,true,file,file.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." -2.0.0-dev,true,file,file.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." -2.0.0-dev,true,file,file.size,long,extended,,16384,File size in bytes. -2.0.0-dev,true,file,file.target_path,wildcard,extended,,,Target path for symlinks. -2.0.0-dev,true,file,file.target_path.text,text,extended,,,Target path for symlinks. -2.0.0-dev,true,file,file.type,keyword,extended,,file,"File type (file, dir, or symlink)." -2.0.0-dev,true,file,file.uid,keyword,extended,,1001,The user ID (UID) or security identifier (SID) of the file owner. -2.0.0-dev,true,file,file.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). -2.0.0-dev,true,file,file.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. -2.0.0-dev,true,file,file.x509.issuer.country,keyword,extended,array,US,List of country (C) codes -2.0.0-dev,true,file,file.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. -2.0.0-dev,true,file,file.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) -2.0.0-dev,true,file,file.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. -2.0.0-dev,true,file,file.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. -2.0.0-dev,true,file,file.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,file,file.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. -2.0.0-dev,true,file,file.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. -2.0.0-dev,true,file,file.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. -2.0.0-dev,true,file,file.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. -2.0.0-dev,false,file,file.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. -2.0.0-dev,true,file,file.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. -2.0.0-dev,true,file,file.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. -2.0.0-dev,true,file,file.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. -2.0.0-dev,true,file,file.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. -2.0.0-dev,true,file,file.x509.subject.country,keyword,extended,array,US,List of country (C) code -2.0.0-dev,true,file,file.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. -2.0.0-dev,true,file,file.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) -2.0.0-dev,true,file,file.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. -2.0.0-dev,true,file,file.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. -2.0.0-dev,true,file,file.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,file,file.x509.version_number,keyword,extended,,3,Version of x509 format. -2.0.0-dev,true,group,group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,group,group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,group,group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,host,host.architecture,keyword,core,,x86_64,Operating system architecture. -2.0.0-dev,true,host,host.domain,keyword,extended,,CONTOSO,Name of the directory the group is a member of. -2.0.0-dev,true,host,host.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,host,host.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,host,host.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,host,host.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,host,host.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,host,host.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,host,host.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,host,host.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,host,host.hostname,wildcard,core,,,Hostname of the host. -2.0.0-dev,true,host,host.id,keyword,core,,,Unique host id. -2.0.0-dev,true,host,host.ip,ip,core,array,,Host ip addresses. -2.0.0-dev,true,host,host.mac,keyword,core,array,,Host mac addresses. -2.0.0-dev,true,host,host.name,keyword,core,,,Name of the host. -2.0.0-dev,true,host,host.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." -2.0.0-dev,true,host,host.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,host,host.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,host,host.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. -2.0.0-dev,true,host,host.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,host,host.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,host,host.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." -2.0.0-dev,true,host,host.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. -2.0.0-dev,true,host,host.type,keyword,core,,,Type of host. -2.0.0-dev,true,host,host.uptime,long,extended,,1325,Seconds the host has been up. -2.0.0-dev,true,host,host.user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,host,host.user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,host,host.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,host,host.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,host,host.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,host,host.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,host,host.user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,host,host.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,host,host.user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,host,host.user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,host,host.user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,host,host.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,http,http.request.body.bytes,long,extended,,887,Size in bytes of the request body. -2.0.0-dev,true,http,http.request.body.content,wildcard,extended,,Hello world,The full HTTP request body. -2.0.0-dev,true,http,http.request.body.content.text,text,extended,,Hello world,The full HTTP request body. -2.0.0-dev,true,http,http.request.bytes,long,extended,,1437,Total size in bytes of the request (body and headers). -2.0.0-dev,true,http,http.request.method,keyword,extended,,"GET, POST, PUT, PoST",HTTP request method. -2.0.0-dev,true,http,http.request.mime_type,keyword,extended,,image/gif,Mime type of the body of the request. -2.0.0-dev,true,http,http.request.referrer,wildcard,extended,,https://blog.example.com/,Referrer for this HTTP request. -2.0.0-dev,true,http,http.response.body.bytes,long,extended,,887,Size in bytes of the response body. -2.0.0-dev,true,http,http.response.body.content,wildcard,extended,,Hello world,The full HTTP response body. -2.0.0-dev,true,http,http.response.body.content.text,text,extended,,Hello world,The full HTTP response body. -2.0.0-dev,true,http,http.response.bytes,long,extended,,1437,Total size in bytes of the response (body and headers). -2.0.0-dev,true,http,http.response.mime_type,keyword,extended,,image/gif,Mime type of the body of the response. -2.0.0-dev,true,http,http.response.status_code,long,extended,,404,HTTP response status code. -2.0.0-dev,true,http,http.version,keyword,extended,,1.1,HTTP version. -2.0.0-dev,true,log,log.file.path,wildcard,extended,,/var/log/fun-times.log,Full path to the log file this event came from. -2.0.0-dev,true,log,log.level,keyword,core,,error,Log level of the log event. -2.0.0-dev,true,log,log.logger,wildcard,core,,org.elasticsearch.bootstrap.Bootstrap,Name of the logger. -2.0.0-dev,true,log,log.origin.file.line,integer,extended,,42,The line number of the file which originated the log event. -2.0.0-dev,true,log,log.origin.file.name,keyword,extended,,Bootstrap.java,The code file which originated the log event. -2.0.0-dev,true,log,log.origin.function,keyword,extended,,init,The function which originated the log event. -2.0.0-dev,false,log,log.original,keyword,core,,Sep 19 08:26:10 localhost My log,"Original log message with light interpretation only (encoding, newlines)." -2.0.0-dev,true,log,log.syslog,object,extended,,,Syslog metadata -2.0.0-dev,true,log,log.syslog.facility.code,long,extended,,23,Syslog numeric facility of the event. -2.0.0-dev,true,log,log.syslog.facility.name,keyword,extended,,local7,Syslog text-based facility of the event. -2.0.0-dev,true,log,log.syslog.priority,long,extended,,135,Syslog priority of the event. -2.0.0-dev,true,log,log.syslog.severity.code,long,extended,,3,Syslog numeric severity of the event. -2.0.0-dev,true,log,log.syslog.severity.name,keyword,extended,,Error,Syslog text-based severity of the event. -2.0.0-dev,true,network,network.application,keyword,extended,,aim,Application level protocol name. -2.0.0-dev,true,network,network.bytes,long,core,,368,Total bytes transferred in both directions. -2.0.0-dev,true,network,network.community_id,keyword,extended,,1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=,A hash of source and destination IPs and ports. -2.0.0-dev,true,network,network.direction,keyword,core,,inbound,Direction of the network traffic. -2.0.0-dev,true,network,network.forwarded_ip,ip,core,,192.1.1.2,Host IP address when the source IP address is the proxy. -2.0.0-dev,true,network,network.iana_number,keyword,extended,,6,IANA Protocol Number. -2.0.0-dev,true,network,network.inner,object,extended,,,Inner VLAN tag information -2.0.0-dev,true,network,network.inner.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. -2.0.0-dev,true,network,network.inner.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. -2.0.0-dev,true,network,network.name,keyword,extended,,Guest Wifi,Name given by operators to sections of their network. -2.0.0-dev,true,network,network.packets,long,core,,24,Total packets transferred in both directions. -2.0.0-dev,true,network,network.protocol,keyword,core,,http,L7 Network protocol name. -2.0.0-dev,true,network,network.transport,keyword,core,,tcp,Protocol Name corresponding to the field `iana_number`. -2.0.0-dev,true,network,network.type,keyword,core,,ipv4,"In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc" -2.0.0-dev,true,network,network.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. -2.0.0-dev,true,network,network.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. -2.0.0-dev,true,observer,observer.egress,object,extended,,,Object field for egress information -2.0.0-dev,true,observer,observer.egress.interface.alias,keyword,extended,,outside,Interface alias -2.0.0-dev,true,observer,observer.egress.interface.id,keyword,extended,,10,Interface ID -2.0.0-dev,true,observer,observer.egress.interface.name,keyword,extended,,eth0,Interface name -2.0.0-dev,true,observer,observer.egress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. -2.0.0-dev,true,observer,observer.egress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. -2.0.0-dev,true,observer,observer.egress.zone,keyword,extended,,Public_Internet,Observer Egress zone -2.0.0-dev,true,observer,observer.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,observer,observer.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,observer,observer.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,observer,observer.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,observer,observer.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,observer,observer.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,observer,observer.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,observer,observer.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,observer,observer.hostname,keyword,core,,,Hostname of the observer. -2.0.0-dev,true,observer,observer.ingress,object,extended,,,Object field for ingress information -2.0.0-dev,true,observer,observer.ingress.interface.alias,keyword,extended,,outside,Interface alias -2.0.0-dev,true,observer,observer.ingress.interface.id,keyword,extended,,10,Interface ID -2.0.0-dev,true,observer,observer.ingress.interface.name,keyword,extended,,eth0,Interface name -2.0.0-dev,true,observer,observer.ingress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. -2.0.0-dev,true,observer,observer.ingress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. -2.0.0-dev,true,observer,observer.ingress.zone,keyword,extended,,DMZ,Observer ingress zone -2.0.0-dev,true,observer,observer.ip,ip,core,array,,IP addresses of the observer. -2.0.0-dev,true,observer,observer.mac,keyword,core,array,,MAC addresses of the observer -2.0.0-dev,true,observer,observer.name,keyword,extended,,1_proxySG,Custom name of the observer. -2.0.0-dev,true,observer,observer.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." -2.0.0-dev,true,observer,observer.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,observer,observer.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,observer,observer.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. -2.0.0-dev,true,observer,observer.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,observer,observer.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,observer,observer.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." -2.0.0-dev,true,observer,observer.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. -2.0.0-dev,true,observer,observer.product,keyword,extended,,s200,The product name of the observer. -2.0.0-dev,true,observer,observer.serial_number,keyword,extended,,,Observer serial number. -2.0.0-dev,true,observer,observer.type,keyword,core,,firewall,The type of the observer the data is coming from. -2.0.0-dev,true,observer,observer.vendor,keyword,core,,Symantec,Vendor name of the observer. -2.0.0-dev,true,observer,observer.version,keyword,core,,,Observer version. -2.0.0-dev,true,organization,organization.id,keyword,extended,,,Unique identifier for the organization. -2.0.0-dev,true,organization,organization.name,wildcard,extended,,,Organization name. -2.0.0-dev,true,organization,organization.name.text,text,extended,,,Organization name. -2.0.0-dev,true,package,package.architecture,keyword,extended,,x86_64,Package architecture. -2.0.0-dev,true,package,package.build_version,keyword,extended,,36f4f7e89dd61b0988b12ee000b98966867710cd,Build version information -2.0.0-dev,true,package,package.checksum,keyword,extended,,68b329da9893e34099c7d8ad5cb9c940,Checksum of the installed package for verification. -2.0.0-dev,true,package,package.description,keyword,extended,,Open source programming language to build simple/reliable/efficient software.,Description of the package. -2.0.0-dev,true,package,package.install_scope,keyword,extended,,global,"Indicating how the package was installed, e.g. user-local, global." -2.0.0-dev,true,package,package.installed,date,extended,,,Time when package was installed. -2.0.0-dev,true,package,package.license,keyword,extended,,Apache License 2.0,Package license -2.0.0-dev,true,package,package.name,keyword,extended,,go,Package name -2.0.0-dev,true,package,package.path,keyword,extended,,/usr/local/Cellar/go/1.12.9/,Path where the package is installed. -2.0.0-dev,true,package,package.reference,keyword,extended,,https://golang.org,Package home page or reference URL -2.0.0-dev,true,package,package.size,long,extended,,62231,Package size in bytes. -2.0.0-dev,true,package,package.type,keyword,extended,,rpm,Package type -2.0.0-dev,true,package,package.version,keyword,extended,,1.12.9,Package version -2.0.0-dev,true,process,process.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. -2.0.0-dev,true,process,process.args_count,long,extended,,4,Length of the process.args array. -2.0.0-dev,true,process,process.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. -2.0.0-dev,true,process,process.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. -2.0.0-dev,true,process,process.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer -2.0.0-dev,true,process,process.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. -2.0.0-dev,true,process,process.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. -2.0.0-dev,true,process,process.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. -2.0.0-dev,true,process,process.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. -2.0.0-dev,true,process,process.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. -2.0.0-dev,true,process,process.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. -2.0.0-dev,true,process,process.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. -2.0.0-dev,true,process,process.exit_code,long,extended,,137,The exit code of the process. -2.0.0-dev,true,process,process.hash.md5,keyword,extended,,,MD5 hash. -2.0.0-dev,true,process,process.hash.sha1,keyword,extended,,,SHA1 hash. -2.0.0-dev,true,process,process.hash.sha256,keyword,extended,,,SHA256 hash. -2.0.0-dev,true,process,process.hash.sha512,keyword,extended,,,SHA512 hash. -2.0.0-dev,true,process,process.name,wildcard,extended,,ssh,Process name. -2.0.0-dev,true,process,process.name.text,text,extended,,ssh,Process name. -2.0.0-dev,true,process,process.parent.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. -2.0.0-dev,true,process,process.parent.args_count,long,extended,,4,Length of the process.args array. -2.0.0-dev,true,process,process.parent.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. -2.0.0-dev,true,process,process.parent.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. -2.0.0-dev,true,process,process.parent.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer -2.0.0-dev,true,process,process.parent.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. -2.0.0-dev,true,process,process.parent.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. -2.0.0-dev,true,process,process.parent.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. -2.0.0-dev,true,process,process.parent.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. -2.0.0-dev,true,process,process.parent.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. -2.0.0-dev,true,process,process.parent.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. -2.0.0-dev,true,process,process.parent.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. -2.0.0-dev,true,process,process.parent.exit_code,long,extended,,137,The exit code of the process. -2.0.0-dev,true,process,process.parent.hash.md5,keyword,extended,,,MD5 hash. -2.0.0-dev,true,process,process.parent.hash.sha1,keyword,extended,,,SHA1 hash. -2.0.0-dev,true,process,process.parent.hash.sha256,keyword,extended,,,SHA256 hash. -2.0.0-dev,true,process,process.parent.hash.sha512,keyword,extended,,,SHA512 hash. -2.0.0-dev,true,process,process.parent.name,wildcard,extended,,ssh,Process name. -2.0.0-dev,true,process,process.parent.name.text,text,extended,,ssh,Process name. -2.0.0-dev,true,process,process.parent.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. -2.0.0-dev,true,process,process.parent.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." -2.0.0-dev,true,process,process.parent.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." -2.0.0-dev,true,process,process.parent.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. -2.0.0-dev,true,process,process.parent.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. -2.0.0-dev,true,process,process.parent.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." -2.0.0-dev,true,process,process.parent.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." -2.0.0-dev,true,process,process.parent.pgid,long,extended,,,Identifier of the group of processes the process belongs to. -2.0.0-dev,true,process,process.parent.pid,long,core,,4242,Process id. -2.0.0-dev,true,process,process.parent.ppid,long,extended,,4241,Parent process' pid. -2.0.0-dev,true,process,process.parent.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. -2.0.0-dev,true,process,process.parent.thread.id,long,extended,,4242,Thread ID. -2.0.0-dev,true,process,process.parent.thread.name,wildcard,extended,,thread-0,Thread name. -2.0.0-dev,true,process,process.parent.title,wildcard,extended,,,Process title. -2.0.0-dev,true,process,process.parent.title.text,text,extended,,,Process title. -2.0.0-dev,true,process,process.parent.uptime,long,extended,,1325,Seconds the process has been up. -2.0.0-dev,true,process,process.parent.working_directory,wildcard,extended,,/home/alice,The working directory of the process. -2.0.0-dev,true,process,process.parent.working_directory.text,text,extended,,/home/alice,The working directory of the process. -2.0.0-dev,true,process,process.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. -2.0.0-dev,true,process,process.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." -2.0.0-dev,true,process,process.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." -2.0.0-dev,true,process,process.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. -2.0.0-dev,true,process,process.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. -2.0.0-dev,true,process,process.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." -2.0.0-dev,true,process,process.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." -2.0.0-dev,true,process,process.pgid,long,extended,,,Identifier of the group of processes the process belongs to. -2.0.0-dev,true,process,process.pid,long,core,,4242,Process id. -2.0.0-dev,true,process,process.ppid,long,extended,,4241,Parent process' pid. -2.0.0-dev,true,process,process.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. -2.0.0-dev,true,process,process.thread.id,long,extended,,4242,Thread ID. -2.0.0-dev,true,process,process.thread.name,wildcard,extended,,thread-0,Thread name. -2.0.0-dev,true,process,process.title,wildcard,extended,,,Process title. -2.0.0-dev,true,process,process.title.text,text,extended,,,Process title. -2.0.0-dev,true,process,process.uptime,long,extended,,1325,Seconds the process has been up. -2.0.0-dev,true,process,process.working_directory,wildcard,extended,,/home/alice,The working directory of the process. -2.0.0-dev,true,process,process.working_directory.text,text,extended,,/home/alice,The working directory of the process. -2.0.0-dev,true,registry,registry.data.bytes,keyword,extended,,ZQBuAC0AVQBTAAAAZQBuAAAAAAA=,Original bytes written with base64 encoding. -2.0.0-dev,true,registry,registry.data.strings,wildcard,core,array,"[""C:\rta\red_ttp\bin\myapp.exe""]",List of strings representing what was written to the registry. -2.0.0-dev,true,registry,registry.data.type,keyword,core,,REG_SZ,Standard registry type for encoding contents -2.0.0-dev,true,registry,registry.hive,keyword,core,,HKLM,Abbreviated name for the hive. -2.0.0-dev,true,registry,registry.key,wildcard,core,,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe,Hive-relative path of keys. -2.0.0-dev,true,registry,registry.path,wildcard,core,,HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger,"Full path, including hive, key and value" -2.0.0-dev,true,registry,registry.value,keyword,core,,Debugger,Name of the value written. -2.0.0-dev,true,related,related.hash,keyword,extended,array,,All the hashes seen on your event. -2.0.0-dev,true,related,related.hosts,keyword,extended,array,,All the host identifiers seen on your event. -2.0.0-dev,true,related,related.ip,ip,extended,array,,All of the IPs seen on your event. -2.0.0-dev,true,related,related.user,keyword,extended,array,,All the user names seen on your event. -2.0.0-dev,true,rule,rule.author,keyword,extended,array,"[""Star-Lord""]",Rule author -2.0.0-dev,true,rule,rule.category,keyword,extended,,Attempted Information Leak,Rule category -2.0.0-dev,true,rule,rule.description,keyword,extended,,Block requests to public DNS over HTTPS / TLS protocols,Rule description -2.0.0-dev,true,rule,rule.id,keyword,extended,,101,Rule ID -2.0.0-dev,true,rule,rule.license,keyword,extended,,Apache 2.0,Rule license -2.0.0-dev,true,rule,rule.name,keyword,extended,,BLOCK_DNS_over_TLS,Rule name -2.0.0-dev,true,rule,rule.reference,keyword,extended,,https://en.wikipedia.org/wiki/DNS_over_TLS,Rule reference URL -2.0.0-dev,true,rule,rule.ruleset,keyword,extended,,Standard_Protocol_Filters,Rule ruleset -2.0.0-dev,true,rule,rule.uuid,keyword,extended,,1100110011,Rule UUID -2.0.0-dev,true,rule,rule.version,keyword,extended,,1.1,Rule version -2.0.0-dev,true,server,server.address,keyword,extended,,,Server network address. -2.0.0-dev,true,server,server.as.number,long,extended,,15169,Unique number allocated to the autonomous system. -2.0.0-dev,true,server,server.as.organization.name,wildcard,extended,,Google LLC,Organization name. -2.0.0-dev,true,server,server.as.organization.name.text,text,extended,,Google LLC,Organization name. -2.0.0-dev,true,server,server.bytes,long,core,,184,Bytes sent from the server to the client. -2.0.0-dev,true,server,server.domain,wildcard,core,,,Server domain. -2.0.0-dev,true,server,server.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,server,server.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,server,server.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,server,server.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,server,server.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,server,server.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,server,server.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,server,server.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,server,server.ip,ip,core,,,IP address of the server. -2.0.0-dev,true,server,server.mac,keyword,core,,,MAC address of the server. -2.0.0-dev,true,server,server.nat.ip,ip,extended,,,Server NAT ip -2.0.0-dev,true,server,server.nat.port,long,extended,,,Server NAT port -2.0.0-dev,true,server,server.packets,long,core,,12,Packets sent from the server to the client. -2.0.0-dev,true,server,server.port,long,core,,,Port of the server. -2.0.0-dev,true,server,server.registered_domain,wildcard,extended,,example.com,"The highest registered server domain, stripped of the subdomain." -2.0.0-dev,true,server,server.subdomain,keyword,extended,,east,The subdomain of the domain. -2.0.0-dev,true,server,server.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,server,server.user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,server,server.user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,server,server.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,server,server.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,server,server.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,server,server.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,server,server.user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,server,server.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,server,server.user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,server,server.user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,server,server.user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,server,server.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,service,service.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this service. -2.0.0-dev,true,service,service.id,keyword,core,,d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6,Unique identifier of the running service. -2.0.0-dev,true,service,service.name,keyword,core,,elasticsearch-metrics,Name of the service. -2.0.0-dev,true,service,service.node.name,keyword,extended,,instance-0000000016,Name of the service node. -2.0.0-dev,true,service,service.state,keyword,core,,,Current state of the service. -2.0.0-dev,true,service,service.type,keyword,core,,elasticsearch,The type of the service. -2.0.0-dev,true,service,service.version,keyword,core,,3.2.4,Version of the service. -2.0.0-dev,true,source,source.address,keyword,extended,,,Source network address. -2.0.0-dev,true,source,source.as.number,long,extended,,15169,Unique number allocated to the autonomous system. -2.0.0-dev,true,source,source.as.organization.name,wildcard,extended,,Google LLC,Organization name. -2.0.0-dev,true,source,source.as.organization.name.text,text,extended,,Google LLC,Organization name. -2.0.0-dev,true,source,source.bytes,long,core,,184,Bytes sent from the source to the destination. -2.0.0-dev,true,source,source.domain,wildcard,core,,,Source domain. -2.0.0-dev,true,source,source.geo.city_name,keyword,core,,Montreal,City name. -2.0.0-dev,true,source,source.geo.continent_name,keyword,core,,North America,Name of the continent. -2.0.0-dev,true,source,source.geo.country_iso_code,keyword,core,,CA,Country ISO code. -2.0.0-dev,true,source,source.geo.country_name,keyword,core,,Canada,Country name. -2.0.0-dev,true,source,source.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. -2.0.0-dev,true,source,source.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. -2.0.0-dev,true,source,source.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. -2.0.0-dev,true,source,source.geo.region_name,keyword,core,,Quebec,Region name. -2.0.0-dev,true,source,source.ip,ip,core,,,IP address of the source. -2.0.0-dev,true,source,source.mac,keyword,core,,,MAC address of the source. -2.0.0-dev,true,source,source.nat.ip,ip,extended,,,Source NAT ip -2.0.0-dev,true,source,source.nat.port,long,extended,,,Source NAT port -2.0.0-dev,true,source,source.packets,long,core,,12,Packets sent from the source to the destination. -2.0.0-dev,true,source,source.port,long,core,,,Port of the source. -2.0.0-dev,true,source,source.registered_domain,wildcard,extended,,example.com,"The highest registered source domain, stripped of the subdomain." -2.0.0-dev,true,source,source.subdomain,keyword,extended,,east,The subdomain of the domain. -2.0.0-dev,true,source,source.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,source,source.user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,source,source.user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,source,source.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,source,source.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,source,source.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,source,source.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,source,source.user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,source,source.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,source,source.user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,source,source.user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,source,source.user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,source,source.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,span,span.id,keyword,extended,,3ff9a8981b7ccd5a,Unique identifier of the span within the scope of its trace. -2.0.0-dev,true,threat,threat.framework,keyword,extended,,MITRE ATT&CK,Threat classification framework. -2.0.0-dev,true,threat,threat.tactic.id,keyword,extended,array,TA0002,Threat tactic id. -2.0.0-dev,true,threat,threat.tactic.name,keyword,extended,array,Execution,Threat tactic. -2.0.0-dev,true,threat,threat.tactic.reference,keyword,extended,array,https://attack.mitre.org/tactics/TA0002/,Threat tactic URL reference. -2.0.0-dev,true,threat,threat.technique.id,keyword,extended,array,T1059,Threat technique id. -2.0.0-dev,true,threat,threat.technique.name,keyword,extended,array,Command and Scripting Interpreter,Threat technique name. -2.0.0-dev,true,threat,threat.technique.name.text,text,extended,,Command and Scripting Interpreter,Threat technique name. -2.0.0-dev,true,threat,threat.technique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/,Threat technique URL reference. -2.0.0-dev,true,threat,threat.technique.subtechnique.id,keyword,extended,array,T1059.001,Threat subtechnique id. -2.0.0-dev,true,threat,threat.technique.subtechnique.name,keyword,extended,array,PowerShell,Threat subtechnique name. -2.0.0-dev,true,threat,threat.technique.subtechnique.name.text,text,extended,,PowerShell,Threat subtechnique name. -2.0.0-dev,true,threat,threat.technique.subtechnique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/001/,Threat subtechnique URL reference. -2.0.0-dev,true,tls,tls.cipher,keyword,extended,,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,String indicating the cipher used during the current connection. -2.0.0-dev,true,tls,tls.client.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the client. -2.0.0-dev,true,tls,tls.client.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the client. -2.0.0-dev,true,tls,tls.client.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. -2.0.0-dev,true,tls,tls.client.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. -2.0.0-dev,true,tls,tls.client.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. -2.0.0-dev,true,tls,tls.client.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Distinguished name of subject of the issuer of the x.509 certificate presented by the client. -2.0.0-dev,true,tls,tls.client.ja3,keyword,extended,,d4e5b18d6b55c71272893221c96ba240,A hash that identifies clients based on how they perform an SSL/TLS handshake. -2.0.0-dev,true,tls,tls.client.not_after,date,extended,,2021-01-01T00:00:00.000Z,Date/Time indicating when client certificate is no longer considered valid. -2.0.0-dev,true,tls,tls.client.not_before,date,extended,,1970-01-01T00:00:00.000Z,Date/Time indicating when client certificate is first considered valid. -2.0.0-dev,true,tls,tls.client.server_name,keyword,extended,,www.elastic.co,Hostname the client is trying to connect to. Also called the SNI. -2.0.0-dev,true,tls,tls.client.subject,wildcard,extended,,"CN=myclient, OU=Documentation Team, DC=example, DC=com",Distinguished name of subject of the x.509 certificate presented by the client. -2.0.0-dev,true,tls,tls.client.supported_ciphers,keyword,extended,array,"[""TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"", ""TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"", ""...""]",Array of ciphers offered by the client during the client hello. -2.0.0-dev,true,tls,tls.client.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). -2.0.0-dev,true,tls,tls.client.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. -2.0.0-dev,true,tls,tls.client.x509.issuer.country,keyword,extended,array,US,List of country (C) codes -2.0.0-dev,true,tls,tls.client.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. -2.0.0-dev,true,tls,tls.client.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) -2.0.0-dev,true,tls,tls.client.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. -2.0.0-dev,true,tls,tls.client.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. -2.0.0-dev,true,tls,tls.client.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,tls,tls.client.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. -2.0.0-dev,true,tls,tls.client.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. -2.0.0-dev,true,tls,tls.client.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. -2.0.0-dev,true,tls,tls.client.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. -2.0.0-dev,false,tls,tls.client.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. -2.0.0-dev,true,tls,tls.client.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. -2.0.0-dev,true,tls,tls.client.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. -2.0.0-dev,true,tls,tls.client.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. -2.0.0-dev,true,tls,tls.client.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. -2.0.0-dev,true,tls,tls.client.x509.subject.country,keyword,extended,array,US,List of country (C) code -2.0.0-dev,true,tls,tls.client.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. -2.0.0-dev,true,tls,tls.client.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) -2.0.0-dev,true,tls,tls.client.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. -2.0.0-dev,true,tls,tls.client.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. -2.0.0-dev,true,tls,tls.client.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,tls,tls.client.x509.version_number,keyword,extended,,3,Version of x509 format. -2.0.0-dev,true,tls,tls.curve,keyword,extended,,secp256r1,"String indicating the curve used for the given cipher, when applicable." -2.0.0-dev,true,tls,tls.established,boolean,extended,,,Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. -2.0.0-dev,true,tls,tls.next_protocol,keyword,extended,,http/1.1,String indicating the protocol being tunneled. -2.0.0-dev,true,tls,tls.resumed,boolean,extended,,,Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. -2.0.0-dev,true,tls,tls.server.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the server. -2.0.0-dev,true,tls,tls.server.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the server. -2.0.0-dev,true,tls,tls.server.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. -2.0.0-dev,true,tls,tls.server.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. -2.0.0-dev,true,tls,tls.server.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. -2.0.0-dev,true,tls,tls.server.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Subject of the issuer of the x.509 certificate presented by the server. -2.0.0-dev,true,tls,tls.server.ja3s,keyword,extended,,394441ab65754e2207b1e1b457b3641d,A hash that identifies servers based on how they perform an SSL/TLS handshake. -2.0.0-dev,true,tls,tls.server.not_after,date,extended,,2021-01-01T00:00:00.000Z,Timestamp indicating when server certificate is no longer considered valid. -2.0.0-dev,true,tls,tls.server.not_before,date,extended,,1970-01-01T00:00:00.000Z,Timestamp indicating when server certificate is first considered valid. -2.0.0-dev,true,tls,tls.server.subject,wildcard,extended,,"CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com",Subject of the x.509 certificate presented by the server. -2.0.0-dev,true,tls,tls.server.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). -2.0.0-dev,true,tls,tls.server.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. -2.0.0-dev,true,tls,tls.server.x509.issuer.country,keyword,extended,array,US,List of country (C) codes -2.0.0-dev,true,tls,tls.server.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. -2.0.0-dev,true,tls,tls.server.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) -2.0.0-dev,true,tls,tls.server.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. -2.0.0-dev,true,tls,tls.server.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. -2.0.0-dev,true,tls,tls.server.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,tls,tls.server.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. -2.0.0-dev,true,tls,tls.server.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. -2.0.0-dev,true,tls,tls.server.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. -2.0.0-dev,true,tls,tls.server.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. -2.0.0-dev,false,tls,tls.server.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. -2.0.0-dev,true,tls,tls.server.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. -2.0.0-dev,true,tls,tls.server.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. -2.0.0-dev,true,tls,tls.server.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. -2.0.0-dev,true,tls,tls.server.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. -2.0.0-dev,true,tls,tls.server.x509.subject.country,keyword,extended,array,US,List of country (C) code -2.0.0-dev,true,tls,tls.server.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. -2.0.0-dev,true,tls,tls.server.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) -2.0.0-dev,true,tls,tls.server.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. -2.0.0-dev,true,tls,tls.server.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. -2.0.0-dev,true,tls,tls.server.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" -2.0.0-dev,true,tls,tls.server.x509.version_number,keyword,extended,,3,Version of x509 format. -2.0.0-dev,true,tls,tls.version,keyword,extended,,1.2,Numeric part of the version parsed from the original string. -2.0.0-dev,true,tls,tls.version_protocol,keyword,extended,,tls,Normalized lowercase protocol name parsed from original string. -2.0.0-dev,true,trace,trace.id,keyword,extended,,4bf92f3577b34da6a3ce929d0e0e4736,Unique identifier of the trace. -2.0.0-dev,true,transaction,transaction.id,keyword,extended,,00f067aa0ba902b7,Unique identifier of the transaction within the scope of its trace. -2.0.0-dev,true,url,url.domain,wildcard,extended,,www.elastic.co,Domain of the url. -2.0.0-dev,true,url,url.extension,keyword,extended,,png,File extension from the original request url. -2.0.0-dev,true,url,url.fragment,keyword,extended,,,Portion of the url after the `#`. -2.0.0-dev,true,url,url.full,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. -2.0.0-dev,true,url,url.full.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. -2.0.0-dev,true,url,url.original,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. -2.0.0-dev,true,url,url.original.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. -2.0.0-dev,true,url,url.password,keyword,extended,,,Password of the request. -2.0.0-dev,true,url,url.path,wildcard,extended,,,"Path of the request, such as ""/search""." -2.0.0-dev,true,url,url.port,long,extended,,443,"Port of the request, such as 443." -2.0.0-dev,true,url,url.query,keyword,extended,,,Query string of the request. -2.0.0-dev,true,url,url.registered_domain,wildcard,extended,,example.com,"The highest registered url domain, stripped of the subdomain." -2.0.0-dev,true,url,url.scheme,keyword,extended,,https,Scheme of the url. -2.0.0-dev,true,url,url.subdomain,keyword,extended,,east,The subdomain of the domain. -2.0.0-dev,true,url,url.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." -2.0.0-dev,true,url,url.username,keyword,extended,,,Username of the request. -2.0.0-dev,true,user,user.changes.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,user,user.changes.email,wildcard,extended,,,User email address. -2.0.0-dev,true,user,user.changes.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.changes.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.changes.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,user,user.changes.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,user,user.changes.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,user,user.changes.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,user,user.changes.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,user,user.changes.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.changes.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.changes.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,user,user.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,user,user.effective.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,user,user.effective.email,wildcard,extended,,,User email address. -2.0.0-dev,true,user,user.effective.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.effective.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.effective.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,user,user.effective.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,user,user.effective.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,user,user.effective.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,user,user.effective.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,user,user.effective.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.effective.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.effective.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,user,user.email,wildcard,extended,,,User email address. -2.0.0-dev,true,user,user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,user,user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,user,user.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,user,user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,user,user.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,user,user.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,user,user.target.domain,keyword,extended,,,Name of the directory the user is a member of. -2.0.0-dev,true,user,user.target.email,wildcard,extended,,,User email address. -2.0.0-dev,true,user,user.target.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.target.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." -2.0.0-dev,true,user,user.target.group.domain,keyword,extended,,,Name of the directory the group is a member of. -2.0.0-dev,true,user,user.target.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. -2.0.0-dev,true,user,user.target.group.name,keyword,extended,,,Name of the group. -2.0.0-dev,true,user,user.target.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. -2.0.0-dev,true,user,user.target.id,keyword,core,,,Unique identifier of the user. -2.0.0-dev,true,user,user.target.name,wildcard,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.target.name.text,text,core,,albert,Short name or login of the user. -2.0.0-dev,true,user,user.target.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. -2.0.0-dev,true,user_agent,user_agent.device.name,keyword,extended,,iPhone,Name of the device. -2.0.0-dev,true,user_agent,user_agent.name,keyword,extended,,Safari,Name of the user agent. -2.0.0-dev,true,user_agent,user_agent.original,wildcard,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. -2.0.0-dev,true,user_agent,user_agent.original.text,text,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. -2.0.0-dev,true,user_agent,user_agent.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." -2.0.0-dev,true,user_agent,user_agent.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,user_agent,user_agent.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." -2.0.0-dev,true,user_agent,user_agent.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. -2.0.0-dev,true,user_agent,user_agent.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,user_agent,user_agent.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." -2.0.0-dev,true,user_agent,user_agent.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." -2.0.0-dev,true,user_agent,user_agent.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. -2.0.0-dev,true,user_agent,user_agent.version,keyword,extended,,12.0,Version of the user agent. -2.0.0-dev,true,vulnerability,vulnerability.category,keyword,extended,array,"[""Firewall""]",Category of a vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.classification,keyword,extended,,CVSS,Classification of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.description,keyword,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.description.text,text,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.enumeration,keyword,extended,,CVE,Identifier of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.id,keyword,extended,,CVE-2019-00001,ID of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.reference,keyword,extended,,https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111,Reference of the vulnerability. -2.0.0-dev,true,vulnerability,vulnerability.report_id,keyword,extended,,20191018.0001,Scan identification number. -2.0.0-dev,true,vulnerability,vulnerability.scanner.vendor,keyword,extended,,Tenable,Name of the scanner vendor. -2.0.0-dev,true,vulnerability,vulnerability.score.base,float,extended,,5.5,Vulnerability Base score. -2.0.0-dev,true,vulnerability,vulnerability.score.environmental,float,extended,,5.5,Vulnerability Environmental score. -2.0.0-dev,true,vulnerability,vulnerability.score.temporal,float,extended,,,Vulnerability Temporal score. -2.0.0-dev,true,vulnerability,vulnerability.score.version,keyword,extended,,2.0,CVSS version. -2.0.0-dev,true,vulnerability,vulnerability.severity,keyword,extended,,Critical,Severity of the vulnerability. +2.0.0-dev+exp,true,base,@timestamp,date,core,,2016-05-23T08:05:34.853Z,Date/time when the event originated. +2.0.0-dev+exp,true,base,labels,object,core,,"{""application"": ""foo-bar"", ""env"": ""production""}",Custom key/value pairs. +2.0.0-dev+exp,true,base,message,text,core,,Hello World,Log message optimized for viewing in a log viewer. +2.0.0-dev+exp,true,base,tags,keyword,core,array,"[""production"", ""env2""]",List of keywords used to tag each event. +2.0.0-dev+exp,true,agent,agent.build.original,wildcard,core,,"metricbeat version 7.6.0 (amd64), libbeat 7.6.0 [6a23e8f8f30f5001ba344e4e54d8d9cb82cb107c built 2020-02-05 23:10:10 +0000 UTC]",Extended build information for the agent. +2.0.0-dev+exp,true,agent,agent.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this agent. +2.0.0-dev+exp,true,agent,agent.id,keyword,core,,8a4f500d,Unique identifier of this agent. +2.0.0-dev+exp,true,agent,agent.name,keyword,core,,foo,Custom name of the agent. +2.0.0-dev+exp,true,agent,agent.type,keyword,core,,filebeat,Type of the agent. +2.0.0-dev+exp,true,agent,agent.version,keyword,core,,6.0.0-rc2,Version of the agent. +2.0.0-dev+exp,true,client,client.address,keyword,extended,,,Client network address. +2.0.0-dev+exp,true,client,client.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev+exp,true,client,client.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,client,client.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,client,client.bytes,long,core,,184,Bytes sent from the client to the server. +2.0.0-dev+exp,true,client,client.domain,wildcard,core,,,Client domain. +2.0.0-dev+exp,true,client,client.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,client,client.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,client,client.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,client,client.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,client,client.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,client,client.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,client,client.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,client,client.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,client,client.ip,ip,core,,,IP address of the client. +2.0.0-dev+exp,true,client,client.mac,keyword,core,,,MAC address of the client. +2.0.0-dev+exp,true,client,client.nat.ip,ip,extended,,,Client NAT ip address +2.0.0-dev+exp,true,client,client.nat.port,long,extended,,,Client NAT port +2.0.0-dev+exp,true,client,client.packets,long,core,,12,Packets sent from the client to the server. +2.0.0-dev+exp,true,client,client.port,long,core,,,Port of the client. +2.0.0-dev+exp,true,client,client.registered_domain,wildcard,extended,,example.com,"The highest registered client domain, stripped of the subdomain." +2.0.0-dev+exp,true,client,client.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev+exp,true,client,client.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,client,client.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,client,client.user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,client,client.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,client,client.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,client,client.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,client,client.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,client,client.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,client,client.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,client,client.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,client,client.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,client,client.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,client,client.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,cloud,cloud.account.id,keyword,extended,,666777888999,The cloud account or organization id. +2.0.0-dev+exp,true,cloud,cloud.account.name,keyword,extended,,elastic-dev,The cloud account name. +2.0.0-dev+exp,true,cloud,cloud.availability_zone,keyword,extended,,us-east-1c,Availability zone in which this host is running. +2.0.0-dev+exp,true,cloud,cloud.instance.id,keyword,extended,,i-1234567890abcdef0,Instance ID of the host machine. +2.0.0-dev+exp,true,cloud,cloud.instance.name,keyword,extended,,,Instance name of the host machine. +2.0.0-dev+exp,true,cloud,cloud.machine.type,keyword,extended,,t2.medium,Machine type of the host machine. +2.0.0-dev+exp,true,cloud,cloud.project.id,keyword,extended,,my-project,The cloud project id. +2.0.0-dev+exp,true,cloud,cloud.project.name,keyword,extended,,my project,The cloud project name. +2.0.0-dev+exp,true,cloud,cloud.provider,keyword,extended,,aws,Name of the cloud provider. +2.0.0-dev+exp,true,cloud,cloud.region,keyword,extended,,us-east-1,Region in which this host is running. +2.0.0-dev+exp,true,container,container.id,keyword,core,,,Unique container id. +2.0.0-dev+exp,true,container,container.image.name,keyword,extended,,,Name of the image the container was built on. +2.0.0-dev+exp,true,container,container.image.tag,keyword,extended,array,,Container image tags. +2.0.0-dev+exp,true,container,container.labels,object,extended,,,Image labels. +2.0.0-dev+exp,true,container,container.name,keyword,extended,,,Container name. +2.0.0-dev+exp,true,container,container.runtime,keyword,extended,,docker,Runtime managing this container. +2.0.0-dev+exp,true,destination,destination.address,keyword,extended,,,Destination network address. +2.0.0-dev+exp,true,destination,destination.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev+exp,true,destination,destination.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,destination,destination.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,destination,destination.bytes,long,core,,184,Bytes sent from the destination to the source. +2.0.0-dev+exp,true,destination,destination.domain,wildcard,core,,,Destination domain. +2.0.0-dev+exp,true,destination,destination.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,destination,destination.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,destination,destination.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,destination,destination.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,destination,destination.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,destination,destination.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,destination,destination.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,destination,destination.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,destination,destination.ip,ip,core,,,IP address of the destination. +2.0.0-dev+exp,true,destination,destination.mac,keyword,core,,,MAC address of the destination. +2.0.0-dev+exp,true,destination,destination.nat.ip,ip,extended,,,Destination NAT ip +2.0.0-dev+exp,true,destination,destination.nat.port,long,extended,,,Destination NAT Port +2.0.0-dev+exp,true,destination,destination.packets,long,core,,12,Packets sent from the destination to the source. +2.0.0-dev+exp,true,destination,destination.port,long,core,,,Port of the destination. +2.0.0-dev+exp,true,destination,destination.registered_domain,wildcard,extended,,example.com,"The highest registered destination domain, stripped of the subdomain." +2.0.0-dev+exp,true,destination,destination.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev+exp,true,destination,destination.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,destination,destination.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,destination,destination.user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,destination,destination.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,destination,destination.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,destination,destination.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,destination,destination.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,destination,destination.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,destination,destination.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,destination,destination.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,destination,destination.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,destination,destination.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,destination,destination.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,dll,dll.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev+exp,true,dll,dll.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev+exp,true,dll,dll.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev+exp,true,dll,dll.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev+exp,true,dll,dll.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev+exp,true,dll,dll.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev+exp,true,dll,dll.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev+exp,true,dll,dll.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev+exp,true,dll,dll.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev+exp,true,dll,dll.name,keyword,core,,kernel32.dll,Name of the library. +2.0.0-dev+exp,true,dll,dll.path,keyword,extended,,C:\Windows\System32\kernel32.dll,Full file path of the library. +2.0.0-dev+exp,true,dll,dll.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev+exp,true,dll,dll.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev+exp,true,dll,dll.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev+exp,true,dll,dll.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev+exp,true,dll,dll.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev+exp,true,dll,dll.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev+exp,true,dll,dll.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev+exp,true,dns,dns.answers,object,extended,array,,Array of DNS answers. +2.0.0-dev+exp,true,dns,dns.answers.class,keyword,extended,,IN,The class of DNS data contained in this resource record. +2.0.0-dev+exp,true,dns,dns.answers.data,wildcard,extended,,10.10.10.10,The data describing the resource. +2.0.0-dev+exp,true,dns,dns.answers.name,keyword,extended,,www.example.com,The domain name to which this resource record pertains. +2.0.0-dev+exp,true,dns,dns.answers.ttl,long,extended,,180,The time interval in seconds that this resource record may be cached before it should be discarded. +2.0.0-dev+exp,true,dns,dns.answers.type,keyword,extended,,CNAME,The type of data contained in this resource record. +2.0.0-dev+exp,true,dns,dns.header_flags,keyword,extended,array,"[""RD"", ""RA""]",Array of DNS header flags. +2.0.0-dev+exp,true,dns,dns.id,keyword,extended,,62111,The DNS packet identifier assigned by the program that generated the query. The identifier is copied to the response. +2.0.0-dev+exp,true,dns,dns.op_code,keyword,extended,,QUERY,The DNS operation code that specifies the kind of query in the message. +2.0.0-dev+exp,true,dns,dns.question.class,keyword,extended,,IN,The class of records being queried. +2.0.0-dev+exp,true,dns,dns.question.name,wildcard,extended,,www.example.com,The name being queried. +2.0.0-dev+exp,true,dns,dns.question.registered_domain,keyword,extended,,example.com,"The highest registered domain, stripped of the subdomain." +2.0.0-dev+exp,true,dns,dns.question.subdomain,keyword,extended,,www,The subdomain of the domain. +2.0.0-dev+exp,true,dns,dns.question.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,dns,dns.question.type,keyword,extended,,AAAA,The type of record being queried. +2.0.0-dev+exp,true,dns,dns.resolved_ip,ip,extended,array,"[""10.10.10.10"", ""10.10.10.11""]",Array containing all IPs seen in answers.data +2.0.0-dev+exp,true,dns,dns.response_code,keyword,extended,,NOERROR,The DNS response code. +2.0.0-dev+exp,true,dns,dns.type,keyword,extended,,answer,"The type of DNS event captured, query or answer." +2.0.0-dev+exp,true,ecs,ecs.version,keyword,core,,1.0.0,ECS version this event conforms to. +2.0.0-dev+exp,true,error,error.code,keyword,core,,,Error code describing the error. +2.0.0-dev+exp,true,error,error.id,keyword,core,,,Unique identifier for the error. +2.0.0-dev+exp,true,error,error.message,text,core,,,Error message. +2.0.0-dev+exp,true,error,error.stack_trace,wildcard,extended,,,The stack trace of this error in plain text. +2.0.0-dev+exp,true,error,error.stack_trace.text,text,extended,,,The stack trace of this error in plain text. +2.0.0-dev+exp,true,error,error.type,wildcard,extended,,java.lang.NullPointerException,"The type of the error, for example the class name of the exception." +2.0.0-dev+exp,true,event,event.action,keyword,core,,user-password-change,The action captured by the event. +2.0.0-dev+exp,true,event,event.category,keyword,core,array,authentication,Event category. The second categorization field in the hierarchy. +2.0.0-dev+exp,true,event,event.code,keyword,extended,,4648,Identification code for this event. +2.0.0-dev+exp,true,event,event.created,date,core,,2016-05-23T08:05:34.857Z,Time when the event was first read by an agent or by your pipeline. +2.0.0-dev+exp,true,event,event.dataset,keyword,core,,apache.access,Name of the dataset. +2.0.0-dev+exp,true,event,event.duration,long,core,,,Duration of the event in nanoseconds. +2.0.0-dev+exp,true,event,event.end,date,extended,,,event.end contains the date when the event ended or when the activity was last observed. +2.0.0-dev+exp,true,event,event.hash,keyword,extended,,123456789012345678901234567890ABCD,Hash (perhaps logstash fingerprint) of raw field to be able to demonstrate log integrity. +2.0.0-dev+exp,true,event,event.id,keyword,core,,8a4f500d,Unique ID to describe the event. +2.0.0-dev+exp,true,event,event.ingested,date,core,,2016-05-23T08:05:35.101Z,Timestamp when an event arrived in the central data store. +2.0.0-dev+exp,true,event,event.kind,keyword,core,,alert,The kind of the event. The highest categorization field in the hierarchy. +2.0.0-dev+exp,true,event,event.module,keyword,core,,apache,Name of the module this data is coming from. +2.0.0-dev+exp,false,event,event.original,keyword,core,,Sep 19 08:26:10 host CEF:0|Security| threatmanager|1.0|100| worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2spt=1232,Raw text message of entire event. +2.0.0-dev+exp,true,event,event.outcome,keyword,core,,success,The outcome of the event. The lowest level categorization field in the hierarchy. +2.0.0-dev+exp,true,event,event.provider,keyword,extended,,kernel,Source of the event. +2.0.0-dev+exp,true,event,event.reason,keyword,extended,,Terminated an unexpected process,"Reason why this event happened, according to the source" +2.0.0-dev+exp,true,event,event.reference,keyword,extended,,https://system.example.com/event/#0001234,Event reference URL +2.0.0-dev+exp,true,event,event.risk_score,float,core,,,Risk score or priority of the event (e.g. security solutions). Use your system's original value here. +2.0.0-dev+exp,true,event,event.risk_score_norm,float,extended,,,Normalized risk score or priority of the event (0-100). +2.0.0-dev+exp,true,event,event.sequence,long,extended,,,Sequence number of the event. +2.0.0-dev+exp,true,event,event.severity,long,core,,7,Numeric severity of the event. +2.0.0-dev+exp,true,event,event.start,date,extended,,,event.start contains the date when the event started or when the activity was first observed. +2.0.0-dev+exp,true,event,event.timezone,keyword,extended,,,Event time zone. +2.0.0-dev+exp,true,event,event.type,keyword,core,array,,Event type. The third categorization field in the hierarchy. +2.0.0-dev+exp,true,event,event.url,keyword,extended,,https://mysystem.example.com/alert/5271dedb-f5b0-4218-87f0-4ac4870a38fe,Event investigation URL +2.0.0-dev+exp,true,file,file.accessed,date,extended,,,Last time the file was accessed. +2.0.0-dev+exp,true,file,file.attributes,keyword,extended,array,"[""readonly"", ""system""]",Array of file attributes. +2.0.0-dev+exp,true,file,file.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev+exp,true,file,file.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev+exp,true,file,file.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev+exp,true,file,file.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev+exp,true,file,file.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev+exp,true,file,file.created,date,extended,,,File creation time. +2.0.0-dev+exp,true,file,file.ctime,date,extended,,,Last time the file attributes or metadata changed. +2.0.0-dev+exp,true,file,file.device,keyword,extended,,sda,Device that is the source of the file. +2.0.0-dev+exp,true,file,file.directory,wildcard,extended,,/home/alice,Directory where the file is located. +2.0.0-dev+exp,true,file,file.drive_letter,keyword,extended,,C,Drive letter where the file is located. +2.0.0-dev+exp,true,file,file.extension,keyword,extended,,png,"File extension, excluding the leading dot." +2.0.0-dev+exp,true,file,file.gid,keyword,extended,,1001,Primary group ID (GID) of the file. +2.0.0-dev+exp,true,file,file.group,keyword,extended,,alice,Primary group name of the file. +2.0.0-dev+exp,true,file,file.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev+exp,true,file,file.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev+exp,true,file,file.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev+exp,true,file,file.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev+exp,true,file,file.inode,keyword,extended,,256383,Inode representing the file in the filesystem. +2.0.0-dev+exp,true,file,file.mime_type,keyword,extended,,,"Media type of file, document, or arrangement of bytes." +2.0.0-dev+exp,true,file,file.mode,keyword,extended,,0640,Mode of the file in octal representation. +2.0.0-dev+exp,true,file,file.mtime,date,extended,,,Last time the file content was modified. +2.0.0-dev+exp,true,file,file.name,keyword,extended,,example.png,"Name of the file including the extension, without the directory." +2.0.0-dev+exp,true,file,file.owner,keyword,extended,,alice,File owner's username. +2.0.0-dev+exp,true,file,file.path,wildcard,extended,,/home/alice/example.png,"Full path to the file, including the file name." +2.0.0-dev+exp,true,file,file.path.text,text,extended,,/home/alice/example.png,"Full path to the file, including the file name." +2.0.0-dev+exp,true,file,file.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev+exp,true,file,file.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev+exp,true,file,file.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev+exp,true,file,file.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev+exp,true,file,file.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev+exp,true,file,file.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev+exp,true,file,file.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev+exp,true,file,file.size,long,extended,,16384,File size in bytes. +2.0.0-dev+exp,true,file,file.target_path,wildcard,extended,,,Target path for symlinks. +2.0.0-dev+exp,true,file,file.target_path.text,text,extended,,,Target path for symlinks. +2.0.0-dev+exp,true,file,file.type,keyword,extended,,file,"File type (file, dir, or symlink)." +2.0.0-dev+exp,true,file,file.uid,keyword,extended,,1001,The user ID (UID) or security identifier (SID) of the file owner. +2.0.0-dev+exp,true,file,file.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev+exp,true,file,file.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev+exp,true,file,file.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev+exp,true,file,file.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev+exp,true,file,file.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev+exp,true,file,file.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev+exp,true,file,file.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev+exp,true,file,file.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,file,file.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev+exp,true,file,file.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev+exp,true,file,file.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev+exp,true,file,file.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev+exp,false,file,file.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev+exp,true,file,file.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev+exp,true,file,file.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev+exp,true,file,file.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev+exp,true,file,file.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev+exp,true,file,file.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev+exp,true,file,file.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev+exp,true,file,file.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev+exp,true,file,file.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev+exp,true,file,file.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev+exp,true,file,file.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,file,file.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev+exp,true,group,group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,group,group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,group,group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,host,host.architecture,keyword,core,,x86_64,Operating system architecture. +2.0.0-dev+exp,true,host,host.domain,keyword,extended,,CONTOSO,Name of the directory the group is a member of. +2.0.0-dev+exp,true,host,host.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,host,host.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,host,host.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,host,host.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,host,host.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,host,host.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,host,host.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,host,host.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,host,host.hostname,wildcard,core,,,Hostname of the host. +2.0.0-dev+exp,true,host,host.id,keyword,core,,,Unique host id. +2.0.0-dev+exp,true,host,host.ip,ip,core,array,,Host ip addresses. +2.0.0-dev+exp,true,host,host.mac,keyword,core,array,,Host mac addresses. +2.0.0-dev+exp,true,host,host.name,keyword,core,,,Name of the host. +2.0.0-dev+exp,true,host,host.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev+exp,true,host,host.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,host,host.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,host,host.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev+exp,true,host,host.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,host,host.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,host,host.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev+exp,true,host,host.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev+exp,true,host,host.type,keyword,core,,,Type of host. +2.0.0-dev+exp,true,host,host.uptime,long,extended,,1325,Seconds the host has been up. +2.0.0-dev+exp,true,host,host.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,host,host.user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,host,host.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,host,host.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,host,host.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,host,host.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,host,host.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,host,host.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,host,host.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,host,host.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,host,host.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,host,host.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,http,http.request.body.bytes,long,extended,,887,Size in bytes of the request body. +2.0.0-dev+exp,true,http,http.request.body.content,wildcard,extended,,Hello world,The full HTTP request body. +2.0.0-dev+exp,true,http,http.request.body.content.text,text,extended,,Hello world,The full HTTP request body. +2.0.0-dev+exp,true,http,http.request.bytes,long,extended,,1437,Total size in bytes of the request (body and headers). +2.0.0-dev+exp,true,http,http.request.method,keyword,extended,,"GET, POST, PUT, PoST",HTTP request method. +2.0.0-dev+exp,true,http,http.request.mime_type,keyword,extended,,image/gif,Mime type of the body of the request. +2.0.0-dev+exp,true,http,http.request.referrer,wildcard,extended,,https://blog.example.com/,Referrer for this HTTP request. +2.0.0-dev+exp,true,http,http.response.body.bytes,long,extended,,887,Size in bytes of the response body. +2.0.0-dev+exp,true,http,http.response.body.content,wildcard,extended,,Hello world,The full HTTP response body. +2.0.0-dev+exp,true,http,http.response.body.content.text,text,extended,,Hello world,The full HTTP response body. +2.0.0-dev+exp,true,http,http.response.bytes,long,extended,,1437,Total size in bytes of the response (body and headers). +2.0.0-dev+exp,true,http,http.response.mime_type,keyword,extended,,image/gif,Mime type of the body of the response. +2.0.0-dev+exp,true,http,http.response.status_code,long,extended,,404,HTTP response status code. +2.0.0-dev+exp,true,http,http.version,keyword,extended,,1.1,HTTP version. +2.0.0-dev+exp,true,log,log.file.path,wildcard,extended,,/var/log/fun-times.log,Full path to the log file this event came from. +2.0.0-dev+exp,true,log,log.level,keyword,core,,error,Log level of the log event. +2.0.0-dev+exp,true,log,log.logger,wildcard,core,,org.elasticsearch.bootstrap.Bootstrap,Name of the logger. +2.0.0-dev+exp,true,log,log.origin.file.line,integer,extended,,42,The line number of the file which originated the log event. +2.0.0-dev+exp,true,log,log.origin.file.name,keyword,extended,,Bootstrap.java,The code file which originated the log event. +2.0.0-dev+exp,true,log,log.origin.function,keyword,extended,,init,The function which originated the log event. +2.0.0-dev+exp,false,log,log.original,keyword,core,,Sep 19 08:26:10 localhost My log,"Original log message with light interpretation only (encoding, newlines)." +2.0.0-dev+exp,true,log,log.syslog,object,extended,,,Syslog metadata +2.0.0-dev+exp,true,log,log.syslog.facility.code,long,extended,,23,Syslog numeric facility of the event. +2.0.0-dev+exp,true,log,log.syslog.facility.name,keyword,extended,,local7,Syslog text-based facility of the event. +2.0.0-dev+exp,true,log,log.syslog.priority,long,extended,,135,Syslog priority of the event. +2.0.0-dev+exp,true,log,log.syslog.severity.code,long,extended,,3,Syslog numeric severity of the event. +2.0.0-dev+exp,true,log,log.syslog.severity.name,keyword,extended,,Error,Syslog text-based severity of the event. +2.0.0-dev+exp,true,network,network.application,keyword,extended,,aim,Application level protocol name. +2.0.0-dev+exp,true,network,network.bytes,long,core,,368,Total bytes transferred in both directions. +2.0.0-dev+exp,true,network,network.community_id,keyword,extended,,1:hO+sN4H+MG5MY/8hIrXPqc4ZQz0=,A hash of source and destination IPs and ports. +2.0.0-dev+exp,true,network,network.direction,keyword,core,,inbound,Direction of the network traffic. +2.0.0-dev+exp,true,network,network.forwarded_ip,ip,core,,192.1.1.2,Host IP address when the source IP address is the proxy. +2.0.0-dev+exp,true,network,network.iana_number,keyword,extended,,6,IANA Protocol Number. +2.0.0-dev+exp,true,network,network.inner,object,extended,,,Inner VLAN tag information +2.0.0-dev+exp,true,network,network.inner.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev+exp,true,network,network.inner.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev+exp,true,network,network.name,keyword,extended,,Guest Wifi,Name given by operators to sections of their network. +2.0.0-dev+exp,true,network,network.packets,long,core,,24,Total packets transferred in both directions. +2.0.0-dev+exp,true,network,network.protocol,keyword,core,,http,L7 Network protocol name. +2.0.0-dev+exp,true,network,network.transport,keyword,core,,tcp,Protocol Name corresponding to the field `iana_number`. +2.0.0-dev+exp,true,network,network.type,keyword,core,,ipv4,"In the OSI Model this would be the Network Layer. ipv4, ipv6, ipsec, pim, etc" +2.0.0-dev+exp,true,network,network.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev+exp,true,network,network.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev+exp,true,observer,observer.egress,object,extended,,,Object field for egress information +2.0.0-dev+exp,true,observer,observer.egress.interface.alias,keyword,extended,,outside,Interface alias +2.0.0-dev+exp,true,observer,observer.egress.interface.id,keyword,extended,,10,Interface ID +2.0.0-dev+exp,true,observer,observer.egress.interface.name,keyword,extended,,eth0,Interface name +2.0.0-dev+exp,true,observer,observer.egress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev+exp,true,observer,observer.egress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev+exp,true,observer,observer.egress.zone,keyword,extended,,Public_Internet,Observer Egress zone +2.0.0-dev+exp,true,observer,observer.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,observer,observer.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,observer,observer.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,observer,observer.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,observer,observer.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,observer,observer.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,observer,observer.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,observer,observer.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,observer,observer.hostname,keyword,core,,,Hostname of the observer. +2.0.0-dev+exp,true,observer,observer.ingress,object,extended,,,Object field for ingress information +2.0.0-dev+exp,true,observer,observer.ingress.interface.alias,keyword,extended,,outside,Interface alias +2.0.0-dev+exp,true,observer,observer.ingress.interface.id,keyword,extended,,10,Interface ID +2.0.0-dev+exp,true,observer,observer.ingress.interface.name,keyword,extended,,eth0,Interface name +2.0.0-dev+exp,true,observer,observer.ingress.vlan.id,keyword,extended,,10,VLAN ID as reported by the observer. +2.0.0-dev+exp,true,observer,observer.ingress.vlan.name,keyword,extended,,outside,Optional VLAN name as reported by the observer. +2.0.0-dev+exp,true,observer,observer.ingress.zone,keyword,extended,,DMZ,Observer ingress zone +2.0.0-dev+exp,true,observer,observer.ip,ip,core,array,,IP addresses of the observer. +2.0.0-dev+exp,true,observer,observer.mac,keyword,core,array,,MAC addresses of the observer +2.0.0-dev+exp,true,observer,observer.name,keyword,extended,,1_proxySG,Custom name of the observer. +2.0.0-dev+exp,true,observer,observer.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev+exp,true,observer,observer.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,observer,observer.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,observer,observer.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev+exp,true,observer,observer.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,observer,observer.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,observer,observer.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev+exp,true,observer,observer.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev+exp,true,observer,observer.product,keyword,extended,,s200,The product name of the observer. +2.0.0-dev+exp,true,observer,observer.serial_number,keyword,extended,,,Observer serial number. +2.0.0-dev+exp,true,observer,observer.type,keyword,core,,firewall,The type of the observer the data is coming from. +2.0.0-dev+exp,true,observer,observer.vendor,keyword,core,,Symantec,Vendor name of the observer. +2.0.0-dev+exp,true,observer,observer.version,keyword,core,,,Observer version. +2.0.0-dev+exp,true,organization,organization.id,keyword,extended,,,Unique identifier for the organization. +2.0.0-dev+exp,true,organization,organization.name,wildcard,extended,,,Organization name. +2.0.0-dev+exp,true,organization,organization.name.text,text,extended,,,Organization name. +2.0.0-dev+exp,true,package,package.architecture,keyword,extended,,x86_64,Package architecture. +2.0.0-dev+exp,true,package,package.build_version,keyword,extended,,36f4f7e89dd61b0988b12ee000b98966867710cd,Build version information +2.0.0-dev+exp,true,package,package.checksum,keyword,extended,,68b329da9893e34099c7d8ad5cb9c940,Checksum of the installed package for verification. +2.0.0-dev+exp,true,package,package.description,keyword,extended,,Open source programming language to build simple/reliable/efficient software.,Description of the package. +2.0.0-dev+exp,true,package,package.install_scope,keyword,extended,,global,"Indicating how the package was installed, e.g. user-local, global." +2.0.0-dev+exp,true,package,package.installed,date,extended,,,Time when package was installed. +2.0.0-dev+exp,true,package,package.license,keyword,extended,,Apache License 2.0,Package license +2.0.0-dev+exp,true,package,package.name,keyword,extended,,go,Package name +2.0.0-dev+exp,true,package,package.path,keyword,extended,,/usr/local/Cellar/go/1.12.9/,Path where the package is installed. +2.0.0-dev+exp,true,package,package.reference,keyword,extended,,https://golang.org,Package home page or reference URL +2.0.0-dev+exp,true,package,package.size,long,extended,,62231,Package size in bytes. +2.0.0-dev+exp,true,package,package.type,keyword,extended,,rpm,Package type +2.0.0-dev+exp,true,package,package.version,keyword,extended,,1.12.9,Package version +2.0.0-dev+exp,true,process,process.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. +2.0.0-dev+exp,true,process,process.args_count,long,extended,,4,Length of the process.args array. +2.0.0-dev+exp,true,process,process.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev+exp,true,process,process.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev+exp,true,process,process.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev+exp,true,process,process.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev+exp,true,process,process.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev+exp,true,process,process.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev+exp,true,process,process.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev+exp,true,process,process.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. +2.0.0-dev+exp,true,process,process.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev+exp,true,process,process.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev+exp,true,process,process.exit_code,long,extended,,137,The exit code of the process. +2.0.0-dev+exp,true,process,process.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev+exp,true,process,process.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev+exp,true,process,process.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev+exp,true,process,process.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev+exp,true,process,process.name,wildcard,extended,,ssh,Process name. +2.0.0-dev+exp,true,process,process.name.text,text,extended,,ssh,Process name. +2.0.0-dev+exp,true,process,process.parent.args,keyword,extended,array,"[""/usr/bin/ssh"", ""-l"", ""user"", ""10.0.0.16""]",Array of process arguments. +2.0.0-dev+exp,true,process,process.parent.args_count,long,extended,,4,Length of the process.args array. +2.0.0-dev+exp,true,process,process.parent.code_signature.exists,boolean,core,,true,Boolean to capture if a signature is present. +2.0.0-dev+exp,true,process,process.parent.code_signature.status,keyword,extended,,ERROR_UNTRUSTED_ROOT,Additional information about the certificate status. +2.0.0-dev+exp,true,process,process.parent.code_signature.subject_name,keyword,core,,Microsoft Corporation,Subject name of the code signer +2.0.0-dev+exp,true,process,process.parent.code_signature.trusted,boolean,extended,,true,Stores the trust status of the certificate chain. +2.0.0-dev+exp,true,process,process.parent.code_signature.valid,boolean,extended,,true,Boolean to capture if the digital signature is verified against the binary content. +2.0.0-dev+exp,true,process,process.parent.command_line,wildcard,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev+exp,true,process,process.parent.command_line.text,text,extended,,/usr/bin/ssh -l user 10.0.0.16,Full command line that started the process. +2.0.0-dev+exp,true,process,process.parent.entity_id,keyword,extended,,c2c455d9f99375d,Unique identifier for the process. +2.0.0-dev+exp,true,process,process.parent.executable,wildcard,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev+exp,true,process,process.parent.executable.text,text,extended,,/usr/bin/ssh,Absolute path to the process executable. +2.0.0-dev+exp,true,process,process.parent.exit_code,long,extended,,137,The exit code of the process. +2.0.0-dev+exp,true,process,process.parent.hash.md5,keyword,extended,,,MD5 hash. +2.0.0-dev+exp,true,process,process.parent.hash.sha1,keyword,extended,,,SHA1 hash. +2.0.0-dev+exp,true,process,process.parent.hash.sha256,keyword,extended,,,SHA256 hash. +2.0.0-dev+exp,true,process,process.parent.hash.sha512,keyword,extended,,,SHA512 hash. +2.0.0-dev+exp,true,process,process.parent.name,wildcard,extended,,ssh,Process name. +2.0.0-dev+exp,true,process,process.parent.name.text,text,extended,,ssh,Process name. +2.0.0-dev+exp,true,process,process.parent.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev+exp,true,process,process.parent.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.parent.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.parent.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev+exp,true,process,process.parent.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev+exp,true,process,process.parent.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.parent.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.parent.pgid,long,extended,,,Identifier of the group of processes the process belongs to. +2.0.0-dev+exp,true,process,process.parent.pid,long,core,,4242,Process id. +2.0.0-dev+exp,true,process,process.parent.ppid,long,extended,,4241,Parent process' pid. +2.0.0-dev+exp,true,process,process.parent.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. +2.0.0-dev+exp,true,process,process.parent.thread.id,long,extended,,4242,Thread ID. +2.0.0-dev+exp,true,process,process.parent.thread.name,wildcard,extended,,thread-0,Thread name. +2.0.0-dev+exp,true,process,process.parent.title,wildcard,extended,,,Process title. +2.0.0-dev+exp,true,process,process.parent.title.text,text,extended,,,Process title. +2.0.0-dev+exp,true,process,process.parent.uptime,long,extended,,1325,Seconds the process has been up. +2.0.0-dev+exp,true,process,process.parent.working_directory,wildcard,extended,,/home/alice,The working directory of the process. +2.0.0-dev+exp,true,process,process.parent.working_directory.text,text,extended,,/home/alice,The working directory of the process. +2.0.0-dev+exp,true,process,process.pe.architecture,keyword,extended,,x64,CPU architecture target for the file. +2.0.0-dev+exp,true,process,process.pe.company,keyword,extended,,Microsoft Corporation,"Internal company name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.pe.description,keyword,extended,,Paint,"Internal description of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.pe.file_version,keyword,extended,,6.3.9600.17415,Process name. +2.0.0-dev+exp,true,process,process.pe.imphash,keyword,extended,,0c6803c4e922103c4dca5963aad36ddf,A hash of the imports in a PE file. +2.0.0-dev+exp,true,process,process.pe.original_file_name,wildcard,extended,,MSPAINT.EXE,"Internal name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.pe.product,keyword,extended,,Microsoft® Windows® Operating System,"Internal product name of the file, provided at compile-time." +2.0.0-dev+exp,true,process,process.pgid,long,extended,,,Identifier of the group of processes the process belongs to. +2.0.0-dev+exp,true,process,process.pid,long,core,,4242,Process id. +2.0.0-dev+exp,true,process,process.ppid,long,extended,,4241,Parent process' pid. +2.0.0-dev+exp,true,process,process.start,date,extended,,2016-05-23T08:05:34.853Z,The time the process started. +2.0.0-dev+exp,true,process,process.thread.id,long,extended,,4242,Thread ID. +2.0.0-dev+exp,true,process,process.thread.name,wildcard,extended,,thread-0,Thread name. +2.0.0-dev+exp,true,process,process.title,wildcard,extended,,,Process title. +2.0.0-dev+exp,true,process,process.title.text,text,extended,,,Process title. +2.0.0-dev+exp,true,process,process.uptime,long,extended,,1325,Seconds the process has been up. +2.0.0-dev+exp,true,process,process.working_directory,wildcard,extended,,/home/alice,The working directory of the process. +2.0.0-dev+exp,true,process,process.working_directory.text,text,extended,,/home/alice,The working directory of the process. +2.0.0-dev+exp,true,registry,registry.data.bytes,keyword,extended,,ZQBuAC0AVQBTAAAAZQBuAAAAAAA=,Original bytes written with base64 encoding. +2.0.0-dev+exp,true,registry,registry.data.strings,wildcard,core,array,"[""C:\rta\red_ttp\bin\myapp.exe""]",List of strings representing what was written to the registry. +2.0.0-dev+exp,true,registry,registry.data.type,keyword,core,,REG_SZ,Standard registry type for encoding contents +2.0.0-dev+exp,true,registry,registry.hive,keyword,core,,HKLM,Abbreviated name for the hive. +2.0.0-dev+exp,true,registry,registry.key,wildcard,core,,SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe,Hive-relative path of keys. +2.0.0-dev+exp,true,registry,registry.path,wildcard,core,,HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\winword.exe\Debugger,"Full path, including hive, key and value" +2.0.0-dev+exp,true,registry,registry.value,keyword,core,,Debugger,Name of the value written. +2.0.0-dev+exp,true,related,related.hash,keyword,extended,array,,All the hashes seen on your event. +2.0.0-dev+exp,true,related,related.hosts,keyword,extended,array,,All the host identifiers seen on your event. +2.0.0-dev+exp,true,related,related.ip,ip,extended,array,,All of the IPs seen on your event. +2.0.0-dev+exp,true,related,related.user,keyword,extended,array,,All the user names seen on your event. +2.0.0-dev+exp,true,rule,rule.author,keyword,extended,array,"[""Star-Lord""]",Rule author +2.0.0-dev+exp,true,rule,rule.category,keyword,extended,,Attempted Information Leak,Rule category +2.0.0-dev+exp,true,rule,rule.description,keyword,extended,,Block requests to public DNS over HTTPS / TLS protocols,Rule description +2.0.0-dev+exp,true,rule,rule.id,keyword,extended,,101,Rule ID +2.0.0-dev+exp,true,rule,rule.license,keyword,extended,,Apache 2.0,Rule license +2.0.0-dev+exp,true,rule,rule.name,keyword,extended,,BLOCK_DNS_over_TLS,Rule name +2.0.0-dev+exp,true,rule,rule.reference,keyword,extended,,https://en.wikipedia.org/wiki/DNS_over_TLS,Rule reference URL +2.0.0-dev+exp,true,rule,rule.ruleset,keyword,extended,,Standard_Protocol_Filters,Rule ruleset +2.0.0-dev+exp,true,rule,rule.uuid,keyword,extended,,1100110011,Rule UUID +2.0.0-dev+exp,true,rule,rule.version,keyword,extended,,1.1,Rule version +2.0.0-dev+exp,true,server,server.address,keyword,extended,,,Server network address. +2.0.0-dev+exp,true,server,server.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev+exp,true,server,server.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,server,server.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,server,server.bytes,long,core,,184,Bytes sent from the server to the client. +2.0.0-dev+exp,true,server,server.domain,wildcard,core,,,Server domain. +2.0.0-dev+exp,true,server,server.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,server,server.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,server,server.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,server,server.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,server,server.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,server,server.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,server,server.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,server,server.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,server,server.ip,ip,core,,,IP address of the server. +2.0.0-dev+exp,true,server,server.mac,keyword,core,,,MAC address of the server. +2.0.0-dev+exp,true,server,server.nat.ip,ip,extended,,,Server NAT ip +2.0.0-dev+exp,true,server,server.nat.port,long,extended,,,Server NAT port +2.0.0-dev+exp,true,server,server.packets,long,core,,12,Packets sent from the server to the client. +2.0.0-dev+exp,true,server,server.port,long,core,,,Port of the server. +2.0.0-dev+exp,true,server,server.registered_domain,wildcard,extended,,example.com,"The highest registered server domain, stripped of the subdomain." +2.0.0-dev+exp,true,server,server.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev+exp,true,server,server.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,server,server.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,server,server.user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,server,server.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,server,server.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,server,server.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,server,server.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,server,server.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,server,server.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,server,server.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,server,server.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,server,server.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,server,server.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,service,service.ephemeral_id,keyword,extended,,8a4f500f,Ephemeral identifier of this service. +2.0.0-dev+exp,true,service,service.id,keyword,core,,d37e5ebfe0ae6c4972dbe9f0174a1637bb8247f6,Unique identifier of the running service. +2.0.0-dev+exp,true,service,service.name,keyword,core,,elasticsearch-metrics,Name of the service. +2.0.0-dev+exp,true,service,service.node.name,keyword,extended,,instance-0000000016,Name of the service node. +2.0.0-dev+exp,true,service,service.state,keyword,core,,,Current state of the service. +2.0.0-dev+exp,true,service,service.type,keyword,core,,elasticsearch,The type of the service. +2.0.0-dev+exp,true,service,service.version,keyword,core,,3.2.4,Version of the service. +2.0.0-dev+exp,true,source,source.address,keyword,extended,,,Source network address. +2.0.0-dev+exp,true,source,source.as.number,long,extended,,15169,Unique number allocated to the autonomous system. +2.0.0-dev+exp,true,source,source.as.organization.name,wildcard,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,source,source.as.organization.name.text,text,extended,,Google LLC,Organization name. +2.0.0-dev+exp,true,source,source.bytes,long,core,,184,Bytes sent from the source to the destination. +2.0.0-dev+exp,true,source,source.domain,wildcard,core,,,Source domain. +2.0.0-dev+exp,true,source,source.geo.city_name,keyword,core,,Montreal,City name. +2.0.0-dev+exp,true,source,source.geo.continent_name,keyword,core,,North America,Name of the continent. +2.0.0-dev+exp,true,source,source.geo.country_iso_code,keyword,core,,CA,Country ISO code. +2.0.0-dev+exp,true,source,source.geo.country_name,keyword,core,,Canada,Country name. +2.0.0-dev+exp,true,source,source.geo.location,geo_point,core,,"{ ""lon"": -73.614830, ""lat"": 45.505918 }",Longitude and latitude. +2.0.0-dev+exp,true,source,source.geo.name,wildcard,extended,,boston-dc,User-defined description of a location. +2.0.0-dev+exp,true,source,source.geo.region_iso_code,keyword,core,,CA-QC,Region ISO code. +2.0.0-dev+exp,true,source,source.geo.region_name,keyword,core,,Quebec,Region name. +2.0.0-dev+exp,true,source,source.ip,ip,core,,,IP address of the source. +2.0.0-dev+exp,true,source,source.mac,keyword,core,,,MAC address of the source. +2.0.0-dev+exp,true,source,source.nat.ip,ip,extended,,,Source NAT ip +2.0.0-dev+exp,true,source,source.nat.port,long,extended,,,Source NAT port +2.0.0-dev+exp,true,source,source.packets,long,core,,12,Packets sent from the source to the destination. +2.0.0-dev+exp,true,source,source.port,long,core,,,Port of the source. +2.0.0-dev+exp,true,source,source.registered_domain,wildcard,extended,,example.com,"The highest registered source domain, stripped of the subdomain." +2.0.0-dev+exp,true,source,source.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev+exp,true,source,source.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,source,source.user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,source,source.user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,source,source.user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,source,source.user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,source,source.user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,source,source.user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,source,source.user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,source,source.user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,source,source.user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,source,source.user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,source,source.user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,source,source.user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,span,span.id,keyword,extended,,3ff9a8981b7ccd5a,Unique identifier of the span within the scope of its trace. +2.0.0-dev+exp,true,threat,threat.framework,keyword,extended,,MITRE ATT&CK,Threat classification framework. +2.0.0-dev+exp,true,threat,threat.tactic.id,keyword,extended,array,TA0002,Threat tactic id. +2.0.0-dev+exp,true,threat,threat.tactic.name,keyword,extended,array,Execution,Threat tactic. +2.0.0-dev+exp,true,threat,threat.tactic.reference,keyword,extended,array,https://attack.mitre.org/tactics/TA0002/,Threat tactic URL reference. +2.0.0-dev+exp,true,threat,threat.technique.id,keyword,extended,array,T1059,Threat technique id. +2.0.0-dev+exp,true,threat,threat.technique.name,keyword,extended,array,Command and Scripting Interpreter,Threat technique name. +2.0.0-dev+exp,true,threat,threat.technique.name.text,text,extended,,Command and Scripting Interpreter,Threat technique name. +2.0.0-dev+exp,true,threat,threat.technique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/,Threat technique URL reference. +2.0.0-dev+exp,true,threat,threat.technique.subtechnique.id,keyword,extended,array,T1059.001,Threat subtechnique id. +2.0.0-dev+exp,true,threat,threat.technique.subtechnique.name,keyword,extended,array,PowerShell,Threat subtechnique name. +2.0.0-dev+exp,true,threat,threat.technique.subtechnique.name.text,text,extended,,PowerShell,Threat subtechnique name. +2.0.0-dev+exp,true,threat,threat.technique.subtechnique.reference,keyword,extended,array,https://attack.mitre.org/techniques/T1059/001/,Threat subtechnique URL reference. +2.0.0-dev+exp,true,tls,tls.cipher,keyword,extended,,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,String indicating the cipher used during the current connection. +2.0.0-dev+exp,true,tls,tls.client.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the client. +2.0.0-dev+exp,true,tls,tls.client.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the client. +2.0.0-dev+exp,true,tls,tls.client.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev+exp,true,tls,tls.client.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev+exp,true,tls,tls.client.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the client. +2.0.0-dev+exp,true,tls,tls.client.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Distinguished name of subject of the issuer of the x.509 certificate presented by the client. +2.0.0-dev+exp,true,tls,tls.client.ja3,keyword,extended,,d4e5b18d6b55c71272893221c96ba240,A hash that identifies clients based on how they perform an SSL/TLS handshake. +2.0.0-dev+exp,true,tls,tls.client.not_after,date,extended,,2021-01-01T00:00:00.000Z,Date/Time indicating when client certificate is no longer considered valid. +2.0.0-dev+exp,true,tls,tls.client.not_before,date,extended,,1970-01-01T00:00:00.000Z,Date/Time indicating when client certificate is first considered valid. +2.0.0-dev+exp,true,tls,tls.client.server_name,keyword,extended,,www.elastic.co,Hostname the client is trying to connect to. Also called the SNI. +2.0.0-dev+exp,true,tls,tls.client.subject,wildcard,extended,,"CN=myclient, OU=Documentation Team, DC=example, DC=com",Distinguished name of subject of the x.509 certificate presented by the client. +2.0.0-dev+exp,true,tls,tls.client.supported_ciphers,keyword,extended,array,"[""TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"", ""TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384"", ""...""]",Array of ciphers offered by the client during the client hello. +2.0.0-dev+exp,true,tls,tls.client.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.client.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,tls,tls.client.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev+exp,true,tls,tls.client.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev+exp,true,tls,tls.client.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev+exp,true,tls,tls.client.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev+exp,false,tls,tls.client.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev+exp,true,tls,tls.client.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev+exp,true,tls,tls.client.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev+exp,true,tls,tls.client.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev+exp,true,tls,tls.client.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev+exp,true,tls,tls.client.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev+exp,true,tls,tls.client.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev+exp,true,tls,tls.client.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev+exp,true,tls,tls.client.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev+exp,true,tls,tls.client.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev+exp,true,tls,tls.client.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,tls,tls.client.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev+exp,true,tls,tls.curve,keyword,extended,,secp256r1,"String indicating the curve used for the given cipher, when applicable." +2.0.0-dev+exp,true,tls,tls.established,boolean,extended,,,Boolean flag indicating if the TLS negotiation was successful and transitioned to an encrypted tunnel. +2.0.0-dev+exp,true,tls,tls.next_protocol,keyword,extended,,http/1.1,String indicating the protocol being tunneled. +2.0.0-dev+exp,true,tls,tls.resumed,boolean,extended,,,Boolean flag indicating if this TLS connection was resumed from an existing TLS negotiation. +2.0.0-dev+exp,true,tls,tls.server.certificate,keyword,extended,,MII...,PEM-encoded stand-alone certificate offered by the server. +2.0.0-dev+exp,true,tls,tls.server.certificate_chain,keyword,extended,array,"[""MII..."", ""MII...""]",Array of PEM-encoded certificates that make up the certificate chain offered by the server. +2.0.0-dev+exp,true,tls,tls.server.hash.md5,keyword,extended,,0F76C7F2C55BFD7D8E8B8F4BFBF0C9EC,Certificate fingerprint using the MD5 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev+exp,true,tls,tls.server.hash.sha1,keyword,extended,,9E393D93138888D288266C2D915214D1D1CCEB2A,Certificate fingerprint using the SHA1 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev+exp,true,tls,tls.server.hash.sha256,keyword,extended,,0687F666A054EF17A08E2F2162EAB4CBC0D265E1D7875BE74BF3C712CA92DAF0,Certificate fingerprint using the SHA256 digest of DER-encoded version of certificate offered by the server. +2.0.0-dev+exp,true,tls,tls.server.issuer,wildcard,extended,,"CN=Example Root CA, OU=Infrastructure Team, DC=example, DC=com",Subject of the issuer of the x.509 certificate presented by the server. +2.0.0-dev+exp,true,tls,tls.server.ja3s,keyword,extended,,394441ab65754e2207b1e1b457b3641d,A hash that identifies servers based on how they perform an SSL/TLS handshake. +2.0.0-dev+exp,true,tls,tls.server.not_after,date,extended,,2021-01-01T00:00:00.000Z,Timestamp indicating when server certificate is no longer considered valid. +2.0.0-dev+exp,true,tls,tls.server.not_before,date,extended,,1970-01-01T00:00:00.000Z,Timestamp indicating when server certificate is first considered valid. +2.0.0-dev+exp,true,tls,tls.server.subject,wildcard,extended,,"CN=www.example.com, OU=Infrastructure Team, DC=example, DC=com",Subject of the x.509 certificate presented by the server. +2.0.0-dev+exp,true,tls,tls.server.x509.alternative_names,keyword,extended,array,*.elastic.co,List of subject alternative names (SAN). +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.common_name,keyword,extended,array,Example SHA2 High Assurance Server CA,List of common name (CN) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.country,keyword,extended,array,US,List of country (C) codes +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.distinguished_name,wildcard,extended,,"C=US, O=Example Inc, OU=www.example.com, CN=Example SHA2 High Assurance Server CA",Distinguished name (DN) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.locality,keyword,extended,array,Mountain View,List of locality names (L) +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.organization,keyword,extended,array,Example Inc,List of organizations (O) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.organizational_unit,keyword,extended,array,www.example.com,List of organizational units (OU) of issuing certificate authority. +2.0.0-dev+exp,true,tls,tls.server.x509.issuer.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,tls,tls.server.x509.not_after,date,extended,,2020-07-16 03:15:39+00:00,Time at which the certificate is no longer considered valid. +2.0.0-dev+exp,true,tls,tls.server.x509.not_before,date,extended,,2019-08-16 01:40:25+00:00,Time at which the certificate is first considered valid. +2.0.0-dev+exp,true,tls,tls.server.x509.public_key_algorithm,keyword,extended,,RSA,Algorithm used to generate the public key. +2.0.0-dev+exp,true,tls,tls.server.x509.public_key_curve,keyword,extended,,nistp521,The curve used by the elliptic curve public key algorithm. This is algorithm specific. +2.0.0-dev+exp,false,tls,tls.server.x509.public_key_exponent,long,extended,,65537,Exponent used to derive the public key. This is algorithm specific. +2.0.0-dev+exp,true,tls,tls.server.x509.public_key_size,long,extended,,2048,The size of the public key space in bits. +2.0.0-dev+exp,true,tls,tls.server.x509.serial_number,keyword,extended,,55FBB9C7DEBF09809D12CCAA,Unique serial number issued by the certificate authority. +2.0.0-dev+exp,true,tls,tls.server.x509.signature_algorithm,keyword,extended,,SHA256-RSA,Identifier for certificate signature algorithm. +2.0.0-dev+exp,true,tls,tls.server.x509.subject.common_name,keyword,extended,array,shared.global.example.net,List of common names (CN) of subject. +2.0.0-dev+exp,true,tls,tls.server.x509.subject.country,keyword,extended,array,US,List of country (C) code +2.0.0-dev+exp,true,tls,tls.server.x509.subject.distinguished_name,wildcard,extended,,"C=US, ST=California, L=San Francisco, O=Example, Inc., CN=shared.global.example.net",Distinguished name (DN) of the certificate subject entity. +2.0.0-dev+exp,true,tls,tls.server.x509.subject.locality,keyword,extended,array,San Francisco,List of locality names (L) +2.0.0-dev+exp,true,tls,tls.server.x509.subject.organization,keyword,extended,array,"Example, Inc.",List of organizations (O) of subject. +2.0.0-dev+exp,true,tls,tls.server.x509.subject.organizational_unit,keyword,extended,array,,List of organizational units (OU) of subject. +2.0.0-dev+exp,true,tls,tls.server.x509.subject.state_or_province,keyword,extended,array,California,"List of state or province names (ST, S, or P)" +2.0.0-dev+exp,true,tls,tls.server.x509.version_number,keyword,extended,,3,Version of x509 format. +2.0.0-dev+exp,true,tls,tls.version,keyword,extended,,1.2,Numeric part of the version parsed from the original string. +2.0.0-dev+exp,true,tls,tls.version_protocol,keyword,extended,,tls,Normalized lowercase protocol name parsed from original string. +2.0.0-dev+exp,true,trace,trace.id,keyword,extended,,4bf92f3577b34da6a3ce929d0e0e4736,Unique identifier of the trace. +2.0.0-dev+exp,true,transaction,transaction.id,keyword,extended,,00f067aa0ba902b7,Unique identifier of the transaction within the scope of its trace. +2.0.0-dev+exp,true,url,url.domain,wildcard,extended,,www.elastic.co,Domain of the url. +2.0.0-dev+exp,true,url,url.extension,keyword,extended,,png,File extension from the original request url. +2.0.0-dev+exp,true,url,url.fragment,keyword,extended,,,Portion of the url after the `#`. +2.0.0-dev+exp,true,url,url.full,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +2.0.0-dev+exp,true,url,url.full.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top,Full unparsed URL. +2.0.0-dev+exp,true,url,url.original,wildcard,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +2.0.0-dev+exp,true,url,url.original.text,text,extended,,https://www.elastic.co:443/search?q=elasticsearch#top or /search?q=elasticsearch,Unmodified original url as seen in the event source. +2.0.0-dev+exp,true,url,url.password,keyword,extended,,,Password of the request. +2.0.0-dev+exp,true,url,url.path,wildcard,extended,,,"Path of the request, such as ""/search""." +2.0.0-dev+exp,true,url,url.port,long,extended,,443,"Port of the request, such as 443." +2.0.0-dev+exp,true,url,url.query,keyword,extended,,,Query string of the request. +2.0.0-dev+exp,true,url,url.registered_domain,wildcard,extended,,example.com,"The highest registered url domain, stripped of the subdomain." +2.0.0-dev+exp,true,url,url.scheme,keyword,extended,,https,Scheme of the url. +2.0.0-dev+exp,true,url,url.subdomain,keyword,extended,,east,The subdomain of the domain. +2.0.0-dev+exp,true,url,url.top_level_domain,keyword,extended,,co.uk,"The effective top level domain (com, org, net, co.uk)." +2.0.0-dev+exp,true,url,url.username,keyword,extended,,,Username of the request. +2.0.0-dev+exp,true,user,user.changes.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,user,user.changes.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,user,user.changes.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.changes.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.changes.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,user,user.changes.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,user,user.changes.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,user,user.changes.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,user,user.changes.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,user,user.changes.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.changes.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.changes.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,user,user.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,user,user.effective.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,user,user.effective.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,user,user.effective.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.effective.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.effective.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,user,user.effective.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,user,user.effective.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,user,user.effective.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,user,user.effective.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,user,user.effective.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.effective.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.effective.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,user,user.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,user,user.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,user,user.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,user,user.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,user,user.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,user,user.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,user,user.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,user,user.target.domain,keyword,extended,,,Name of the directory the user is a member of. +2.0.0-dev+exp,true,user,user.target.email,wildcard,extended,,,User email address. +2.0.0-dev+exp,true,user,user.target.full_name,wildcard,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.target.full_name.text,text,extended,,Albert Einstein,"User's full name, if available." +2.0.0-dev+exp,true,user,user.target.group.domain,keyword,extended,,,Name of the directory the group is a member of. +2.0.0-dev+exp,true,user,user.target.group.id,keyword,extended,,,Unique identifier for the group on the system/platform. +2.0.0-dev+exp,true,user,user.target.group.name,keyword,extended,,,Name of the group. +2.0.0-dev+exp,true,user,user.target.hash,keyword,extended,,,Unique user hash to correlate information for a user in anonymized form. +2.0.0-dev+exp,true,user,user.target.id,keyword,core,,,Unique identifier of the user. +2.0.0-dev+exp,true,user,user.target.name,wildcard,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.target.name.text,text,core,,albert,Short name or login of the user. +2.0.0-dev+exp,true,user,user.target.roles,keyword,extended,array,"[""kibana_admin"", ""reporting_user""]",Array of user roles at the time of the event. +2.0.0-dev+exp,true,user_agent,user_agent.device.name,keyword,extended,,iPhone,Name of the device. +2.0.0-dev+exp,true,user_agent,user_agent.name,keyword,extended,,Safari,Name of the user agent. +2.0.0-dev+exp,true,user_agent,user_agent.original,wildcard,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +2.0.0-dev+exp,true,user_agent,user_agent.original.text,text,extended,,"Mozilla/5.0 (iPhone; CPU iPhone OS 12_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1",Unparsed user_agent string. +2.0.0-dev+exp,true,user_agent,user_agent.os.family,keyword,extended,,debian,"OS family (such as redhat, debian, freebsd, windows)." +2.0.0-dev+exp,true,user_agent,user_agent.os.full,wildcard,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,user_agent,user_agent.os.full.text,text,extended,,Mac OS Mojave,"Operating system name, including the version or code name." +2.0.0-dev+exp,true,user_agent,user_agent.os.kernel,keyword,extended,,4.4.0-112-generic,Operating system kernel version as a raw string. +2.0.0-dev+exp,true,user_agent,user_agent.os.name,wildcard,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,user_agent,user_agent.os.name.text,text,extended,,Mac OS X,"Operating system name, without the version." +2.0.0-dev+exp,true,user_agent,user_agent.os.platform,keyword,extended,,darwin,"Operating system platform (such centos, ubuntu, windows)." +2.0.0-dev+exp,true,user_agent,user_agent.os.version,keyword,extended,,10.14.1,Operating system version as a raw string. +2.0.0-dev+exp,true,user_agent,user_agent.version,keyword,extended,,12.0,Version of the user agent. +2.0.0-dev+exp,true,vulnerability,vulnerability.category,keyword,extended,array,"[""Firewall""]",Category of a vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.classification,keyword,extended,,CVSS,Classification of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.description,keyword,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.description.text,text,extended,,"In macOS before 2.12.6, there is a vulnerability in the RPC...",Description of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.enumeration,keyword,extended,,CVE,Identifier of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.id,keyword,extended,,CVE-2019-00001,ID of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.reference,keyword,extended,,https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6111,Reference of the vulnerability. +2.0.0-dev+exp,true,vulnerability,vulnerability.report_id,keyword,extended,,20191018.0001,Scan identification number. +2.0.0-dev+exp,true,vulnerability,vulnerability.scanner.vendor,keyword,extended,,Tenable,Name of the scanner vendor. +2.0.0-dev+exp,true,vulnerability,vulnerability.score.base,float,extended,,5.5,Vulnerability Base score. +2.0.0-dev+exp,true,vulnerability,vulnerability.score.environmental,float,extended,,5.5,Vulnerability Environmental score. +2.0.0-dev+exp,true,vulnerability,vulnerability.score.temporal,float,extended,,,Vulnerability Temporal score. +2.0.0-dev+exp,true,vulnerability,vulnerability.score.version,keyword,extended,,2.0,CVSS version. +2.0.0-dev+exp,true,vulnerability,vulnerability.severity,keyword,extended,,Critical,Severity of the vulnerability. diff --git a/experimental/generated/elasticsearch/7/template.json b/experimental/generated/elasticsearch/7/template.json index 5844768b69..fcfc663168 100644 --- a/experimental/generated/elasticsearch/7/template.json +++ b/experimental/generated/elasticsearch/7/template.json @@ -4,7 +4,7 @@ ], "mappings": { "_meta": { - "version": "2.0.0-dev" + "version": "2.0.0-dev+exp" }, "date_detection": false, "dynamic_templates": [ diff --git a/scripts/generator.py b/scripts/generator.py index 92b877499c..7e009d5fad 100644 --- a/scripts/generator.py +++ b/scripts/generator.py @@ -40,6 +40,10 @@ def main(): # statements like this after any step of interest. # ecs_helpers.yaml_dump('ecs.yml', fields) + # Detect usage of experimental changes to tweak artifact version label + if loader.EXPERIMENTAL_SCHEMA_DIR in args.include: + ecs_version += "+exp" + fields = loader.load_schemas(ref=args.ref, included_files=args.include) if args.oss: oss.fallback(fields) diff --git a/scripts/schema/loader.py b/scripts/schema/loader.py index e953834d97..07477551af 100644 --- a/scripts/schema/loader.py +++ b/scripts/schema/loader.py @@ -42,6 +42,9 @@ # Examples of this are 'dns.answers', 'observer.egress'. +EXPERIMENTAL_SCHEMA_DIR = 'experimental/schemas' + + def load_schemas(ref=None, included_files=[]): """Loads ECS and custom schemas. They are returned deeply nested and merged.""" # ECS fields (from git ref or not) @@ -51,8 +54,6 @@ def load_schemas(ref=None, included_files=[]): schema_files_raw = load_schema_files(ecs_helpers.ecs_files()) fields = deep_nesting_representation(schema_files_raw) - EXPERIMENTAL_SCHEMA_DIR = 'experimental/schemas' - # Custom additional files if included_files and len(included_files) > 0: print('Loading user defined schemas: {0}'.format(included_files))