-
Notifications
You must be signed in to change notification settings - Fork 183
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Profile parameter interpretation #106
Comments
Another scenario that comes to mind is when a "Profile" parameter augmentation references another "Profile" parameter as a comparison. For example, in the FedRAMP Moderate "profile", the parameter for subcontrol ID "ac.2.5" references control ID "ac.12" in that the value for "ac.2.5" must be a shorter timeframe than the parameter for "ac.12". In this case, it would be great if we could allow for a numeric condition here using some syntax that we define ... something like, |
We have talked about wiring data typing constraints into the declarations model; presumably that could serve parameter values as well as property values. In the XML stack, we get some data types for free, such as strings, integers, URIs and (ISO-formatted) dates. We have also talked about constraints such as "the value must be an integer between 0 and 10 inclusive". So yes, there are definitely ways we could mitigate these issues for implementers - assuming that validation of lexical forms against these types can be performed before processing (and that there is handling defined for invalid data). However, we also know that in the real world, these guys can be peculiar and complicated, and while XSD has a "duration" data type, it doesn't have (for example) frequency or range of frequencies, such as "at least every six months". (And then there's the notation question.) The second note describes co-occurrence constraints on the values of parameters assigned in the same profile (albeit conceivably in different 'import hierarchies' of the same profile). This is interesting. Making these work implies data typing (so we can deterministically compare values, for example), but also more. The cheap/easy way to do either of these in XML is with a layer on top, for example a Schematron or XSLT that would perform the test and flag an error. However, that is effectively an implementation-level solution, which is what @anweiss is saying it would be nice not to need. I concur, if there's a 20% solution for 80% of the problem here, it might belong lower in the OSCAL stack. (Not that I'm against layering.) It might well be to support simple numbers, but not (yet) durations or frequencies. FWIW, at present OSCAL declarations apply to (and work well with) OSCAL catalogs and with catalog-like artifacts (such as my "worksheets"), but not -- yet -- profiles. We will have to think about that too. |
Awesome! Yea, I'm less concerned about the type constraints we can implement and that are available in XSD/JSON schema and more interested in co-occurrence constraints on the parameter values where applicable. |
# The first commit's message is: # This is a combination of 54 commits. # The first commit's message is: # This is a combination of 4 commits. # The first commit's message is: # This is a combination of 2 commits. # The first commit's message is: # This is a combination of 2 commits. # The first commit's message is: # This is a combination of 6 commits. # The first commit's message is: # This is a combination of 3 commits. # The first commit's message is: # This is a combination of 111 commits. # The first commit's message is: Initial commit of docs branch. # This is the commit message #2: Create CONTRIBUTING.md # This is the commit message #3: Create ROADMAP.md # This is the commit message #4: Update README.md # This is the commit message #5: Create README.md # This is the commit message #6: Update README.md # This is the commit message #7: Update README.md # This is the commit message #8: Create OSCAL-PRODUCERS.md # This is the commit message #9: Create OSCAL-CONSUMERS.md # This is the commit message #10: Update and rename OSCAL-CONSUMERS.md to USERS.md # This is the commit message #11: Update and rename OSCAL-PRODUCERS.md to IMPLEMENTERS.md # This is the commit message #12: Rename CONTRIBUTING.md to CONTRIBUTORS.md # This is the commit message #13: Update README.md # This is the commit message #14: Update README.md # This is the commit message #15: Update USERS.md # This is the commit message #16: Update README.md # This is the commit message #17: Update IMPLEMENTERS.md # This is the commit message #18: Update README.md # This is the commit message #19: Update ROADMAP.md # This is the commit message #20: Update USERS.md # This is the commit message #21: Update CONTRIBUTORS.md # This is the commit message #22: Update README.md # This is the commit message #23: Update README.md # This is the commit message #24: Update IMPLEMENTERS.md # This is the commit message #25: Update IMPLEMENTERS.md # This is the commit message #26: Rename CONTRIBUTORS.md to CONTRIBUTING.md # This is the commit message #27: Create control.md # This is the commit message #28: Update control.md # This is the commit message #29: Update control.md # This is the commit message #30: Update control.md # This is the commit message #31: Update control.md # This is the commit message #32: Add files via upload # This is the commit message #33: Update control.md # This is the commit message #34: Create temp.md # This is the commit message #35: Delete NIST-SP-800-53-Rev4-AC1.png # This is the commit message #36: Add files via upload # This is the commit message #37: Delete temp.md # This is the commit message #38: Add files via upload # This is the commit message #39: Update control.md # This is the commit message #40: Add files via upload # This is the commit message #41: Add files via upload # This is the commit message #42: Update control.md # This is the commit message #43: Update CONTRIBUTING.md # This is the commit message #44: Update CONTRIBUTING.md # This is the commit message #45: Update USERS.md # This is the commit message #46: Update CONTRIBUTING.md # This is the commit message #47: Delete CONTRIBUTING.md # This is the commit message #48: Delete USERS.md # This is the commit message #49: Add files via upload # This is the commit message #50: Delete CSA-CCM-IAM02.png # This is the commit message #51: Update control.md # This is the commit message #52: Update control.md # This is the commit message #53: Update control.md # This is the commit message #54: Update control.md # This is the commit message #55: Update control.md # This is the commit message #56: Update control.md # This is the commit message #57: Update control.md # This is the commit message #58: Update control.md # This is the commit message #59: Update control.md # This is the commit message #60: Update control.md # This is the commit message #61: Delete NIST-SP-800-53-AC1-in-OSCAL-XML.png # This is the commit message #62: Update README.md # This is the commit message #63: Update control.md # This is the commit message #64: Update control.md # This is the commit message #65: Add files via upload # This is the commit message #66: Delete ISO-27001-Control-A9.png # This is the commit message #67: Update control.md # This is the commit message #68: Add files via upload # This is the commit message #69: Add files via upload # This is the commit message #70: Delete ISO-27002-Control-9.1.1-part1.png # This is the commit message #71: Delete ISO-27002-Control-9.1.1-part2.png # This is the commit message #72: Update control.md # This is the commit message #73: Update control.md # This is the commit message #74: Update control.md # This is the commit message #75: Update control.md # This is the commit message #76: Update control.md # This is the commit message #77: Update README.md # This is the commit message #78: Update IMPLEMENTERS.md # This is the commit message #79: Add files via upload # This is the commit message #80: Delete oscal-layers.png # This is the commit message #81: Add files via upload # This is the commit message #82: Delete oscal-layers.png # This is the commit message #83: Add files via upload # This is the commit message #84: Update IMPLEMENTERS.md # This is the commit message #85: Update control.md # This is the commit message #86: Update IMPLEMENTERS.md # This is the commit message #87: Update control.md # This is the commit message #88: Rename IMPLEMENTERS.md to docs/prose/IMPLEMENTERS.md # This is the commit message #89: Rename IMPLEMENTERS.md to implementers.md # This is the commit message #90: Rearranged and outlined catalog documentation based on the conversation with karen and Wendell. # This is the commit message #91: Create catalog-xml.md # This is the commit message #92: Rename control.md to catalog.md # This is the commit message #93: Update catalog.md # This is the commit message #94: Update catalog.md # This is the commit message #95: Update catalog.md # This is the commit message #96: Update catalog-xml.md # This is the commit message #97: Update catalog-xml.md # This is the commit message #98: Update catalog-xml.md # This is the commit message #99: Update catalog-xml.md # This is the commit message #100: Update catalog-xml.md # This is the commit message #101: Update catalog-xml.md # This is the commit message #102: Update catalog-xml.md # This is the commit message #103: Update catalog-xml.md # This is the commit message #104: Update catalog-xml.md # This is the commit message #105: Update catalog-xml.md # This is the commit message #106: Docset migration to Slate # This is the commit message #107: Removing unused file. # This is the commit message #108: Update README.md Corrected a typo # This is the commit message #109: Add files via upload Graphical representation of OSCAL schemas aligned with Risk Management Framework steps and tasks. # This is the commit message #110: Create CONTRIBUTING.md # This is the commit message #111: Create ROADMAP.md # This is the commit message #2: Create README.md # This is the commit message #3: Update README.md # This is the commit message #2: Create OSCAL-PRODUCERS.md # This is the commit message #3: Create OSCAL-CONSUMERS.md # This is the commit message #4: Update and rename OSCAL-CONSUMERS.md to USERS.md # This is the commit message #5: Update and rename OSCAL-PRODUCERS.md to IMPLEMENTERS.md # This is the commit message #6: Rename CONTRIBUTING.md to CONTRIBUTORS.md # This is the commit message #2: Update USERS.md # This is the commit message #2: Update IMPLEMENTERS.md # This is the commit message #2: Update ROADMAP.md # This is the commit message #3: Update USERS.md # This is the commit message #4: Update CONTRIBUTORS.md # This is the commit message #2: Update IMPLEMENTERS.md # This is the commit message #3: Update IMPLEMENTERS.md # This is the commit message #4: Rename CONTRIBUTORS.md to CONTRIBUTING.md # This is the commit message #5: Create control.md # This is the commit message #6: Update control.md # This is the commit message #7: Update control.md # This is the commit message #8: Update control.md # This is the commit message #9: Update control.md # This is the commit message #10: Add files via upload # This is the commit message #11: Update control.md # This is the commit message #12: Create temp.md # This is the commit message #13: Delete NIST-SP-800-53-Rev4-AC1.png # This is the commit message #14: Add files via upload # This is the commit message #15: Delete temp.md # This is the commit message #16: Add files via upload # This is the commit message #17: Update control.md # This is the commit message #18: Add files via upload # This is the commit message #19: Add files via upload # This is the commit message #20: Update control.md # This is the commit message #21: Update CONTRIBUTING.md # This is the commit message #22: Update CONTRIBUTING.md # This is the commit message #23: Update USERS.md # This is the commit message #24: Update CONTRIBUTING.md # This is the commit message #25: Delete CONTRIBUTING.md # This is the commit message #26: Delete USERS.md # This is the commit message #27: Add files via upload # This is the commit message #28: Delete CSA-CCM-IAM02.png # This is the commit message #29: Update control.md # This is the commit message #30: Update control.md # This is the commit message #31: Update control.md # This is the commit message #32: Update control.md # This is the commit message #33: Update control.md # This is the commit message #34: Update control.md # This is the commit message #35: Update control.md # This is the commit message #36: Update control.md # This is the commit message #37: Update control.md # This is the commit message #38: Update control.md # This is the commit message #39: Delete NIST-SP-800-53-AC1-in-OSCAL-XML.png # This is the commit message #40: Update README.md # This is the commit message #41: Update control.md # This is the commit message #42: Update control.md # This is the commit message #43: Add files via upload # This is the commit message #44: Delete ISO-27001-Control-A9.png # This is the commit message #45: Update control.md # This is the commit message #46: Add files via upload # This is the commit message #47: Add files via upload # This is the commit message #48: Delete ISO-27002-Control-9.1.1-part1.png # This is the commit message #49: Delete ISO-27002-Control-9.1.1-part2.png # This is the commit message #50: Update control.md # This is the commit message #51: Update control.md # This is the commit message #52: Update control.md # This is the commit message #53: Update control.md # This is the commit message #54: Update control.md # This is the commit message #2: Update IMPLEMENTERS.md # This is the commit message #3: Add files via upload # This is the commit message #4: Delete oscal-layers.png # This is the commit message #5: Add files via upload # This is the commit message #6: Delete oscal-layers.png # This is the commit message #7: Add files via upload # This is the commit message #8: Update IMPLEMENTERS.md # This is the commit message #9: Update control.md # This is the commit message #10: Update IMPLEMENTERS.md # This is the commit message #11: Update control.md # This is the commit message #12: Rename IMPLEMENTERS.md to docs/prose/IMPLEMENTERS.md # This is the commit message #13: Rename IMPLEMENTERS.md to implementers.md # This is the commit message #14: Rearranged and outlined catalog documentation based on the conversation with karen and Wendell. # This is the commit message #15: Create catalog-xml.md # This is the commit message #16: Rename control.md to catalog.md # This is the commit message #17: Update catalog.md # This is the commit message #18: Update catalog.md # This is the commit message #19: Update catalog.md # This is the commit message #20: Update catalog-xml.md # This is the commit message #21: Update catalog-xml.md # This is the commit message #22: Update catalog-xml.md # This is the commit message #23: Update catalog-xml.md # This is the commit message #24: Update catalog-xml.md # This is the commit message #25: Update catalog-xml.md # This is the commit message #26: Update catalog-xml.md # This is the commit message #27: Update catalog-xml.md # This is the commit message #28: Update catalog-xml.md # This is the commit message #29: Fixed typos, updated repo documentation, and migrated documentation for use in Slate. Corrected a typo (+4 squashed commit) Squashed commit: [6ada57f] Removing unused file. [503ad71] Docset migration to Slate [351257e] Update catalog-xml.md [aae1e8b] Add files via upload Graphical representation of OSCAL schemas aligned with Risk Management Framework steps and tasks.
We will address this in the Implementation layer work (#92). Changes to the Catalog and Profile models will be needed at that time., |
I very much agree with @anweiss statements. The current vagueness of parameters in 800-53 are obstacles to improved workflows. I also agree with @wendellpiez noteworthiness of "co-occurrence constraints on the values of parameters assigned in the same profile." The 20% solution that provides 80% of the value could be an improved naming schema for the parameters. I've noted a need for unique naming of parameters as an additional acceptance criteria in #66 Since 800-53 catalog does not provide a machine-usable parameter naming schema, OSCAL needs a format for a "parameter key definition and translation index" which provides a common format for a rossetta stone for translating the the catalog's parameters up to a common structure and values back down again. We can't control the quality of catalog's parameter structure. But we can always create a table that equates some path description to a parameter (e.g., If the protocol/structure for indexing the keys is part of the implementation standard, the following benefits follow:
|
NB: currently, the models do not provide for parameters to have "names" (unique or otherwise) although we have elements for their "description", "label" and "value" (for setting a value or a default value for a calling profile), none of which must be unique to that parameter. To address parameters, we use their The same thing is incidentally true of other ID-carrying elements including controls and subcontrols -- or not incidentally, since those cases also show there is another approach, inasmuch as there, we have properties and the declarations model available to permit controsl (and subcontrols and parts) to be assigned "name" properties which indeed (via a validation against appropriate declarations) may have many or all of the characteristics described here for parameter names -- and which are orthogonal to the (guaranteed unique but potentially opaque) ID value (the
etc. This semantic overloading is useful since it gives us multiple ways to address these elements (by ID, by name property, by brute-force XPath etc) as well as the ability to cross-check them against each other. Yet at the same time, the responsibility for designing and enforcing such a constraint (in its particulars -- here, for example, we expect to see a clean mapping between the values) goes to the catalog designers/publishers, not the standard. While OSCAL provides a mechanism to support making (and enforcing) such declarations, in other words, it doesn't mandate any particular declarations for this purpose. Among other things this makes me wonder whether the requirements stipulated here must really be addressed in the design of the SP800-53 catalogs (and presumably of other catalogs to come), and not of OSCAL -- irrespective of whether/how it applies to either/both At the same time, it would also be relatively easy/painless to add Note that we might wish to permit the above while also constraining |
On the JSON side of things, something that might help and that we can already take advantage of today with JSON schema draft-07 is that of conditional schema evaluation provided by the
In the example above, if the value of the Granted, this only applies to conditional requirements of properties and not conditions expressed as relationships among properties. Support for the latter won't be made available until draft-09 of JSON schema which is due in November. |
These requirements should be considered as part of #474. Closing this issue in favor of the new issue. |
Currently, "Profile" parameter values are completely ambiguous. The schema also only allows simple text values (
value = element value { text }
). As such, it is left up to "Implementation" to interpret, parse and implement these parameter values. I'm curious if there's a way we can mitigate the level of effort that a system "Implementer" would have to put in to interpret these values by also allowing numeric types. This would simplify parsing of param values that can be easily represented numerically.@wendellpiez, thoughts?
The text was updated successfully, but these errors were encountered: