Replies: 3 comments 3 replies
-
I like these options as discussed. If we end up with Proposal 11 for time format, a profile will be available for RFC 3339 against these times, just like other timestamp attributes in the schema. Given the computational ease of using timestamp_t, start_time / end_time makes the most sense since the time range is a subtraction. Re: a received_time, the normalized time _time is computed based on the correction between the receiver's clock, assumed to be accurate, and the sender's clock, not assumed to be accurate. The ref_time is presumed to be the time when the event was produced or created, assuming an accurate clock (which may not always be the case). There needs to be a way to normalize the ref_time into _time. If ref_time is in an arbitrary format, and created_time is not equal to ref_time, we have a problem doing this. ref_xxx attributes are unaltered from the source (as if they were unmapped). Therefore we need an event_time that is a well known form of ref_time. |
Beta Was this translation helpful? Give feedback.
-
One thing to consider is whether we care about tracking the processing lineage. We centered OCSF around the producer then we could have |
Beta Was this translation helpful? Give feedback.
-
So far I do not understand a few things about this
In general log processing has only 3 timestamps* that matter
I have never heard of a 'processed time' and I don't know which one of these 3 it is. I think for all of these, someone needs ot explain the end-to-end use-case, including how a threat analyst is supposed to use the information - the fact we can imagine a scenario where a field exists, does not make it useful enough to be part of a base schema. If the information can not be used in a security use case and we can't plainly articulate where it comes from and how that is used to inform the analyst of something important, then conveying is unnecessary. |
Beta Was this translation helpful? Give feedback.
-
There are many event timestamps that are useful to record when event creation, collection, processing, and logging. The following terms are used within this discussion:
Event Producer -- the system (application, services, etc.) that generates events.
Event Consumer -- the system that receives the events generated by the event producer.
Event Processor -- the system that processes and logs the events received by the event consumer.
time
: timestamp_tThe normalized event occurrence time. Normalized time means the original event time
ref_time
was corrected for the clock skew and it was converted to the OCSFtimestamp_t
.ref_time
: stringThe original event time, as created by the event producer. The time format is not specified by the OCSF. The time could be UTC time in milliseconds (
1659378222123
), ISO 8601 (2019-09-07T15:50-04:00
), or any other value (12/13/2021 10:12:55 PM
).created_time
: timestamp_t (new attribute)The created time is the time when the event was created by the event producer. The
created_time
, if present, must be equal or greater than theref_time
.Currently it is defined as timestamp_t, however the event producer may not use the OCSF time format. Do we need
ref_created_time
and thecreated_time
is the normalized created time?The
created_time
is useful in cases when the event producer creates events sometime after they occur.processed_time
: timestamp_t (rename as posted_time)The event processed time, such as an ETL operation.
The posted time is the time when the event was sent by the event producer to the event consumer. The posted time can be used to determine the clock skew. Clock skew occurs when the clock time on one computer differs from the clock time on another computer. I think we need one more time, the time when was received by the event consumer,
received_time
?logged_time
: timestamp_tThe time when the event processor logged the event. It must be equal or greater than the event
time
.updated_time
: timestamp_tThe time when the event was last updated or enriched.It must be equal or greater than the event
time
. It could be less-than, equal, or greater-than thelogged_time
.start_time
/end_time
: timestamp_tThe start and end event times are used when the event represents some activity that happened over time. The other use-case is event aggregation. Aggregation is a mechanism that allows for high number of events of the same event type that are raised to be merged into one for more efficient processing. Since the event aggregation could be done by the event producer, the event consumer, or the event processor, so what should be the time format?
Beta Was this translation helpful? Give feedback.
All reactions