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:
timestamp
name
id
- 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.policies
matched
actions
- doesn't exist, for future use - list of actions taken (currently the only action we have is print).
workload
process
executable
path
name
- the binary name (basename of the path) - doesn't exist, consider adding (in another issue)
uniqueId
- unique id of the processpid
hostPid
executionTime
- time of last exec. Doesn't exist, consider adding (in another issue)realUser
id
name
- doesn't exist, consider adding (in another issue)
user
- effective user. Doesn't exist, consider adding (in another issue)id
name
ancestors
- process ancestors array. Only direct parent will be populated by default with the following fields:uniqueId
pid
hostPid
- Other ancestor fields may be populated by threat detection events
thread
startTime
name
(aka "comm")tid
hostTid
capabilities
- doesn't exist, consider adding (in another issue)syscall
- the syscall that triggered this eventcompat
- boolean. moved fromflags.compat
userStackTrace
- if enabled, will be here
container
id
name
image
id
repoDigest
name
isRunning
- boolean. moved fromflags
startTime
- Timestamp of container start time. Doesn’t exist. Will replacestarted
pid
- entrypoint's pid. Doesn’t exists, consider adding
k8s
pod
name
uid
labels
namespace
name
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)description
mitre
tactic
name
technique
name
id
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.