Description
We need to flesh out support for multiple users in an event to ECS, when there is a semantic relationship between them. Here are some use cases (please comment if you see additional use cases):
- User A manages User B (create, modify, delete)
- Directory User A logs into a machine as User B
- User A escalates privileges / assumes identity of User B
This has been discussed a bit in the past in #234 , but no concrete plans were made at the time.
ECS currently supports source.user
and destination.user
, which may be enough to satisfy the requirements for no 2 above. However since source
and destination
are both designed to represent each side of a network connection, the semantics may be problematic when trying to use source.user
and destination.user
for no 1 and 3, as these can be purely local events.
Questions
Has anyone used source.user
and destination.user
in ECS to model these use cases? If so, did this work well, and are there edge cases where it doesn't work as well?
Should we try to model all cases with one naming recommendation for all use cases? As an example, should we always use user
& affected.user
. Or should we adjust the naming depending on semantics? E.g. 1) user
& affected.user
, 2) source.user
& destination.user
, and a different way for 3).
Points to consider
- Some schemas use the word "target" to describe the affected user. However the word also has the connotation of sounding like a victim, or the goal of an investigation. It may be a good idea to avoid using this word if we can.
- It may be a good idea to define the non-nested
user
as the user initiating the action in an event, rather than nesting both sides. This way searching foruser.name:bob
would return any events where "bob" was doing something. Searching for events affecting "bob" would require searching for the more qualified field name, like e.g.affected.user.name:bob
. Pivoting to find anything related to "bob" can somewhat be done in Kibana by searching for*.name:bob
(not supported via the ES API), or could be done by populatingrelated.user.name
systematically in all sources, then searching forrelated.user.name:bob
.
Naming ideas
Please comment with additional naming ideas.
user
&affected.user
user
&target.user
subject.user
&target.user
(like Windows)user
&assumed.user
(privilege escalation)- ... (your suggestions)