Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Session Fields #879

Merged
merged 10 commits into from
Jul 30, 2020
Merged

[RFC] Session Fields #879

merged 10 commits into from
Jul 30, 2020

Conversation

dainperkins
Copy link
Contributor

New RFC for Session fields provided.

New RFC for Session fields provided.
added PR # 879 to Changelog.next.md
Copy link
Member

@ebeahan ebeahan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @dainperkins for writing this up!

Outside of the outstanding CHANGELOG question, I noticed a few minor editorial suggestions on my first read-through.

CHANGELOG.next.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
@epixa epixa changed the title New RFC - Session Fields [RFC] Session Fields Jul 8, 2020
@ebeahan ebeahan added the review label Jul 8, 2020
Copy link
Member

@ebeahan ebeahan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took another editorial pass to clean up the formatting a bit more for reviewing.

rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
ebeahan and others added 3 commits July 9, 2020 14:46
Applying minor spelling and formatting edits - no changes to content
@ebeahan
Copy link
Member

ebeahan commented Jul 9, 2020

@dainperkins I pushed a couple of changes to clean up the formatting a bit. No content changes 😄

@ebeahan
Copy link
Member

ebeahan commented Jul 13, 2020

Phase 0 (Strawperson) Criteria:

  • Discuss with domain or subject matter experts the utility of these changes
  • Discuss with ECS team whether these changes seem appropriate for ECS

@ebeahan
Copy link
Member

ebeahan commented Jul 14, 2020

Again thanks @dainperkins for submitting. I believe adding session as a top-level field set does address a current gap in ECS.

The documentation will need to be clear that this field set is intended for; I could see possible end-user confusion over whether session is intended for network session (which the client/server field sets are intended) vs. login sessions. I think there's also good opportunity with session to consider field reuse possibilities (e.g. nesting user).

@ebeahan
Copy link
Member

ebeahan commented Jul 14, 2020

Ping @webmat @MikePaquette @jamiehynds @jonathan-buttner @leehinman to get some ECS committee visibility and discussion started 😄

@epixa epixa added the RFC label Jul 16, 2020
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
group: 2
short: User, admin, application, network, or service sessions
description: |-
These fields contain information about various types of user sessions typically reported & logged in an enterprise.
Copy link

@bkimmel bkimmel Jul 22, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❔ This reads a little bit like a tautology ( "A session is something that is typically a session" ). Adding a more formal definition like "A session typically encompasses the data that a system uses to manage instances of authentication against user identities, roles, etc." might help the reader here.

Copy link
Contributor Author

@dainperkins dainperkins Jul 22, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent suggestion - will work it in.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

These fields are used to track an entity's interaction with various assets, services, and applications in an enterprise.  Sessions will typically include a start event, often a login / authorization event performed locally or via network based mechanisms, and an end event indicating a logoff or session termination.  

When available, event start/end or duration fields should be populated, as well as iam, user, network, host, observer, process, source, destination, client, and server fields as appropriate to describe the specifics of the interaction.

Copy link
Contributor

@webmat webmat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks Dain for opening this!

I think this is appropriate for ECS, which is the only criteria for a stage 0 proposal.

I haven't had time to pore over the RFC content in detail. I skimmed it quickly and I think we'll need to adjust a few things, but this can also be addressed in detail in the stage 1 PR as well.

I would like to merge this early to mid next week, so we can start the PR on the stage 1 proposal. One request before we merge, though:

  • Could you merge master, and move the file to the new directory rfcs/text/ please? :-)

If you have time to adjust the following before then as well, great. Otherwise stage 1 PR could address those, I think:

  • Mention more explicitly that this can apply to web user sessions, backed by cookies or other means, etc.
  • Put the sample logs towards the end in code blocks, for readability. Example for the Meraki logs:

Example 1: Meraki

802.1x Logs (WLC) (EAP session start)

<134>1 1580551704.928047208 my_AP events type=8021x_eap_success radio='1' vap='2' client_mac='12:34:56:78:9A:BC' client_ip='192.168.1.100' identity='JohnDoe' aid='1687088497'

802.1x EAP De-association Message (EAP session end)

<134>1 1580551705.928047208 my_AP events type=8021x_deauth radio='1' vap='2' identity='JohnDoe' aid='1687088497'

You can use single backticks for single lines, and triple backticks for multi-line, depending on the situation.

<!--^ The ECS team will assign a unique, contiguous RFC number upon merging the initial stage of this RFC, taking care not to conflict with other RFCs.-->

- Stage: **0 (strawperson)** <!-- Update to reflect target stage -->
- Date: 6/22/2020 <!-- Update to reflect date of most recent stage advancement -->
Copy link
Contributor

@webmat webmat Jul 23, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for the future: we set this at the time we merge the RFC PR. No need to twiddle with it :-)

No action is needed, though.

rfcs/0000-rfc-session.md Outdated Show resolved Hide resolved
@jonathan-buttner
Copy link
Contributor

Sorry I've been MIA! We've been swamped with the 7.9 release. @epixa @webmat other than what Mat outlined is there anything else I can help with to get this merged and moved to stage 1?

There are a couple people within the security org that I'd like to chime in on this as we iterate on the exact fields we'll be adding to ECS. Is stage 1 the appropriate time to do that?

@webmat
Copy link
Contributor

webmat commented Jul 29, 2020

This is great, thanks for reaching out about the interest :-)

So Dain is the original author, but we can move to having multiple co-authors to get this moving faster. We're definitely looking forward to the Endpoint team's input on this.

For simplicity's sake, if the team wants to comment about this today, you're welcome to comment on this PR directly.

The bar for merging as stage 0 is already met (this is appropriate for ECS), so we'll merge as soon as the file is moved to the right directory.

After stage 0 is merged, you or someone from Endpoint could open the next PR to continue the process of fleshing this out. Also, seeing the interest from Endpoint, it sounds like the team would like to be the official sponsor for these fields? 👍

And to answer your question, yes stage 1 will be a great time to start fleshing out the list of fields we'll need for sessions :-)

@andrewvc
Copy link

Some thoughts from Uptime:

  1. Having type and kind is confusing. More verbosity would help here. IMHO stick with one and add a qualifier
  2. These sessions seem very network oriented, have you considered browser sessions and how they'd apply here?
  3. It seems like adding the layer 7 protocol would make sense as well.

@dainperkins
Copy link
Contributor Author

dainperkins commented Jul 30, 2020

@andrewvc

  1. Having type and kind is confusing. More verbosity would help here. IMHO stick with one and add a qualifier

Maybe using more discretely specific qualifiers would help (not sure what those are but I get the point)

  1. These sessions seem very network oriented, have you considered browser sessions and how they'd apply here?

Definitely want to cover browser sessions, applications sessions (sql, etc), I just didn;t have any handy when I wrote the rfc

  1. It seems like adding the layer 7 protocol would make sense as well.

Would be all set with e.g. existing ECS fields (network.protocol, etc.)

What do you think about:

Field Description
session.type: local, remote, network
session.authorization: user, admin, service
session.scope: system, virtual, application, wired, wireless, vpn
session.name locally relevant name if available (e.g. HQ Client VPN, Win19-VDI, FIN-EXCEL-vApp)
session.id session id provided by server or custom fingerprint

Network specifics would be covered by network, client/source, server/destination, application (web, etc) and/or host fields

Are there other session specific things that I don't have covered in other areas to cover APM requirements?

dainperkins and others added 3 commits July 29, 2020 21:58
Co-authored-by: Mathieu Martin <[email protected]>
updated field descriptions, multiple spelling issues, etc.
added code blocks for examples and specified tuple / cookie for tracking session actions
@dainperkins
Copy link
Contributor Author

@webmat
Made a bunch of updates, added a text directory and moved the rfc md file there. I think I need an approval after the changes

@ebeahan
Copy link
Member

ebeahan commented Jul 30, 2020

Thanks @dainperkins, and ++ to all the great discussion from everyone as well.

We'll assign the RFC number, update the date, and merge this in for stage 0.

updating rfc number and advancement date
@ebeahan ebeahan merged commit 9dff19a into elastic:master Jul 30, 2020
@webmat
Copy link
Contributor

webmat commented Jul 30, 2020

@andrewvc Yes the goal for capturing sessions in ECS is to be inclusive of all the various kinds of sessions. Hopefully we can define fields that are applicable to all kinds of sessions. If need be, we can have fields specific to some kinds of sessions as well.

I'm envisioning this supporting:

  • physical user sessions at a desktop
  • various kinds of network sessions, including browser sessions

We can continue refining this on subsequent stage PRs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants