version 0.1.0
This is a reusable compliance component library. It contains (either or both) OpenControl and NIST OSCAL component definitions and ancillary information such as control verification methods.
A collection of free and open source (FOSS) tools are being built that will enable library access and component review and selection. These include:
NIST OSCAL defines a component as:
- A description of the controls that are supported in a given implementation of a hardware, software, service, policy, process, procedure, or compliance artifact (e.g., FIPS 140-2 validation).
- A component can be either a technical component, or a documentary component.
- A technical component is a component that is implemented in hardware (physical or virtual) or software.
- A documentary component is a component implemented in a document, such as a process, procedure, or policy.
A perhaps simpler way to think of a component is as:
- A reusable grouping of partial or complete control implementation statements (or justifications, possibly in template form) that deal with specific security requirements of a defined technology, function and/or process.
-
README.md
- This file.
-
code.json
- The format of this file is defined in https://code.gov/agency-compliance/compliance/inventory-code.
- We expect that there will be a number of component libraries offering reusable, general-purpose components.
- A
code.json
file providing a manifest enhanced with additional metadata will support the indexing and selection of appropriate component defintions. - Suggested tags:
OSCAL Component Library
NIST SP 800-53r4
NIST SP 800-53r5
CMS ARS 5.0
OpenControl
OSCAL v1.0.x
-
example-org-metadata.json
- Metadata, defined by an agency, organization or group, that can provide defaults when viewng component definitions or assembling them into SSPs.
-
component-name/
- The name of a component-definition in the library, e.g. "
django
". - Note that there may be several instances of the
component-name
with different uses, inheritance, impact levels, etc. Initially we will manage these as branches. - We could instead add a level of indirection:
component-name/unique-descriptive-tag/
such as:component-name/aws-moderate/
component-name/azure-high/
component-name/vendor-default/
- The name of a component-definition in the library, e.g. "
-
component-name/opencontrol/component.yaml
- The OpenControl reusable component in machine readable YAML. Can be used either:
- during refactoring of an existing SSP into known components, or
- when creating a new SSP that employs the component's technology (policy/process/etc).
- The OpenControl reusable component in machine readable YAML. Can be used either:
-
component-name/oscal/
- Location for the OSCAL reusable component (similar to OpenControl above).
-
scripts/
oc_to_oscal.sh
converts OpenControl components in library to OSCAL-1.0.2validate.sh
validates components in library to be OSCAL-1.0.2 compliant
odp-defaults/
- A folder of global odp.json files for completing templates with "organizational defined parameters".
component-name/odp/
- A folder of default odp.json files for completing the
component-name
template.
- A folder of default odp.json files for completing the
component-name/template/
- A location for OpenControl and/or OSCAL templates enabling greater reusability.