Skip to content
This repository has been archived by the owner on Dec 12, 2023. It is now read-only.

Architectural Overview

Daniel Naab edited this page Oct 25, 2022 · 13 revisions

General Project Architectural Decisions

Architectural decisions were recorded

Relevant ADR

Core architectural decisions are recorded in the Github repository as "Architectural Decision Records" (ADRs).

Release and versioning strategy

Relevant ADR

Releases are published via Github Releases and versioned with "Spock versioning."

Team permissions management

Relevant ADR

Project followed GSA TTS Recommendations for GitHub team organization

Usage metrics data collection

Relevant ADR

Collection of usage metrics is performed by the Digital Analytics Program, and previously, Google Forms.

Code-Specific Architectural Decisions

XML and Schematron

Relevant ADR

XML was originally chosen as the basis for validations due to the usage of XML technologies in OSCAL. This was continued throughout the project, which allowed easier integration with the NIST toolchain.

XSLT Library

Relevant ADR

The choice of Schematron for validation required the usage of an XSLT processor. Several processors were evaluated, with the Saxon suite chosen as the only viable XSLT 3.0 option.

XSLT integration within Schematron

Relevant ADR

To augment the limited functionality of Schematron, XSLT is directly utilized.

Shell-based validation pipeline

Relevant ADR

The decision was made to initially focus on shell-based XSLT pipelines. Subsequently, examples for validating documents in several programming languages were created.

XProc pipelining was investigated

Relevant ADR

Ultimately the level of effort required was deemed outside the scope of the project and likely to interfere with FedRAMP validation development.

Client-side validation web interface

Relevant ADR

Initially intended for internal testing, as a proof-of-concept, and as a readable report to review validation results - the web interface evolved into a tool used by vendors, Cloud Service Providers (CSPs), and third-party assessment organizations (3PAO) for validation of OSCAL documents.

Attachment Validation Approach

Relevant ADR

Due to the complexity of inputs and a considerable number of possible filetypes, attachment validation was primarily left to (as yet undefined) post-validation processes and, as is current practice, manual review by FedRAMP reviewers.

Multi-document Validation Rules

Relevant ADR

A manner of writing cross-document rules was considered. Due to technical challenges, cross-document rules were not implemented. A proposal to define a FedRAMP submission package manifest file, described in this ADR, remains unresolved.

Remote Resources

Relevant ADR

Some Schematron assertions require access to documents other than the one being validated. Since these may rely on the network to function, such use should be optional. The decision was made to utilize an XSLT parameter to enable remote resource validations.

DNS Validation

Relevant ADR

Some validations require DNS queries to be performed from within Schematron. There are public DNS services which provide DNS over HTTPS (DoH) with responses in JSON format. The decision was made to use Google Public DNS via its JSON API for DNS over HTTPS (DoH).

Future Suggestions

SchXSLT

Relevant Github Issue

Consider switching from the current Schematron implementation to SchXSLT.

Implement XML schema validation

The web validation does not currently validate the XML schema, due to the lack of a suitable client-side option. A server-side validation, provided for instance via Saxon-EE, could be considered.

Implement Web-based FedRAMP Automation Guidance

The current guide documents are difficult to maintain and update due to being PDF-based. A web-based guide would enable hyperlinks between pages, as well as enable a collaborative git-based workflow. A git-based workflow would support community contributions via pull-requests, as well as revision history.