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

SSP Completeness Checks: 4 System Owner / 5 Assignment of Security Responsibility / Document Prep #805

Open
5 of 14 tasks
Tracked by #803
brian-ruf opened this issue Oct 23, 2024 · 8 comments
Open
5 of 14 tasks
Tracked by #803
Labels

Comments

@brian-ruf
Copy link
Collaborator

brian-ruf commented Oct 23, 2024

This is a ...

fix - something needs to be different

This relates to ...

  • the Guide to OSCAL-based FedRAMP System Security Plans (SSP)
  • the FedRAMP SSP OSCAL Template (JSON or XML Format)
  • the FedRAMP OSCAL Validations

User Story

As a consumer of FedRAMP automated completeness checks I want the following OSCAL-based SSP items to be automatically verified for completeness by metaschema constraints:

  • System Owner
  • ISSO
  • Prepared By
  • Prepared For

Goals

SSP Completeness checks are defined, tested and documented

Dependencies

No response

Acceptance Criteria

  • All FedRAMP Documents Related to OSCAL Adoption (https://github.com/GSA/fedramp-automation) affected by the changes in this issue have been updated.
  • A Pull Request (PR) is submitted that fully addresses the goals of this User Story. This issue is referenced in the PR.
  • all constraints associated with the review task have been converted/created
  • automate.fedramp.gov content has been updated accordingly
  • the metaschema help prop has an appropriate link to the constraint
  • the template has an content that models the desired OSCAL presentation
  • the constraint runs against the example template
  • known-bad content has been created
  • the constraint appropriately flags the known-bad content as invalid

Other information

No response

Tasks

@brian-ruf brian-ruf added the enhancement New feature or request label Oct 23, 2024
@aj-stein-gsa aj-stein-gsa moved this from 🆕 New to 🔖 Ready in FedRAMP Automation Oct 31, 2024
@Rene2mt
Copy link
Member

Rene2mt commented Nov 4, 2024

@brian-ruf please review this analysis of data needs relative to core OSCAL syntax and FedRAMP OSCAL requirements:

Data Location Core OSCAL legacy constraint new constraint notes
System Owner //metadata/party[@uuid=[//metadata/responsible-party[@role-id='system-owner']/party-uuid]]/name Y role-defined-system-owner, responsible-party-is-person Converted #693, #652
ISSO //metadata/party[@uuid=[//metadata/responsible-party[@role-id='information-system-security-officer']/party-uuid]]/name Y role-defined-information-system-security-officer, responsible-party-is-person Converted #686, #652
Prepared By //metadata/party[@uuid=[//metadata/responsible-party[@role-id='prepared-by']/party-uuid]]/name Y not found Needed  #861
Prepared For //metadata/party[@uuid=[//metadata/responsible-party[@role-id='prepared-for']/party-uuid]]/name Y not found Needed  #862

Per @brian-ruf comment below, need to ensure the party @name AND contact information (e.g., mailing address, phone, email, etc.) is provided.

@aj-stein-gsa
Copy link
Contributor

Prepared By //metadata/party[@uuid=[//metadata/responsible-party[@role-id='prepared-by']/party-uuid]]/name Y not found Needed  
Prepared For //metadata/party[@uuid=[//metadata/responsible-party[@role-id='prepared-for']/party-uuid]]/name Y not found Needed

What does FedRAMP do with prepared-by and prepared-for? Beyond filling it out, is there something meaningful that happens when they are incorrect?

@Rene2mt
Copy link
Member

Rene2mt commented Nov 4, 2024

Some CSPs outsource some of the security documentation, which is fine. In those cases, it may be helpful for independent assessors and/or FedRAMP reviewers know who prepared the documents as they may need to have them participate in the authorization process (interviews during assessment, documentation deficiencies that need to be addressed, etc.).

Some documents (such as the SAR), should be prepared-by by an independent assessor, not the CSP so this information allows FedRAMP to check that.

On the JAB, we'd occasionally get inquiries about what 3PAO did an assessment (for an initial authorization, annual assessment, or a significant change). In those cases, knowing the prepared-by is also helpful.

@brian-ruf
Copy link
Collaborator Author

@Rene2mt for all of the data needs, you are pointing to the name, which is the most important field, but we also need to check for contact information for each of those parties, consistent with the template data requirements for those fields. Otherwise, these look right.

@aj-stein-gsa it's not always about consequences or even the ability to detect accuracy. This information is considered to be an assertion by the SSP author as validated by the executive who signed off on the SSP.

If we need to reach the appropriate parties for those roles and the contact information turns out to be wrong, it can cause delays in resolving issues, and reflects negatively on the CSP. As an isolated incident, not much happens beyond having the CSP correct the data, but as part of a larger pattern of inaccurate information in an SSP, the CSP could be put on a corrective action plan.

@aj-stein-gsa
Copy link
Contributor

@Rene2mt for all of the data needs, you are pointing to the name, which is the most important field, but we also need to check for contact information for each of those parties, consistent with the template data requirements for those fields. Otherwise, these look right.

All good points.

@aj-stein-gsa it's not always about consequences or even the ability to detect accuracy. This information is considered to be an assertion by the SSP author as validated by the executive who signed off on the SSP.

If we need to reach the appropriate parties for those roles and the contact information turns out to be wrong, it can cause delays in resolving issues, and reflects negatively on the CSP. As an isolated incident, not much happens beyond having the CSP correct the data, but as part of a larger pattern of inaccurate information in an SSP, the CSP could be put on a corrective action plan.

Fair enough, I was unclear if we are suggesting here it is a simple completeness check or something more comprehensive. I wanted to understand if there are deeper requirements and what is a positive requirement beyond the obvious (is this really your email; is this your phone number). That lends itself to later checks, but you are still right about the foundational ones.

@aj-stein-gsa aj-stein-gsa moved this from 🔖 Ready to 🔍 Active Objectives and Issues in FedRAMP Automation Nov 5, 2024
@brian-ruf
Copy link
Collaborator Author

One other note on party address. OSCAL accepts two approaches for associating an address with a party. The first is to use the address assembly within the party itself. The other is to use the location-uuid to link a party with an address. The former is more typical with a one-off address, which the latter is more used for situations where 10 parties may all be housed at the same corporate office. Both should be acceptable for FedRAMP.

@aj-stein-gsa
Copy link
Contributor

The other is to use the location-uuid to link a party with an address. The former is more typical with a one-off address, which the latter is more used for situations where 10 parties may all be housed at the same corporate office. Both should be acceptable for FedRAMP.

Somehow I missed this while rushing through looking at the core models in web form and not doing my usual "I am in the Matrix, I read raw Metaschema approach" approach late in the evening. This is a failure on my part, I am going to update the requirements in the respective issues #861 and #862.

Thanks again to you and @Rene2mt for reminding me in the chat.

@brian-ruf
Copy link
Collaborator Author

brian-ruf commented Nov 8, 2024

Example SSP content is being updated HERE.

Data Location Documentation Link Documentation Notes Example Updated
System Owner //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid] https://automate.fedramp.gov/documentation/ssp/4-ssp-template-to-oscal-mapping/#information-system-owner Update example to use valid UUIDs
Incorrect indentation in example (i.e. mail-stop prop, email, phone, etc.)
Y
ISSO //metadata/party[@uuid=//metadata/responsible-party[@role-id="information-system-security-officer"]/party-uuid] https://automate.fedramp.gov/documentation/ssp/4-ssp-template-to-oscal-mapping/#assignment-of-security-responsibilities Clean up example (incorrect cut comments)
use proper UUIDs
Align xpath with example (example has address in party, but xpath looks for location-uuid)
append /@value to end of xapth for POC's Title
Y
Prepared By //metadata/party[@uuid=//metadata/responsible-party[@role-id='prepared-by']/party-uuid] https://automate.fedramp.gov/documentation/general-concepts/4-expressing-common-fedramp-template-elements-in-oscal/#prepared-by-third-party
https://automate.fedramp.gov/documentation/general-concepts/4-expressing-common-fedramp-template-elements-in-oscal/#prepared-by-csp-self-prepared
xpath is wrong (incorrectly uses obsolete part/org/org-name)
xpath is missing. Use values below this table.
Examples should be expanded to become valid (i.e. by including the cut location content)
Y
Prepared For //metadata/party[@uuid=//metadata/responsible-party[@role-id='prepared-for']/party-uuid] https://automate.fedramp.gov/documentation/general-concepts/4-expressing-common-fedramp-template-elements-in-oscal/#prepared-for-csp xpath is wrong (incorrectly uses obsolete part/org/org-name)
xpath is missing. Use values below this table.
Examples should be expanded to become valid (i.e. by including the cut location content)
Y

Prepared By/For require:

  • Org Name (//metadata/party[@uuid=//metadata/responsible-party[@role-id='prepared-by']/party-uuid]/name)
  • Address
    • Address can be associated with the org in one of two ways:
      • via the party/address assembly: //metadata/party[@uuid=//metadata/responsible-party[@role-id='prepared-by']/party-uuid]/address
      • via location-uuid: //metadata/location[@uuid=//metadata/party[@uuid=//metadata/responsible-party[@role-id='prepared-by']/party-uuid]/location-uuid]/address
    • In either case, the child fields of address must include city, state, postal-code and at least one addr-line. I

System Owner and ISSO require:

  • Individual's Name: //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/name
  • Individual's Title: //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/prop[@name='job-title']
  • Company/Org Name: //metadata/party[@uuid=//metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/member-of-organization]/name
  • Address
    • Address can be associated with the org in one of two ways:
      • via the party/address assembly: //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/address
      • via location-uuid: //metadata/location[@uuid=//metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/location-uuid]/address
    • In either case, the child fields of address must include city, state, postal-code and at least one addr-line.
  • Phone Number: //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/telephone-number
  • Email Address: //metadata/party[@uuid=//metadata/responsible-party[@role-id='system-owner']/party-uuid]/email-address

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: 🔍 Active Objectives and Issues
Development

No branches or pull requests

3 participants