ocsf / ocsf-schema

OCSF Schema
Apache License 2.0
582 stars 118 forks source link

Improvements to Operating System Patch State 5004 #1088

Closed jasonbreimer closed 2 weeks ago

jasonbreimer commented 1 month ago

Updated 6/7

Description of changes: A number of attributes to improve Patch State. Mean time is a commonly used metric to evaluate patch efficacy and is captured in new attributes for durationavg, is_installed is a new attribute that describes the installation state, and is_installed_id the normalized installation state of the kb_article, and reboot_time to capture the reboot or true install time for reboot dependent patches.

New dictionary attributes attributes: durationavg Examples: duration_avg_days, duration_avg_hours, duration_avg_msecs, duration_avg_mins, duration_avg_months, duration_avg_secs, duration_avg_weeks, and duration_avg_years description: This captures the average time. This will be used for "mean time to patch" or MTTP. Object: kb_article Note: this could be set per kb_article or per kb_article array for a total "MTTP"

attribute: install_state description: the installation state Object: kb_article Note: This could be for a single kb_article or array of many kb_articles.

attribute: install_state_id description: the normalized installation state Object: kb_article Note: Includes installed, not installed, installed pending reboot, other, and unknown. This could be for a single kb_article or array of many kb_articles.

attribute: boot_time description: This captures the boot time of the system. Object: device Note: This is a neat one and very related to patching.

jasonbreimer commented 1 month ago

This has passed local elixir validation by author.

jasonbreimer commented 1 month ago

I made a small modification to the mean_time description at Paul's request.

davemcatcisco commented 1 month ago

Just realised I've been commenting on PRs using my personal GitHub account @davemcincork. It's me. Honest!

jasonbreimer commented 1 month ago

I have made all adjustments as recommended by @davemcincork. Thanks Dave!

jasonbreimer commented 1 month ago

Group suggestion is to use duration rather than mean_time.

jasonbreimer commented 1 month ago

Looking at the description: The event duration or aggregate time, the amount of time the event covers from start_time to end_time in milliseconds.

We don't always have start_time or end_time. This is also meant to an average calculated value.

It seems like a mean time value and a duration value are different?

Perhaps duration could be modified by I'm still in favor of keeping a new mean_time attribute as it seems a better fit.

jasonbreimer commented 1 month ago

Another quick concern from the group regarded using integer_t for mean_time and limit to seconds only? Perhaps this would not allow usages when time value is milliseconds?

jasonbreimer commented 1 month ago

I think this may have been the concern regarding limits in duration time with RFC-3339:

note: nothing below dur-second.

Durations:

dur-second = 1DIGIT "S" dur-minute = 1DIGIT "M" [dur-second] dur-hour = 1DIGIT "H" [dur-minute] dur-time = "T" (dur-hour / dur-minute / dur-second) dur-day = 1DIGIT "D" dur-week = 1DIGIT "W" dur-month = 1DIGIT "M" [dur-day] dur-year = 1*DIGIT "Y" [dur-month] dur-date = (dur-day / dur-month / dur-year) [dur-time]

duration = "P" (dur-date / dur-time / dur-week)

jasonbreimer commented 1 month ago

I believe I have resolved all issues and requests!

This change now contains new dictionary items for Average Duration. There are 8 new attributes for duration_avg_days, duration_avg_hours, duration_avg_msecs, duration_avg_mins, duration_avg_months, duration_avg_secs, duration_avg_weeks, and duration_avg_years. This replaces the "average_time" or "mean_time" attribute. This should capture a number of duration unit types and allow these to be used more generally.

This change also includes is_installed_id a normalized enum that includes installed, not installed, installed pending reboot, other, and unknown. This is also intended to allow the is_installed attribute to be more granular.

jasonbreimer commented 1 month ago

I have run this branch through local elixir validation without errors. No issues detected.

jasonbreimer commented 1 month ago

I've made changes discussed in 6/4 call for renaming is_installed and is_installed_id to installed_state and installed_state_id.

Changes include: Dictionary rename changes and kb_article object attribute rename language changes.

jasonbreimer commented 1 month ago

I have re-run local elixir validation without issue.

jasonbreimer commented 1 month ago

I'll make these changes but going to need to make them final so that I can make some progress. I actually started with install_state but was suggested to change to installed_state. I also started with boot_time and was suggested reboot_time.

jasonbreimer commented 1 month ago

Suggested changes regarding attribute naming have been completed.

Changes pass local elixir validation.

This PR is ready for review.

pagbabian-splunk commented 1 month ago

Yes, let's get this in now, and if we decide the duration_xx set deserves an object with an enum discriminator, we can always update before 1.3.

davemcatcisco commented 3 weeks ago

I'll make these changes but going to need to make them final so that I can make some progress. I actually started with install_state but was suggested to change to installed_state. I also started with boot_time and was suggested reboot_time.

Oh sorry...I would have discussed with the person who requested those changes if I had known that. But thanks for making them.