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.jsonfile providing a manifest enhanced with additional metadata will support the indexing and selection of appropriate component defintions. - Suggested tags:
OSCAL Component LibraryNIST SP 800-53r4NIST SP 800-53r5CMS ARS 5.0OpenControlOSCAL 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-namewith 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.shconverts OpenControl components in library to OSCAL-1.0.2validate.shvalidates 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-nametemplate.
- A folder of default odp.json files for completing the
component-name/template/- A location for OpenControl and/or OSCAL templates enabling greater reusability.