Skip to main content

Open Compliance Tool

Project description

OCTool

Overview

OCTool aspires to be an open compliance tool and library.

It uses Pandoc, TeXLive, LuaTeX, and an open data schema to produce compliance documents, such as System Security Plans (SSPs).

This repo provides:

How-to

Get started with an example

This repo provides an example tree at example-inputs/minimal.

The easy way

Pull an already-built Docker image
docker pull jumanjiman/octool
Generate an SSP from the example data with Docker
docker run --rm -it -v /tmp:/data jumanjiman/octool ssp /example-inputs/minimal

The above command builds the SSP and saves it at /tmp/ssp.pdf on your Docker host.

Roll-your-own deployment

Prereqs

Your host needs these packages:

  • Ruby 2.4+
  • Pandoc 2.9+
  • Python 3.6+
  • TexLive full distribution, including LuaTeX and XeLaTeX
Install OCTool
gem install --user-install octool
Generate an SSP from the example data with your own deployment
  1. Confirm the example data is valid

    octool validate example-inputs/minimal/config.yaml
    
  2. Build a PDF

    octool ssp example-inputs/minimal/config.yaml
    
  3. The result should look like the example output at example-outputs/minimal/ssp.pdf.

Write your own data files

The schemas are at src/schemas/.
Things to know:

  • All text strings are interpreted as markdown.
    You can use markdown in your data anywhere a string is required.
    See example-inputs/minimal for demo data.

    :bulb: Pandoc has its own flavor of markdown.
    See https://pandoc.org/MANUAL.html#pandocs-markdown
    for differences from other flavors.

    :bulb: When you reference paths to images within your markdown, the
    path is relative to the directory in which config.yaml is stored.
    See the example-inputs files for clarity.

  • You can run octool validate path/to/inputs
    to confirm your data structure.

  • Do you want to run octool in a read-only container?
    TeX needs to write to at least one directory.
    Make at least one of these a volume in your container:

    • ${HOME} (inconvenient for unprivileged user with read-only homedir)
    • /usr/share/texmf-var (writable only by root)

    The Docker image in this repo works around the issue to
    enable read-only containers.

Pandoc filters

OCTool builds in support for these Pandoc filters via the schema:

Build and test

This repo builds, tests, and publishes a Docker image that includes the full TeXLive distribution and OCTool. The test harness runs the container with a read-only root filesystem and reduced privileges to demonstrate good security practices for containerized applications.

# Setup your dev environment.
sdlc/bootstrap

# Build and test.
sdlc/build && sdlc/test

Concepts

Entities

This diagram helps to illustrate the definitions that follow.
It reads top-down and left-to-right.

  • System: A potentially-complex technology architecture that includes one or more components.

  • ConfigFile: An OCTool configuration file.

  • Component: A list of components within the system along with attestations to satisfy one or more controls.

  • Standard: A list that defines one or more security controls.

    An example of a standard is NIST 800-53 or Payment Card Industry Data Security Standards (PCI DSS).

  • Control: A specific requirement or process to describe and mitigate risk.

  • Certification: A list that requires one or more controls.

    A certification requires all or a subset of controls from one or more standards.
    A hypothetical certification could include all of NIST 800-53 plus a specific subset of PCI DSS.

    An Authority to Operate (ATO) is one example of a certification. A request list from an auditor is another example.

System vs component

A component and a system can be identical from a compliance perspective in the simplest cases. It is common, however, that a complex system delegates compliance to multiple responsible parties along organizational boundaries in a shared services model.

Consider, for example, an organization that owns its datacenter and assigns responsibility for physical access to a dedicated team.

  • The organization can describe the datacenter as a component and describe its compliance to physical access controls within a shareable component called datacenter.

  • Teams that operate software within the datacenter can then include the datacenter component within their own compliance documentation.

With the shared services model, the system compliance documentation includes various components. Its compliance documentation is assembled from various components.

Thus some systems are described by multiple components; smaller systems, by a single component.

Benefits

  • If an application owner requests an exception to a control from a shared component, the InfoSec team can run an impact assessment to see which other applications (systems) and/or certifications would be impacted by the exception.

  • The organization can use the system to ask what-if questions.

  • Compliance and regulatory teams have a central source of truth from which to answer questions.

  • Git provides an audit log of changes to the compliance docs.

  • The intermediate output (SQL database, CSV, etc.) is available so teams can choose whatever analytical tools they prefer.

Administrivia

Goals

  • Read input configuration in multiple formats
  • Generate output documentation for governance and compliance
    • Excel
    • Markdown
    • PDF
    • Word
  • Convert inputs to a well-defined data structure
    • Intermediate output
      • CSV
      • Excel
      • SQLite
    • Facilitate gap analysis
    • Facilitate impact analysis for exceptions

Project details


Download files

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

Source Distribution

octool-0.0.11.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

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

octool-0.0.11-py3-none-any.whl (10.4 kB view details)

Uploaded Python 3

File details

Details for the file octool-0.0.11.tar.gz.

File metadata

  • Download URL: octool-0.0.11.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for octool-0.0.11.tar.gz
Algorithm Hash digest
SHA256 b2f8c22bab593155d51ed90830455cec2e48d8ace567c1d7d12a929ff8aab28c
MD5 3d725fda4fb3054158a07391fcd45980
BLAKE2b-256 e840dbdaa1de3f53768d33107ba8b6226c3b3feb7b12fc6ddb583b432ad46fe9

See more details on using hashes here.

File details

Details for the file octool-0.0.11-py3-none-any.whl.

File metadata

  • Download URL: octool-0.0.11-py3-none-any.whl
  • Upload date:
  • Size: 10.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.1 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.8.2

File hashes

Hashes for octool-0.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 6a94bcee6a1176dbd8fe9aa1e37fd190c21ddad9ea8dbf407aec89c1fefda8fd
MD5 01e65752a75ee6e44b919fdc91f4e651
BLAKE2b-256 d465d4f3d87e15e58ecfd13e87aef2943b6e54021116a78068071a637083c18c

See more details on using hashes here.

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