Skip to content

Compatible? Compliant? How to discuss ECS-ness of an integration #98

Closed
@MikePaquette

Description

@MikePaquette

This is a discussion regarding how to describe integrations that are designed to work with ECS, and how to ensure that we realize value of ECS in re-usable analysis content. Would love to get some feedback and thoughts.

We've discussed the idea of defining a certain set of ECS fields that are common, generalized fields that are likely to be used by analysis content (searches, visualizations, dashboards, alerts, machine learning jobs, reports) across use cases. Ideally, any analysis content designed to operate on these fields should work properly on data from any relevant source. For now, let us call them "ECS-Core" fields.

What I've seen so far from folks that have tried to map their fields to ECS is that they start with their existing set of event fields, and they try to find the appropriate ECS field name for each. This is the basic and necessary step in mapping to ECS, but I think it is insufficient. Call it Step 1.

I think we also need to implement a new step 2, where we start by walking through the list of all ECS-Core fields, and consider "how can I best populate these fields with the data I have available (even if I've mapped all my fields in step 1)? Call this Step 2.

The reason for requiring Step 2 is to ensure reusability of ECS analysis content. If I build a dashboard that uses ECS-core fields, I expect my dashboard to be useful on any source implementation that contains relevant data. For example, two proposed ECS-Core fields are inbound_bytes and inbound packets. If I build an enterprise visualization that uses those ECS-Core fields, I would expect that an ECS bro ingestion config would populate them. Same for an ECS netflow implementation. You can see that if the bro config followed only Step 1 above, my ECS dashboard would not work with the bro implementation even though both were built with ECS in mind. (Because bro conn.log does not have default fields that would map to inbound_bytes and inbound packets. Only by taking step 2 and figuring out how to populate inbound_bytes and inbound packets would the integration work with my dashboard.

We can then define two levels of ECS-ness:

  1. All existing event fields are mapped to ECS-Core fields. (Perhaps ECS-Compatible)
  2. In addition, as many ECS-Core fields as practical are populated, even if that means duplication, or adding metadata, or deriving values via manipulation and math. (Perhaps ECS-Compliant)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions