Skip to main content

Tools to manage & autogenerate python objects representing the OSCAL layers/models

Project description

Logo Compliance-trestle (also known as trestle)

OS Compatibility PyPI - Python Version Pre-commit Code Coverage Quality gate Pypi GitHub Actions status OpenSSF Best Practices OpenSSF Scorecard

Trestle is an ensemble of tools that enable the creation, validation, and governance of documentation artifacts for compliance needs. It leverages NIST's OSCAL as a standard data format for interchange between tools and people, and provides an opinionated approach to OSCAL adoption.

Trestle is designed to operate as a CICD pipeline running on top of compliance artifacts in git, to provide transparency for the state of compliance across multiple stakeholders in an environment friendly to developers. Trestle passes the generated artifacts onto tools that orchestrate the enforcement, measurement, and reporting of compliance.

It also provides tooling to manage OSCAL documents in a more human-friendly manner. By splitting large OSCAL data structures into smaller and easier to edit sub-structures, creation and maintenance of these artifacts can follow normal git workflows including peer review via pull request, versioning, releases/tagging.

Trestle provides three separate but related functions in the compliance space:

  • Manage OSCAL documents to allow editing and manipulation while making sure the schemas are enforced
  • Transform documents from other formats to OSCAL
  • Provide support and governance to author compliance content as markdown and drawio.

Trestle provides tooling to help orchestrate the compliance process across a number of dimensions:

  • Help manage OSCAL documents in a more human-friendly manner by expanding the large OSCAL data structures into smaller and easier to edit sub-structures while making sure the schemas are enforced.
  • Transform documents from other formats to OSCAL
  • Provide governance for markdown documents and enforce consistency of format and content based on specified templates
  • Tooling manage authoring and governance of markdown and drawio files within a repository.
  • Support within trestle to streamline management within a managed git environment.
  • An underlying object model that supports developers interacting with OSCAL artifacts.

Why Trestle

Compliance suffers from being a complex topic that is hard to articulate simply. It involves complete and accurate execution of multiple procedures across many disciplines (e.g. IT, HR, management) with periodic verification and audit of those procedures against controls.

While it is possible to manage the description of controls and how an organization implements them in ad hoc ways with general tools (spreadsheets, documents), this is hard to maintain for multiple accreditations and, in the IT domain at least, creates a barrier between the compliance efforts and the people doing daily work (DevOps staff).

Trestle aims to reduce or remove this barrier by bringing the maintenance of control descriptions into the DevOps domain. The goal is to have changes to the system (for example, updates to configuration management) easily related to the controls impacted, and to enable modification of those controls as required in concert with the system changes.

Trestle implicitly provides a core opinionated workflow driven by its pipeline to allow standardized interlocks with other compliance tooling platforms.

Machine readable compliance format

Compliance activities at scale, whether size of estate or number of accreditations, require automation to be successful and repeatable. OSCAL as a standard allows teams to bridge between the "Governance" layer and operational tools.

By building human managed artifacts into OSCAL, Trestle is not only able to validate the integrity of the artifacts that people generate - it also enables reuse and sharing of artifacts, and furthermore can provide suitable input into tools that automate operational compliance.

Supported OSCAL elements and extensions

trestle implicitly supports all OSCAL schemas for use within the object model. The development roadmap for trestle includes adding workflow around specific elements / objects that is opinionated.

Supported file formats for OSCAL objects.

OSCAL supports xml, json and yaml with their metaschema tooling. Trestle natively supports only json and yaml formats at this time.

Future roadmap anticipates that support for xml import and upstream references will be enabled. However, it is expected that full support will remain only for json and yaml.

Users needing to import XML OSCAL artifacts are recommended to look at NIST's XML to json conversion page here.

Python codebase, easy installation via pip

Trestle runs on almost all Python platforms (e.g. Linux, Mac, Windows), is available on PyPi and can be easily installed via pip. It is under active development and new releases are made available regularly.
To install run: pip install compliance-trestle
See Install trestle in a python virtual environment for the full installation guide.

Complete documentation and tutorials

Complete documentation, tutorials, and background on compliance can be found here.

Agile Authoring

A trestle-based agile authoring repository setup tool, documentation and tutorial can be found here.

Agile authoring comprises the following beneficial features:

  • based on OSCAL documents behind-the-scenes
  • employs GIT for document control and access
  • exposes text (markdown) and spread sheets (csv) to ease management of compliance artifacts
  • implements compliance digitization for improved audit readiness and cost effectiveness

Demos

An end to end demo utilizing trestle, agile authoring and compliance-to-policy.

A collection of demos utilizing trestle can be found in the related project compliance-trestle-demos.

Development status

v4: stable (actively developed)

  • supports NIST OSCAL 1.2.1 as well as previous versions
  • supports newly released Mapping Model

v3: stable (maintenance mode)

  • supports NIST OSCAL 1.1.3 as well as previous versions
  • limited support until June 30, 2026

v2: stable (deprecated)

  • supports NIST OSCAL 1.0.4 as well as previous versions
  • no longer supported

Community meetings and communications

Please refer to the community README for communication details.

Contributing to Trestle

Our project welcomes external contributions. Please consult contributing to get started.

Security

For information about security features, best practices, and how to report security vulnerabilities, please see our Security Policy.

Code of Conduct

Participation in the OSCAL Compass community is governed by the Code of Conduct.

License & Authors

If you would like to see the detailed LICENSE click here. Consult contributors for a list of authors and maintainers for the core team.

# Copyright (c) 2024 The OSCAL Compass Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

We are a Cloud Native Computing Foundation sandbox project.

The Linux Foundation® (TLF) has registered trademarks and uses trademarks. For a list of TLF trademarks, see Trademark Usage".

Trestle was originally created by IBM.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

compliance_trestle-4.0.3.tar.gz (330.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

compliance_trestle-4.0.3-py3-none-any.whl (477.3 kB view details)

Uploaded Python 3

File details

Details for the file compliance_trestle-4.0.3.tar.gz.

File metadata

  • Download URL: compliance_trestle-4.0.3.tar.gz
  • Upload date:
  • Size: 330.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for compliance_trestle-4.0.3.tar.gz
Algorithm Hash digest
SHA256 9084287775e34155b61938318fe59dc59efcd076b215ed041273f4286e35fd2c
MD5 6417db4b66811778cadbc7b0a5d5f4e7
BLAKE2b-256 26549b548300fee6e67fd56810483b0e7aa2e3b6203fb46f294e198193c53c40

See more details on using hashes here.

Provenance

The following attestation bundles were made for compliance_trestle-4.0.3.tar.gz:

Publisher: python-push.yml on oscal-compass/compliance-trestle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file compliance_trestle-4.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for compliance_trestle-4.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 3bcd5763574e73d5533b637179c5af18d427d8ccbb5f50354d0b5cd6d0afbcdb
MD5 48a7e7e56d2bd25b021c92835ed19e87
BLAKE2b-256 10446e68810a33ca7b29a9f45e5765481e6eb6e0abccd401eb8f93694ff2cd11

See more details on using hashes here.

Provenance

The following attestation bundles were made for compliance_trestle-4.0.3-py3-none-any.whl:

Publisher: python-push.yml on oscal-compass/compliance-trestle

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page