Replies: 8 comments 4 replies
-
My bad; |
Beta Was this translation helpful? Give feedback.
-
It is highly desirable to normalize the data and use the predefined enum values as much as possible. However, there will be cases when that's going to be not possible and forcing rules on the text makes the schema too restrictive. It is very important to keep the free form text of the enum text because it allows using values that are defined by other standards. |
Beta Was this translation helpful? Give feedback.
-
yes, if the value is other(99), then sibling string is provided by the source event. |
Beta Was this translation helpful? Give feedback.
-
I don't think I understand the reasoning on Other. What convention are we proposing for a value that is unknown to us a priori? Is it to prefix the event source literal with "Other:"? What is the convention being proposed? |
Beta Was this translation helpful? Give feedback.
-
The convention for "other" isn't the primary concern for this proposal, though to be complete we will have to discuss and decide on whatever convention. The primary concern is that as it currently stands, the sibling may be un-normalized. For instance, for a network connection, we could see in the sibling "inbound", "INBOUND", "Ingress", and "INGRESS" all with the same integer sibling. I believe there is more value if we can define the sibling to be set to a normalized string, and in the exceptional case of "other", we can have a convention. Potentially allowing 4 variations of the string sibling does not render the field very useful for anything, and it overlaps with the intent of "raw_data". In cases where there is a truly new value that does not fit cleanly into the OCSF-defined enum, the value should be able to be utilized cleanly and consistently (I'd advocate for a convention that doesn't require parsing; so upon reflection, I would argue that a prefixe of "Other" isn't ideal. Maybe the original value of the mapped field, or to go one step further, a re-interpretation of the original field to match some convention - i.e., no spaces). |
Beta Was this translation helpful? Give feedback.
-
Side Note - A similar proposal was submitted in October as well - #313 |
Beta Was this translation helpful? Give feedback.
-
One more point- the above proposal didn't make mention of whether the enum label is required in the sibling or whether it is optional. The siblings themselves are all marked as Optional, but would effectively be silently promoted to Required if Other was the enum value. |
Beta Was this translation helpful? Give feedback.
-
I voted for free-form text, because the assertion in the issue description I do not agree with. "No offer of normalization for applications that utilize or prefer the strings for things like captions or visualizations" - when taking data and rendering it in a user interface, one has to determine whether the data element has to support I18N. If it does, then displaying a string as-is, is not possible. One has to use the normalized field - in this case, the integer - then look it up for translation. If the field on the other hand, does not need to be translated, then one should preserve the original information the sender is actually sending - if they send it in all caps, it should be shown in all caps, not corrupted/ manipulated. The TL;DR is - if the string siblings have to be normalized as well, then why have them at all in the first place? |
Beta Was this translation helpful? Give feedback.
-
"sibling" strings, e.g,
severity
as it relates toseverity_id
, are currently defined as relating to the event source. Again, for severity, "The event severity, as defined by the event source."This has a few potential problems:
ref_
fields; i.e.,severity
should be renamedref_severity
Informational
andinformational
andINFORMATIONAL
may be grouped independently for poorly written queries.I would recommend the following:
For "sibling" fields, the should be understood and defined as enum+. The strings will match the predefined cases as defined by the OCSF definition for their integer sibling, with the exception of "Other", where the original value is preserved and offers data consumers an opportunity to further understand and utilize the data.
For example,
If someone had the severity as "Blocker", the int enum
severity_id
would be99
and the string siblingseverity
would beOther:Blocker
I will set up a poll for voting and additional feedback.
13 votes ·
Beta Was this translation helpful? Give feedback.
All reactions