-
Notifications
You must be signed in to change notification settings - Fork 1
FAQ
Frequent operator questions with accurate, source-backed answers. Each answer links to the guide or concept page that covers the topic in depth.
A control inventory describes what your organization actually does
today ("what do we have?"). The gap analyzer compares it against a
framework catalog ("what does the framework require?") and reports the
gaps. It is not an evidence directory — --inventory takes a single
YAML, CSV, or JSON file.
The minimal shape is an organization string plus a controls[] list,
where each control has an id (matching framework control IDs like
AC-2, SC-13, CC6.1), an optional title, a status (one of
implemented / partially_implemented / planned / not_implemented
/ not_applicable), and optional implementation_notes + owner.
A ready-to-run starter template ships inside the installed package
so a fresh pip install evidentia can run the quickstart with zero
setup. Locate it from Python:
from importlib.resources import files
path = files("evidentia.examples") / "sample-inventory.yaml"Then run a gap analysis against a bundled framework:
evidentia gap analyze \
--inventory <path-to-sample-inventory.yaml> \
--frameworks nist-800-53-rev5-moderate \
--output gap-report.jsonThe sample's control IDs are all drawn from the bundled
nist-800-53-rev5-moderate catalog, so it produces a meaningful report
out of the box. See Guides → Run gap analysis
for the full walkthrough.
This is a common confusion, so to be precise: CIMD and signing are two different mechanisms that solve two different problems.
-
CIMD (Client ID Metadata Document) is an OAuth client-scope gating layer for the MCP server, per the OAuth Dynamic Client Registration spec (RFC 7591). It lets you register multiple MCP clients (e.g.
claude-desktop,readonly-agent) each with ascopefield that allowlists which tools that client may call, and it logs the callingclient_idin the audit trail. CIMD is NOT authentication and NOT a signature — a client connecting without transport auth can claim anyclient_id, so operators deploying CIMD must also wire transport auth. CIMD answers "which tools may this client invoke?" -
Signing is a cryptographic integrity + provenance mechanism. MCP tool output is signed via the
SignedToolOutputenvelope (Sigstore-keyless), and OSCAL documents are signed with GPG detached signatures (the air-gap path) or Sigstore/cosign (the online path). Signing answers "did this output really come from Evidentia, and has it been tampered with?"
So CIMD gives you per-client tool authorization + an audit trail of who called what; signing the file gives you tamper-evidence + provenance. They compose, but neither substitutes for the other. See Concepts → Evidence integrity for the signing chain and Guides → Sign and verify evidence for the recipes.
Yes — this is a first-class design goal. Evidentia's gap arithmetic runs
on-device; the only optional outbound calls are LLM API requests. The
global --offline flag fails closed on any non-local network call
(every LLM / network call consults the network_guard module, which
raises before any network IO fires for non-loopback / non-RFC-1918
targets), and evidentia doctor --check-air-gap validates your posture.
For installing without PyPI reach, use the offline wheelhouse pattern and the GPG-only signing fallback (for enclaves that cannot reach Sigstore's Fulcio/Rekor). See Guides → Air-gapped install.
They are two different OCSF classes for two different purposes:
-
Compliance Finding (
class_uid2003) is the semantically correct class for compliance-posture results — "control X is satisfied / not satisfied". This is whatevidentia gap analyze --format ocsfemits, and whatfinding_from_ocsfingests. -
Detection Finding (
class_uid2004) is what security scanners like Prowler and AWS Security Hub emit — security detections, not compliance posture. Evidentia ingests these viafinding_from_ocsf_detectionand can emit them withevidentia gap analyze --format ocsf-detectionfor SIEM ingestion (Splunk / Elastic / Sentinel / Datadog read 2004 natively).
So: emit 2003 when your consumer wants compliance posture; ingest 2004 when pulling from a scanner; emit 2004 when feeding a SIEM. See Compliance → OCSF mapping for the NORMATIVE field map and Guides → Ingest OCSF / Guides → Emit OCSF Detection.
Open a 3-file PR: add a catalog file (YAML or JSON — the loader
auto-detects by extension) under the appropriate data/<region>/
directory, run python scripts/catalogs/regenerate_manifest.py to
update the auto-generated frameworks.yaml manifest, and stage both.
The required schema (framework_id, tier, category, families,
controls[], plus the Tier-C placeholder / license_required /
license_url fields for copyrighted frameworks) is documented in
Compliance → Contributing a catalog.
If the framework's control text is copyrighted (ISO, CIS, PCI DSS,
etc.), ship it as a Tier-C placeholder — control IDs + neutral
titles only, with a license_url — and let operators import their
licensed copy with evidentia catalog import. See the
Catalog inventory for the tier
conventions.
Because the OSPS conformance checks are exposed as a library surface,
not a CLI collector verb. The collect command group covers the
SaaS / cloud / database collectors (aws, github, okta, sql,
databricks, snowflake, vanta, drata, bitsight,
securityscorecard, ocsf, convert) — there is intentionally no
evidentia collect osps.
Instead, the ~16 OSPS conformance checks live as
populate_osps_*(client, owner, repo) helper functions in
evidentia_collectors.github.osps. Each returns one SecurityFinding
with a compliance_status mapped from a GitHub REST API observation. You
drive them from a small script (the
OSPS Baseline mapping +
Guides → OSPS self-assessment
pages show the pattern). They were shipped as library helpers because
they are most useful composed into a project's own conformance-attestation
tooling — exactly how Evidentia's own
OSPS-CONFORMANCE.md
-
verify-osps-conformance.ymlCI gate uses them.
Every tagged release ships PEP 740 attestations on the wheels + sdist
(Sigstore-signed, Rekor-logged), a cosign SLSA Provenance v1 attestation
on the container, and a CycloneDX 1.6 SBOM attached to the GitHub
Release. Consumer-side recipes for pip/pypi-attestations, cosign,
osv-scanner, and SLSA provenance verification are in
Project → Verification. The supply-chain
attestations Evidentia itself produces are summarized on
Compliance → Framework conformance.
No third-party audit has been conducted. Evidentia's OpenSSF OSPS Baseline conformance (Maturity 2, with partial Maturity 3) is a self-assessment backed by a re-validating CI gate; it holds the OpenSSF Best Practices Badge at Silver and runs OpenSSF Scorecard weekly. See Framework conformance for exactly what is and is not claimed.
-
- AI Governance
- Air Gapped Install
- Ci Integration
- CONMON Deployment
- Emit Cyclonedx VEX
- Emit OCSF Detection
- Emit SARIF
- Explain Controls
- Generate And Quantify Risk
- Governance Metrics And Workflows
- Ingest OCSF
- Manage Model Risk
- Manage POAM
- Manage Third Party Risk
- MCP Client Setup
- OSPS Self Assessment
- Run Gap Analysis
- Serve The Web Ui
- Sign And Verify Evidence