- 
                Notifications
    
You must be signed in to change notification settings  - Fork 449
 
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 
useras the user initiating the action in an event, rather than nesting both sides. This way searching foruser.name:bobwould 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.namesystematically in all sources, then searching forrelated.user.name:bob. 
Naming ideas
Please comment with additional naming ideas.
user&affected.useruser&target.usersubject.user&target.user(like Windows)user&assumed.user(privilege escalation)- ... (your suggestions)