Skip to content
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

1062 ssp link semantics #1167

Merged

Conversation

Rene2mt
Copy link
Contributor

@Rene2mt Rene2mt commented Mar 11, 2022

Committer Notes

This pull request adds content to the SSP concepts page to clarify link semantics in the SSP model to address issue #1062.

All Submissions:

  • Have you selected the correct base branch per Contributing guidance?
  • Have you checked to ensure there aren't other open Pull Requests for the same update/change?
  • Have you squashed any non-relevant commits and commit messages? [instructions]
  • Do all automated CI/CD checks pass?

Changes to Core Features:

  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your core changes, as applicable?
  • Have you included examples of how to use your new feature(s)?
  • Have you updated all OSCAL website and readme documentation affected by the changes you made? Changes to the OSCAL website can be made in the docs/content directory of your branch.

Copy link
Contributor

@aj-stein-nist aj-stein-nist left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems the PR needs to be rebased, but I have some minor suggestions. Sorry it took long to give pertinent feedback, Rene. I will review again more thoroughly for substantive feedback about content tomorrow, not small grammar fixes. 😆

docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
@david-waltermire david-waltermire linked an issue Mar 17, 2022 that may be closed by this pull request
@aj-stein-nist
Copy link
Contributor

Hey @Rene2mt, @david-waltermire-nist and I rebased this PR for you. Can you delete your local copy of the branch and pull down the remote one we touched up (with git reset or git rebase) for you when you have a chance?

We still have some outstanding feedback. Can we talk about it later today?

@Rene2mt
Copy link
Contributor Author

Rene2mt commented Mar 17, 2022

Hey @Rene2mt, @david-waltermire-nist and I rebased this PR for you. Can you delete your local copy of the branch and pull down the remote one we touched up (with git reset or git rebase) for you when you have a chance?

We still have some outstanding feedback. Can we talk about it later today?

Yes, we can go over feedback later today.

Copy link
Contributor

@david-waltermire david-waltermire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks good. Thanks!

Copy link
Contributor

@aj-stein-nist aj-stein-nist left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Content looks good and I think it is a wonderful addition, @Rene2mt! I did find some small issues around typos, consistency, and wording we might want to quickly tighter up before release before we pull it in for the release.

/cc @david-waltermire-nist

docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
docs/content/concepts/layer/implementation/ssp/_index.md Outdated Show resolved Hide resolved
Copy link
Contributor

@david-waltermire david-waltermire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

While I love this table, I think there are still issues to be addressed.

  1. The text of the reference link is ambiguous regarding the path into the model.
  2. The target of the reference link is point to the XML index that mentions other locations in the model, including the one being referenced. It also doesn't provide a JSON link.
  3. The targets of the reference are not linked either.

For these reasons, the table might be confusing.

I'd like to come up with a way to address these issues. We can push this back to 1.0.3 to allow for some time to address this.

@Rene2mt
Copy link
Contributor Author

Rene2mt commented Mar 24, 2022

Agreed. Latest WIP commit made the following changes

  1. Reference column - In order to make less ambiguous, named the model reference element and provided direct links to both XML model reference and JSON model reference. Where the reference could be in various parts of the SSP model (e.g., component-uuid), added a separate table row for each SSP model reference location.
  2. Target Element column - Also updated, adding links to both XML model reference and JSON model reference.
  3. Misc description column updates.

We can do another round of review on these latest updates.

@david-waltermire david-waltermire added this to the OSCAL 1.0.3 milestone Apr 28, 2022

- **Local**: Scenario where an identifier references information in the same OSCAL instance.  This scenario supports  “compile time” enforcement of constraints since the validity of the reference can be checked as soon as the SSP is authored.
- **Import-Profile**: Scenario where an identifier references information in its imported profile.  This scenario can support “compile time” enforcement of constraints if there is access to the imported OSCAL profile.
- **Leveraged-Authorizations/Links**: In this scenario where an OSCAL SSP has leveraged-authorization(s), some of the information in the leveraged SSP may be referenced (e.g., if the leveraged SSP is also in OSCAL format).  This scenario supports “runtime” validation of constraints since SSP author may or may not have access the leveraged system SSP to validate / enforce the referential integrity.  However, the authorizing official (AO) must ultimately validate any such links and references.
Copy link
Contributor

@wendellpiez wendellpiez Apr 28, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggest:

  • Links to leveraged authorizations: In a scenario where an OSCAL SSP has a leveraged authorization, some of the information in a leveraged SSP may be referenced (if the leveraged SSP is also in OSCAL format). 

Copy link
Contributor Author

@Rene2mt Rene2mt May 3, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworked this section, removing un-necessary hyphens and capitalization. Created subsection headers for instance, cross instance, and external with narrative scenario descriptions.

@david-waltermire
Copy link
Contributor

@Rene2mt I just rebased this onto release-1.0. I can walk you through resyncing your working branch.

@@ -66,6 +66,46 @@ The figure below expresses represents the portion of the OSCAL stack as it relat

{{<partialCached "note-to-developers-uuid.html" >}}

### Identifier References

An OSCAL SSP may contain references to information that is defined locally (e.g., in the SSP model) or externally (e.g., in a referenced profile, catalog, or component definition model). The following lists the mechanisms through which objects in an OSCAL SSP may "link" to other OSCAL content:
Copy link
Contributor

@iMichaela iMichaela Apr 29, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The locally defined references reside in OSCAL SSP content or Catalog/Profile/CDef content, and not in the mentioned models).

Copy link
Contributor

@david-waltermire david-waltermire Apr 29, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Use instance vs cross-instance terminology from the identifier scoping instead of "locally", etc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworded as:
An OSCAL SSP may contain references to information that is instance scoped (e.g., in the SSP model), cross-instance scoped (e.g., in a referenced profile, catalog, or component definition model), or external (e.g., references to non-OSCAL resources). The following summarizes the scenarios where an OSCAL SSP may have references to other content.


An OSCAL SSP may contain references to information that is defined locally (e.g., in the SSP model) or externally (e.g., in a referenced profile, catalog, or component definition model). The following lists the mechanisms through which objects in an OSCAL SSP may "link" to other OSCAL content:

- **Local**: Scenario where an identifier references information in the same OSCAL instance.  This scenario supports  “compile time” enforcement of constraints since the validity of the reference can be checked as soon as the SSP is authored.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest classifying the references as local and external with different use cases for the external type of references: 1) in another OSCAL instance like 1.1) an imported profile, 1.2) in a leveraged authorization, 1.3) in a cdef sourced by a component of a system or 2) in a document referenced by a general link.

Copy link
Contributor

@david-waltermire david-waltermire Apr 29, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should use local and cross-instance to be consistent with the identifier scoping. External should be limited to references to external non-OSCAL resources.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Created subsection headers for instance, cross instance, and external with narrative scenario descriptions.

| [responsible-party/party-uuid](/reference/latest/system-security-plan/xml-index/#/party-uuid) | Local SSP | Party | UUID | A single target party must be found in the source. System-characteristics/responsible-party/party-uuid and inventory-item\*/responsible-party/party-uuid are the points of reference, so they are appropriate to enforce a local constraint. |
| [responsible-role/@role-id](/reference/latest/system-security-plan/xml-index/#/@role-id) | Local SSP, leveraged-authorization | Role | Token | A single target role must be found by the ID. |
| [responsible-role/party-uuid](/reference/latest/system-security-plan/xml-index/#/party-uuid) | Local SSP, leveraged-authorization | Party | UUID | A single target role must be found by the UUID. |
-->
### Modeling Validation Information
OSCAL is designed to allow capture relevant details related to independent validation of components. See the [Validation Modeling](/learn/tutorials/validation-modeling/) tutorial for details.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OSCAL is designed to allow the capture of relevant ...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed


The following table summarizes constraints for identifier references in an OSCAL SSP:

| Reference | Target Scope | Target Element | Target ID Type | Referential Constraint Description |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the table can you link to the data type definition? https://pages.nist.gov/OSCAL/reference/datatypes/

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added

@david-waltermire
Copy link
Contributor

@Rene2mt I made a PR against your working branch (Rene2mt#3) regarding #1167.

Copy link
Contributor

@david-waltermire david-waltermire left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks!

@david-waltermire david-waltermire merged commit 2908e46 into usnistgov:release-1.0 May 4, 2022
david-waltermire added a commit that referenced this pull request May 5, 2022
* Update SSP concepts page
* Clarify link semantics in SSP model

Co-authored-by: Alexander Stein <[email protected]>
Co-authored-by: David Waltermire <[email protected]>
Rene2mt added a commit to Rene2mt/OSCAL that referenced this pull request May 17, 2022
* Update SSP concepts page
* Clarify link semantics in SSP model

Co-authored-by: Alexander Stein <[email protected]>
Co-authored-by: David Waltermire <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Clarification of link semantics in SSP model
5 participants