ComplianceAsCode / auditree-arboretum

The Auditree common fetchers, checks and harvest reports library.
https://auditree.github.io/
Apache License 2.0
17 stars 10 forks source link
compliance compliance-as-code compliance-automation continuous-compliance devops devsecops python

OS Compatibility Python Compatibility pre-commit Code validation Upload Python Package

auditree-arboretum

The Auditree common fetchers, checks and harvest reports library.

Introduction

Auditree Arboretum is a Python library of common compliance fetchers, checks & harvest reports built upon the Auditree compliance automation framework.

Repo content

Functionality categorization

Arboretum fetchers, checks, and Harvest reports are organized into functional grouping categories. The following categories have either been contributed to or will be contributed to in the near future. We anticipate that this list will grow as arboretum matures.

Fetchers

Please read the framework documentation for fetcher design principles before contributing a fetcher.

Fetchers must apply no logic to the data they retrieve. They must write unadulterated (modulo sorting & de-duplication) into the /raw area of the locker via the framework-provided decorators or context managers.

Fetchers must be atomic - retrieving and creating the data they are responsible for. Fetcher execution order is not guaranteed and so you must not assume that evidence already exists and is current in the locker. Use evidence dependency chaining if a fetcher depends on evidence gathered by another fetcher in order to gather its intended evidence.

Fetchers should be as fast as the API call allows. If a call is long running it should be separated into a dedicated evidence providing tool, which places data where a fetcher can retrieve it easily & quickly.

Checks

Please read the framework documentation for check design principles before contributing a check.

Checks should only use evidence from the evidence locker to perform check operations. Also, checks should not write or change evidence from the evidence locker. That is the job of a fetcher.

Jinja is used to produce reports from checks. As such each check class must have at least one associated report template in order to produce a check report. In keeping with the "DevSecOps" theme, check reports are meant to provide details on violations identified by checks. These violations are in the form of failures and warnings. They aren't meant to be used to format fetched raw evidence into a readable report. Harvest reports should be used to satisfy that need.

Harvest Reports

Harvest reports are hosted with the fetchers/checks that collect the evidence for the reports process. Within auditree-arboretum this means the harvest report code lives in reports folders throughout this repository. For more details check out harvest report development in the harvest README.

Usage

arboretum is available for download from PyPI.

Prerequisites

Integration

Follow these steps to integrate auditree-arboretum fetchers and checks into your project: