-
Notifications
You must be signed in to change notification settings - Fork 473
Open
Description
#2355 changed the primary user experience of Tracee to be event oriented (previously events were considered internal and hidden from the user). Therefore:
- The event schema needs to be formalized and stabilized. Since it's no longer internal.
- The event structure needs to be generalized. Since events are will now be used for detections, captures and more.
Following is the updated event schema based on the comments below:
timestampnameid- machine readable id (integer). Note: current event id isn't good since it is architecture specific- //
version- use semver where major is a breaking change in the event (e.g. one of the event's fields under data has been changed or removed), minor is a non breaking change (e.g. a new field was added to the event under data) and patch (e.g. a bug fix). Since this data is static, we may remove this or make optional - //
tags- since this data is static, we may remove this or make optional labels- doesn't exist. For future use.policiesmatchedactions- doesn't exist, for future use - list of actions taken (currently the only action we have is print).
workloadprocessexecutablepathname- the binary name (basename of the path) - doesn't exist, consider adding (in another issue)
uniqueId- unique id of the processpidhostPidexecutionTime- time of last exec. Doesn't exist, consider adding (in another issue)realUseridname- doesn't exist, consider adding (in another issue)
user- effective user. Doesn't exist, consider adding (in another issue)idname
ancestors- process ancestors array. Only direct parent will be populated by default with the following fields:uniqueIdpidhostPid- Other ancestor fields may be populated by threat detection events
threadstartTimename(aka "comm")tidhostTidcapabilities- doesn't exist, consider adding (in another issue)syscall- the syscall that triggered this eventcompat- boolean. moved fromflags.compatuserStackTrace- if enabled, will be here
containeridnameimageidrepoDigestname
isRunning- boolean. moved fromflagsstartTime- Timestamp of container start time. Doesn’t exist. Will replacestartedpid- entrypoint's pid. Doesn’t exists, consider adding
k8spodnameuidlabels
namespacename
data- Any relevant field (per-event schema)
returnValue(if relevant will appear here)
threat(if relevant will appear here) - static data about threats (can be omitted)descriptionmitretacticname
techniquenameid
severity
triggeredBy(will appear on threat detection events)
1.name
2.id
3.data
We also discussed versioning the event schema, but not including the version with each event, for efficiency.