Description
This is a more generic application of modeling either "source/target" style events or "diff" events that I'm spinning off from #589
As I initially mentioned (#589 (comment)). There are a number of things that ECS should support modeling including things like:
- setuid/setgid operations
- file modification events (i.e. renames, permissions)
- IPC calls
- network requests/flows (current use of
source
anddestination
) - user modifications
- process execs
- registry modifications
- windows source/target audit log info
Overall these more or less fall into two categories:
- Modelling communication between two like things (network connections, IPCs, windows audit log)
- Modification events
Currently the way ECS has started to approach this is to make fields that are specific to each of these domains, i.e. source
/destination
are currently for network modeling only, and then there's also client
/server
I'm advocating for adopting a more generic field set that allows you to do generic source/target or diff modeling which would essentially allow you to embed any other field set in it.
For example--something like origin
and target
(sad that source
/destination
is already taken):
For file modifications:
origin.file.name = "foo"
target.file.name = "bar"
For process execs:
origin.process.path = "foo"
target.process.path = "bar"
For network requests (slightly difficult because of the lack of port
info):
origin.host.ip = "foo"
target.host.ip = "bar"
For user modification (maybe by another user baz
who did the modification?):
user.name = "baz"
origin.user.name = "foo"
target.user.name = "bar"
Thoughts?