Releases: elastic/ecs
ECS 1.12.2
ECS 1.12.1
ECS 1.12.0
The following RFCs have advanced as a part of this release:
Stage 3 (GA)
- RFC 0018 - extend
threat.*field set - RFC 0001 - wildcard field migration
- RFC 0023 - migrate
texttomatch_only_texttype
Stage 2 (beta)
Stage 1 (experimental)
There's also been a couple of new field additions in 1.12: file.fork_name, service.address, process.end, code_signature.digest_algorithm and code_signature.timestamp.
Lastly, a couple tooling and documentation improvements. There now exists support for multi-field type fallback to better support ES 6 types as well as the new match_only_text type. And finally, we updated examples within user to better clarify things.
Changelog
Schema Changes
Bugfixes
- Updating
hashorder to correct nesting. #1603 - Removing incorrect
hashreuses. #1604 - Updating
peorder to correct nesting. #1605 - Removing incorrect
pereuses. #1606 - Correcting
enrichmentsto anarraytype. #1608
Added
- Added
file.fork_namefield. #1288 - Added
service.addressfield. #1537 - Added
service.environmentas a beta field. #1541 - Added
process.endfield. #1544 - Added container metric fields into experimental schema. #1546
- Add
code_signature.digest_algorithmandcode_signature.timestampfields. #1557 - Add
email.*field set in the experimental fields. #1569
Improvements
- Beta migration on some
keywordfields towildcard. #1517 - Promote
threat.software.*andthreat.group.*fields to GA. #1540 - Update
user.nameanduser.idexamples for clarity. #1566 - Beta migration of
textand.textmulti-fields tomatch_only_text. #1532, #1571
Tooling and Artifact Changes
Added
- Support ES 6.x type fallback for
match_only_textfield types. #1528
Bugfixes
- Prevent failure if no files need to be deleted
find | xargs rm. #1588
Improvements
- Document field type family interoperability in FAQ. #1591
ECS 1.11.0
The following RFCs have advanced as part of this release:
Stage 3 (GA)
Stage 2 (beta)
- RFC 0008 - Threat indicator fields
- RFC 0015 -
elffile fields - RFC 0018 - Extend the
threat.*field set withthreat.software.*andthreat.group.*fields - RFC 0021 - Threat enrichment
Stage 1 (experimental)
The event.agent_id_status field is also new in 1.11 to reflect the status of the agent.id verification performed by a receiving system or data pipeline.
Lastly, many tooling and documentation improvements, including the --exclude flag. The --exclude flag adds the ability to remove individual fields from the schema. More detail is available in the usage doc.
Changelog
Schema Changes
Added
elf.*field set added as beta. #1410- Remove
betafromorchestratorfield set. #1417 - Extend
threat.*field set beta. #1438 - Added
event.agent_id_statusfield. #1454 process.targetandprocess.target.parentadded to experimental schema. #1467- Threat indicator fields progress to beta stage. #1471, #1504
threat.enrichmentsbeta fields. #1478, #1504
Improvements
- Fix ecs GitHub repo link source branch #1393
- Add --exclude flag to Generator to support field removal testing #1411
- Explicitly include user identifiers in
relater.userdescription. #1420 - Improve descriptions for
cloud.regionandcloud.availabilityfields. #1452 - Clarify
event.kinddescriptions foralertandsignal. #1548
Deprecated
- Note deprecation of the
host.user.*field reuse. #1422 - Note deprecation of
log.originalsuperseded byevent.original#1469
Tooling and Artifact Changes
Bugfixes
- Remove
ignore_abovewhenindex: falseanddoc_values: false. #1483 - Ensure
doc_valuesis carried into Beats artifacts. #1488
Added
- Support
match_only_textdata type in Go code generator. #1418 - Support for multi-level, self-nestings. #1459
betaattribute now supported on categorization allowed values. #1511
Improvements
ECS 1.10.0
A handful of new additions from the ECS RFC process are included in this release:
- The host metrics RFC has advanced to Finished status with host metrics fields becoming GA.
- The orchestrator fieldset RFC has advanced to Stage 3, and the fieldset has been released for beta.
- The
data_streamfields moved to Stage 2, and are released for beta. - We are extending the existing `threat.* fields, which are released as experimental.
In addition to RFC proposed changes, ECS 1.10.0 also adds some documentation updates, including the ability to add a short_override to field reuses for a custom description.
Finally, there is now support for flattened and nested types in the Go code generator script.
Changelog
Schema Changes
Added
- Add
data_streamfieldset. #1307 - Add
orchestratorfieldset as beta fields. #1326 - Extend
threat.*experimental fields with proposed changes from RFC 0018. #1344, #1351 - Allow custom descriptions for self-nesting reuses via
short_override#1366
Improvements
- Updated descriptions to use Elastic Security #1305
- Host metrics fields from RFC 0005 are now GA. #1319
- Adjustments to the field set "usage" docs #1345
- Adjustments to the sidebar naming convention for usage and examples docs #1354
- Update
user.*field reuse descriptions. #1382
Tooling and Artifact Changes
Bugfixes
- Correcting fieldset name capitalization for generated ES template #1323
Improvements
ECS 1.9.0
Several additions introduced from the ECS RFC process are included in this release:
- The multiple users proposal has advanced to
Finishedstatus withuser.changes.*,user.effective.*, anduser.target.*field reuses becoming GA. - Host metrics fields are now beta.
- The
threat.indicatorfields,elf.*fields,pe.*extensions, anddata_stream.*fieldset are now in the experimental ECS schema.
A new section has been added to the ECS event categorization documentation. Real-world example events are categorized to demonstrate using the event categorization fields to group and identify similar events from multiple data sources.
In addition to RFC proposed changes, ECS 1.9.0 also adds:
http.request.idcloud.service.namehash.ssdeepcode_signature.team_idandcode_signature.signing_id- Additional fields to the
geo.*fieldset:geo.timezone,geo.postal_code,geo.continent_code
Finally, *.mac field descriptions now suggest normalizing MAC address values to the RFC7042 format.
Changelog
Schema Changes
Added
- Added
hash.ssdeep. #1169 - Added
cloud.service.name. #1204 - Added
http.request.id. #1208 data_stream.*fieldset introduced in experimental schema and artifacts. #1215- Added
geo.timezone,geo.postal_code, andgeo.continent_code. #1229 - Added
betahost metrics fields. #1248 - Added
code_signature.team_id,code_signature.signing_id. #1249 - Extended
pefields added to experimental schema. #1256 - Add
elffieldset to experimental schema. #1261 - Add
threat.indicatorfields to experimental schema. #1268
Improvements
- Include formatting guidance and examples for MAC address fields. #456
- New section in ECS detailing event categorization fields usage. #1242
user.changes.*,user.effective.*, anduser.target.*field reuses are GA. #1271
Tooling and Artifact Changes
Improvements
ECS 1.8.0
In this release, two ECS RFCs are advancing. The multiple users in an event RFC proposed field reuses now appear in the ECS documentation as beta. The host metrics fields are also advancing and are available in the experimental schema and artifacts.
Accompanying the multiple user changes, the user.* fieldset adds ECS' first usage doc. The user usage page contains guidance on categorization, user ids, field reuse, and mapping examples.
The event categorization fields, with the initial set of allowed values, were introduced as beta in ECS 1.4.0. Over the past several ECS released, we've iterated and further fleshed out these fields and values. We're excited to announce that the event categorization fields are now generally available!
In addition to the event categorizations fields becoming GA, two additional event.category allowed values have also been introduced: registry and session.
A new field, os.type, is intended to ease filtering for Windows, Unix, Linux, and macOS events.
Finally, a component template and composable templates (per fieldset) have been added as generated artifacts. The legacy index templates for Elasticsearch 6.x and 7.x are still being maintained. More details covered here.
Changelog
Schema Changes
Bugfixes
- Clean up
event.referencedescription. #1181 - Go code generator fails if
scaled_floattype is used. #1250
Added
- Added
event.category"registry". #1040 - Added
event.category"session". #1049 - Added usage documentation for
userfields. #1066 - Added
userfields atuser.effective.*,user.target.*anduser.changes.*. #1066 - Added
os.type. #1111
Improvements
- Event categorization fields GA. #1067
- Note
[and]bracket characters may enclose a literal IPv6 address when populatingurl.domain. #1131 - Reinforce the exclusion of the leading dot from
url.extension. #1151
Deprecated
- Deprecated
host.user.*fields for removal at the next major. #1066
Tooling and Artifact Changes
Bugfixes
tracingfields should be at root of Beatsfields.ecs.ymlartifacts. #1164
Added
- Added the
pathkey when type isalias, to support the alias field type. #877 - Added support for
scaled_float's mandatory parameterscaling_factor. #1042 - Added ability for --oss flag to fall back
constant_keywordtokeyword. #1046 - Added support in the generated Go source go for
wildcard,version, andconstant_keyworddata types. #1050 - Added support for marking fields, field sets, or field reuse as beta in the documentation. #1051
- Added support for
constant_keyword's optional parametervalue. #1112 - Added component templates for ECS field sets. #1156, #1186, #1191
- Added functionality for merging custom and core multi-fields. #982
Improvements
ECS 1.7.0
Experimental Changes
A few months ago, we introduced the RFC process. This process is meant to fully vet big additions or changes to ECS. A key aspect of this process is that proposals advance in stages. Each stage represents the vetting and maturity of the proposal.
We won’t go over the process in detail here, but one of its key aspects is that accepted “stage 2” proposals appear in “experimental” ECS artifacts. They don’t yet appear officially in ECS documentation. Proposals that reach “stage 3” are the ones that will officially appear in ECS documentation.
ECS 1.7 is the first release that includes RFCs that have reached stage 2 / experimental changes. A new directory has therefore been added, where all the usual generated artifacts are published including the experimental changes. This is at experimental/generated.
This release includes experimental changes from two RFCs reaching stage 2:
- Replace the
keywordtype on many existing ECS fields with the newwildcardtype. - Adding more places where user fields can be nested, in order to capture privilege escalations & demotions as well as IAM. These experimental nestings are
user.effective.*,user.target.*, anduser.changes.*.
“Normal” Changes
Contrary to the new experimental changes described above, the following changes are reflected in the documentation.
Two new fields are introduced: http.[request|response].mime_type/ and threat.technique.subtechnique.
Both the network.direction and event.category fields add support for additional allowed values.
The ECS generator script adds two new arguments, --oss and --strict. See usage for more details and examples.
Lastly, we have changed the index pattern of the sample Elasticsearch template from ecs-* to try-ecs-* to avoid conflicting with Logstash' template when run in ECS compatibility mode.
Changelog
Schema Changes
Bugfixes
- The
protocolallowed value underevent.typeshould not have theexpected_event_typesdefined. #964 - Clarify the definition of
file.extension(no dots). #1016
Added
- Added Mime Type fields to HTTP request and response. #944
- Added network directions ingress and egress. #945
- Added
threat.technique.subtechniqueto capture MITRE ATT&CK® subtechniques. #951 - Added
configurationas an allowedevent.category. #963 - Added a new directory with experimental artifacts, which includes all changes
from RFCs that have reached stage 2. #993, #1053, #1115, #1117, #1118
Improvements
- Expanded field set definitions for
source.*anddestination.*. #967 - Provided better guidance for mapping network events. #969
- Added the field
.subdomainunderclient,destination,server,source
andurl, to match its presence atdns.question.subdomain. #981 - Clarified ambiguity in guidance on how to use x509 fields for connections with
only one certificate. #1114
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
asvalue for their destination. #960 - Experimental artifacts failed to install due to
event.originalindex setting. #1053
Added
- Introduced
--strictflag to perform stricter schema validation when running the generator script. #937 - Added check under
--strictthat ensures composite types in example fields are quoted. #966 - Added
ignore_aboveandnormalizersupport for keyword multi-fields. #971 - Added
--ossflag for users who want to generate ECS templates for use on OSS clusters. #991
Improvements
ECS 1.6.0
This release adds the x509.* field set to capture common core fields for x509 certificates. Other notable schema changes include the introduction of event.reason , adding span.id to the transaction.* field set, and new related.* fields. Please see the full schema change details below.
Before this release, there was no way to reuse field sets as different names inside themselves. Now nesting fields within themselves, such as process => process.parent, and defining nested sets using a different name are both available.
Did you know you can use the Python scripts in the ECS repository to generate Elasticsearch templates containing the only ECS fields you need + your custom fields? A lot of the changes in the "tooling and artifact" changelog below are about how we improved this experience. However you can jump directly to the new usage documentation to learn how to do this.
Finally in previous releases, reusable fields not expected at the root of documents were accidentally defined at the root in some generated artifacts. This incorrect behavior is fixed in this release.
Schema Changes
Bugfixes
- Field
registry.data.stringsshould have been marked as an array field. #790
Added
- Added
x509.*field set. #762 - Add architecture and imphash for PE field set. #763
- Added
agent.build.*for extended agent version information. #764 - Added
log.file.pathto capture the log file an event came from. #802 - Added more account and project cloud metadata. #816
- Added missing field reuse of
peatprocess.parent.pe#868 - Added
span.idto the tracing fieldset, for additional log correlation #882 - Added
event.reasonfor the reason why an event's outcome or action was taken. #907 - Added
related.hoststo capture all hostnames and host identifiers on an event. #913 - Added
user.rolesto capture a list of role names that apply to the user. #917
Improvements
- Removed misleading pluralization in the description of
user.id, it should
contain one ID, not many. #801 - Clarified misleading wording about multiple IPs in src/dst or cli/srv. #804
- Improved verbiage about the MITRE ATT&CK® framework. #866
- Removed the default
object_type=keywordthat was being applied toobjectfields.
This attribute is Beats-specific. It's still supported, but needs to be set explicitly
on a case by case basis now. This default being removed affectsdns.answers,
log.syslog,network.inner,observer.egress, andobserver.ingress. #871 - Improved attribute
dashed_nameingenerated/ecs/*.ymlto also
replace@with-. #871 - Updated several URLs in the documentation with "example.com" domain. #910
Deprecated
- Deprecate guidance to lowercase
http.request.method#840
Tooling and Artifact Changes
Breaking changes
- Removed field definitions at the root of documents for fieldsets that
hadreusable.top_level:false. This PR affectsecs_flat.yml, the csv file
and the sample Elasticsearch templates. #495, #813 - Removed the
orderattribute from theecs_nested.ymlandecs_flat.ymlfiles. #811 - In
ecs_nested.yml, the array of strings that used to be inreusable.expected
has been replaced by an array of objects with 3 keys: 'as', 'at' and 'full'. #864 - The subset format now requires
nameandfieldskeys at the top level. #873
Bugfixes
- Subsets are created after duplicating reusable fields now so subsets can
be applied to each reused instance independently. #753 - Quoted the example for
labelsto avoid YAML interpreting it, and having
slightly different results in different situations. #782 - Fix incorrect listing of where field sets are nested in asciidoc,
when they are nested deep. #784 - Allow beats output to be generated when using
--includeor--subsetflags. #814 - Field parameter
indexis now correctly populated in the Beats field definition file. #824
Improvements
- Add support for reusing official fieldsets in custom schemas. #751
- Add full path names to reused fieldsets in
nestingsarray inecs_nested.yml. #803 - Allow shorthand notation for including all subfields in subsets. #805
- Add support for Elasticsearch
enabledfield parameter. #824 - Add
refoption to generator allowing schemas to be built for a specific ECS version. #851 - Add
template-settingsandmapping-settingsoptions to allow override of defaults in generated ES templates. #856 - When overriding ECS field sets via the
--includeflag, it's no longer necessary
to duplicate the field set's mandatory attributes. The customizations are merged
before validation. #864 - Add ability to nest field sets as another name. #864
- Add ability to nest field sets within themselves (e.g.
process=>process.parent). #864 - New attribute
reused_hereis added inecs_nested.yml. It obsoletes the
previous attributenestings, and is able to fully capture details of other
field sets reused under this one. #864 - When chained reuses are needed (e.g.
group=>user, thenuser=> many places),
it's now necessary to force the order with new attributereusable.order. This
attribute is otherwise optional. It's currently only needed forgroup. #864 - There's a new representation of ECS at
generated/ecs/ecs.yml, which is a deeply nested
representation of the fields. This file is not in git, as it's only meant for
developers working on the ECS tools. #864 - Jinja2 templates now define the doc structure for the AsciiDoc generator. #865
- Intermediate
ecs_flat.ymlandecs_nested.ymlfiles are now generated for each individual subset,
in addition to the intermediate files generated for the combined subset. #873
Deprecated
- In
ecs_nested.yml, we're deprecating the attributenestings. It will be
removed in a future release. The deprecatednestingsattribute was an array of
flat field names describing where fields are nested within the field set.
This is replaced with the attributereused_here, which is an array of objects.
The new format still lists where the fields are nested via the same flat field name,
but also specifies additional information about each field reuse. #864
ECS 1.5.0
In this release, we continue fleshing out categorization by introducing the "network" and "iam" categories, with related event types.
We're adding new field sets: "dll", "pe", "code_signature", "interface" & "vlan". We're also adding a few fields here and there (check out the details below).
Implementers consuming ECS artifacts like generated/ecs/*.yml programmatically will be happy to know that we now clearly identify which fields are expected to contain an array of values. Shout-out to contributors on the ecs-logging libraries for raising this 👋🏼.
Finally, starting with ECS 1.5.0, the project is using Python 3.7.
Schema Changes
Added
- Added
dll.*fields #679 - Added
related.hashto keep track of all hashes seen on an event. #711 - Added fieldset for PE metadata. #731
- Added
code_signaturefieldset. #733 - Added missing
hashfields atprocess.parent.hash.*. #739 - Added globally unique identifier
entity_idtoprocessandprocess.parent. #747 - Added interface, vlan, observer zone fields #752
- Added
rule.author,rule.licensefields #754 - Added iam value for
event.categoryand three related values forevent.type. #756 - Added fields
event.referenceandevent.urlto hold link to additional event info/actions. #757 - Added
file.mime_typeto include MIME type information on file structures #760 - Added
event.categoryvalue of network and associatedevent.typevalues. #761
Improvements
- Temporary workaround for Beats templates'
default_fieldgrowing too big. #687 - Identify which fields should contain arrays of values, rather than scalar values. #727, #661
- Clarified examples and definitions regarding vulnerabilities. #758
- Updated definition of
event.outcomebased on community feedback. #759
Tooling and Artifact Changes
Improvements
- ECS scripts now use Python 3.6+. #674
- schema_reader.py now reliably supports chaining reusable fieldsets together. #722
- Allow the artifact generator to consider and output only a subset of fields. #737
- Add support for reusing fields in places other than the top level of the destination fieldset. #739
- Add support for specifying the directory to write the generated files. #748