Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

kenithphilip/FedPy

Repository files navigation

FedRAMP 20x Compliance Tooling

Read-only, evidence-grade automation for FedRAMP 20x (and Rev5) — collect cloud configuration evidence against all 63 Key Security Indicators and 223 requirements, benchmark your infrastructure against NIST SP 800-53 at Low / Moderate / High, and track implementation across your team.

CI License: Apache 2.0 TypeScript Node Bun Deno Tests

This repository contains two complementary projects that together cover the full FedRAMP 20x lifecycle — automated technical evidence on one side, and human-tracked governance state on the other.

Project What it does Stack
cloud-evidence/ A read-only collector that captures AWS + GCP + Kubernetes configuration evidence for every FedRAMP 20x KSI, scores it, signs it, maps it to NIST 800-53, and pushes it to your GRC stack. TypeScript · Node (tsx) or Bun · AWS SDK v3 · googleapis · @kubernetes/client-node
tracker/ A local, multi-user web dashboard over the FedRAMP machine-readable (FRMR) catalog for tracking implementation status, ownership, evidence links, and the NIST crosswalk. TypeScript · Hono · better-sqlite3 · React + Vite

Table of contents


Why this exists

FedRAMP 20x reframes authorization around machine-readable, continuously verified evidence instead of static SSP narratives. The authoritative source of truth is the FedRAMP machine-readable (FRMR) data, which defines Key Security Indicators (KSIs) and FedRAMP Requirements (FRRs).

This tooling turns that source of truth into two practical workflows:

  1. Prove it automatically. cloud-evidence logs into your cloud accounts read-only, evaluates the cloud-testable indicators directly against live configuration, and emits signed, schema-valid, OSCAL-mapped evidence — so the evidence is reproducible and auditor-verifiable, not hand-assembled.
  2. Track the rest. Not every requirement is cloud-API-testable (a large share are governance/process obligations). The tracker gives your team a shared surface to record status, owners, evidence links, and last-reviewed dates for the full 223-requirement set, with a NIST 800-53 crosswalk for mapping against an existing Rev5 baseline.

Everything is local-first and self-hosted — your evidence and your tracker state never leave infrastructure you control unless you explicitly push them.

What you get

  • Complete KSI coverage — all 63 KSIs and 223 requirements are accounted for: cloud collectors where testable, process-artifact evidence for governance requirements, and explicit awareness-only tracking for items that obligate FedRAMP / an agency / a 3PAO.
  • 🔒 Provably read-only — every cloud SDK call is enforced read-only by two independent layers (viewer-only IAM and a runtime guardrail Proxy).
  • 🎚️ Low / Moderate / High — choose your impact tier; the collector scopes every requirement to that tier (High applicability is derived from NIST 800-53 Rev5 and clearly labeled).
  • 📊 NIST 800-53 benchmark — roll findings up to 800-53 controls and score each control, for both the 20x-referenced control set and the full SP 800-53B baseline.
  • 🖊️ Tamper-evident — Ed25519-signed manifests + optional RFC 3161 trusted timestamps; an offline verify CLI re-checks every hash and signature.
  • 🔁 OSCAL + crosswalks — OSCAL 1.1 Assessment Results, plus NIST → SOC 2 / ISO 27001 / HIPAA crosswalk.
  • 🔌 Push anywhere — Paramify, the bundled tracker, Slack/PagerDuty, Jira/ServiceNow/GitHub Issues, SIEM (OCSF), generic HMAC webhook, and optional LLM-drafted remediation PRs.
  • 🧰 Operationally hardened — retry/backoff, adaptive concurrency under throttle, append-only run ledger, and a run lock to prevent overlapping runs.

Repository layout

FedRAMP 20x/
├── cloud-evidence/ Read-only AWS+GCP+K8s evidence collector
│ ├── core/ Orchestrator, schema, signing, OSCAL, benchmark, hardening
│ ├── providers/ Per-cloud collectors (aws/, gcp/, k8s/)
│ ├── scripts/ Reproducible data extractors (FRMR, NIST r5, baselines)
│ ├── docs/ Committed generated lookups + IAM permission catalog
│ └── tests/ Vitest suites (38 files, 396 tests)
├── tracker/ Local multi-user web tracker over the FRMR catalog
│ ├── server/ Hono API + better-sqlite3 + RBAC/2FA/audit
│ ├── client/ React + Vite SPA
│ └── tests/ Vitest suites (11 files, 99 tests)
├── ARCHITECTURE.md How the two projects fit together (with diagrams)
├── RUNBOOK.md Operations: setup, IAM, env vars, troubleshooting
├── COST.md Cost model for the collector + integrations
├── GAP-ANALYSIS.md Positioning vs Prowler/ScoutSuite/Wiz/Drata/Vanta/Paramify
├── CHANGELOG.md Version history
├── LICENSE Apache-2.0
└── NOTICE Third-party data attribution
# External reference clones (git-ignored, not part of this repo's code):
├── docs/ Clone of github.com/FedRAMP/docs (FRMR source of truth)
└── nist-r5-data/ NIST 800-53 Rev5 reference data

Architecture at a glance

graph LR
 CSP[CSP environment<br/>AWS + GCP + K8s] --> CE[cloud-evidence<br/>orchestrator]
 CE --> Out[(out/*.json<br/>+ manifest.sig<br/>+ control-benchmark.json<br/>+ assessment-results.json)]
 Out --> Sign[Ed25519 + RFC 3161]
 Out --> Tracker[(tracker DB)]
 Out --> GRC[Paramify / SIEM / Tickets / Webhook]
 Auditor[3PAO / auditor] -. verifies .-> Out
 Tracker --> UI[React SPA]
Loading

See ARCHITECTURE.md for the full module maps and data flow.

Quick start

Prerequisites: Node 22+ (tested on 22 and 24); optionally Bun 1.3+ or Deno 2.8+ for the collector. AWS credentials via aws sso login / AWS_PROFILE, and GCP via gcloud auth application-default login.

git clone git@github.com:kenithphilip/FedPy.git "FedRAMP 20x"
cd "FedRAMP 20x"

Collect evidence

cd cloud-evidence
npm install
# Plan only — no SDK calls are made
npm run collect -- --dry-run
# Real collection at Moderate, benchmarked against the 20x-referenced controls
npm run collect -- --impact-level moderate --framework 20x
# Full High-tier run benchmarked against the entire NIST SP 800-53B High baseline,
# with all post-run reports, OSCAL, crosswalk, and signing
npm run collect -- --impact-level high --framework rev5 --all-reports --oscal --crosswalk
# Verify a finished run offline (re-hashes every file, checks the signature)
npm run verify -- ./out

Output goes to ./out/ (git-ignored). See Output artifacts.

Run the tracker

# from the repo root, get the FRMR source of truth (if you don't have it)
git clone https://github.com/FedRAMP/docs.git
cd tracker
npm install
npm run ingest # load FRMR.documentation.json into data/tracker.db
npm run dev # API on :4000, web UI on :5173
# open http://localhost:5173 — the first account you create becomes admin

The cloud-evidence collector

A read-only TypeScript collector for the FedRAMP 20x KSIs across AWS, GCP, and Kubernetes. It runs on Node (via tsx), Bun, or Deno — Bun is recommended for production collection (native TS, faster startup/I/O, better concurrency under throttle); Node + tsx is the default and what the test suite runs on. Deno is also supported via the collect:deno / verify:deno scripts (it needs explicit --allow-* permission flags; see RUNBOOK.md).

Read-only safety model

The collector must never mutate cloud state, enforced by two independent mechanisms (either one alone would stop a write; both are required to run):

  1. Viewer-only IAM. The runner principal is bound to read-only managed policies only (AWS ReadOnlyAccess, GCP viewer/securityReviewer roles, K8s view). The exact least-privilege role list is in RUNBOOK.md and cloud-evidence/docs/IAM-PERMISSIONS-CATALOG.md.
  2. Runtime guardrail Proxy. Every SDK client is wrapped at construction by core/readonly-guardrail.ts (AWS) or core/readonly-guardrail-gcp.ts (GCP). Any command whose verb prefix isn't on the read-only allowlist throws ReadOnlyViolationError before the call leaves the process — so even a mis-scoped IAM role or a buggy new collector cannot perform a write.

Impact levels & frameworks

Pick the tier at setup (config.yaml impact_level:) or per-run (--impact-level low|moderate|high). The collector then scopes all 223 requirements to that tier:

  • Cloud-testable KSIs run their collectors against live config.
  • Governance requirements emit signed process-artifact evidence, tracked via an attestation register with SLA/deadline monitoring.
  • FedRAMP/agency/3PAO obligations are recorded as awareness-only and excluded from your provider pass/fail.

High applicability is derived from the NIST 800-53 Rev5 baseline (there is no separately published 20x High) and always labeled derived-rev5.

NIST 800-53 control benchmark

Every run rolls findings up to NIST 800-53 controls and scores each control at the chosen impact level, so you can benchmark your cloud infrastructure against the baseline. Two framings via --framework:

--framework In-scope control set Answers
20x (default) The controls the evaluated 20x KSIs/FRRs reference "How covered are the controls 20x cares about, at this level?"
rev5 The full NIST SP 800-53B baseline for the level (Low 149 / Moderate 287 / High 370) "Which baseline controls have automated cloud evidence vs. still need manual assessment?"

Each control gets a status — satisfied (all mapping findings passed), partially-satisfied (mixed), not-satisfied (all failed), or not-assessed (no automated evidence). The report (control-benchmark.json) gives two rates: assessed_pass_rate (satisfied ÷ controls with evidence) and baseline_coverage_rate (satisfied ÷ whole in-scope set). Awareness-only attestations are listed under a control but never satisfy it on their own.

Baseline membership ships committed (cloud-evidence/docs/nist-r5-baselines.generated.json, sourced from NIST's official OSCAL resolved-profile catalogs) so there is no network at runtime; refresh it with node scripts/extract-nist-baselines.mjs.

Output artifacts

A single run writes to ./out/:

File Contents
KSI-*.json Per-KSI evidence envelopes (v3 schema, one per requirement)
pva-run-summary.json Run roll-up + impact level + framework + benchmark headline
family-rollup.json Per-control-family posture
control-benchmark.json NIST 800-53 control benchmark (this run's framing/level)
inventory.json (--inventory-workbook) Rich org-grade cloud asset inventory (every resource type; source of truth) + relationship graph
inventory-workbook.{csv,xlsx} FedRAMP Appendix M Integrated Inventory Workbook (AWS + GCP assets)
inventory-oscal.json / inventory-cmdb.json / inventory-diff.json / inventory-cost.json OSCAL inventory-items · ServiceNow CMDB records · run-over-run change diff · month-to-date cost by service
manifest.json + manifest.sig Ed25519-signed inventory of every output file
manifest.tsr (optional) RFC 3161 trusted timestamp token
assessment-results.json (--oscal) OSCAL 1.1 Assessment Results
crosswalk-report.json (--crosswalk) NIST → SOC 2 / ISO 27001 / HIPAA
coverage-report.json Silent-failure / gap detection
report.html, findings.csv (--all-reports) Human + spreadsheet views
diff-report.{json,html} Change vs. the previous run
anomaly-report.json (--anomaly) Drift vs. the rolling baseline
run-ledger.jsonl Append-only audit trail of every action + timing

Integrations

All opt-in (require their own env vars; see RUNBOOK.md):

Paramify · the bundled tracker (--push-tracker) · Slack / PagerDuty (--notify-on-drift) · Jira / ServiceNow / GitHub Issues (--ticket-push) · SIEM via OCSF (--siem-url) · generic HMAC-signed webhook (--webhook-url) · Anthropic Claude remediation PR drafts (--llm-generate-prs) · Powerpipe mod (--powerpipe) · SBOM ingest (--sbom-dir).

Production hardening

  • Retry/backoff on every SDK call (configurable attempts/backoff caps).
  • Adaptive concurrency — a token bucket + AIMD limiter that backs off under throttling and recovers, plus in-run TTL memoization.
  • Append-only run ledger — crash-durable JSONL of every action and outcome.
  • Run lock — prevents two runs clobbering the same output dir (TTL + PID-liveness; auto-released on exit).

The tracker

A local, multi-user web dashboard that ingests the FRMR catalog and lets your team track implementation status against every 20x requirement and KSI. It sits next to a clone of the upstream FedRAMP docs and re-ingests on demand, preserving your status, owner, notes, and evidence (state is keyed by stable FRMR IDs).

Highlights: dashboard with "next 10 to tackle", gap analysis, requirement & KSI browsers, full item detail with FRD-term tooltips, a NIST 800-53 crosswalk, a collector-runs view (impact level + benchmark headline), CSV/JSON export, and multi-user accounts with sessions, TOTP 2FA, role-based access control, per-item audit log, and online backup/restore.

See tracker/README.md for the full feature list and API.

Testing

# cloud-evidence — 38 files, 396 tests
cd cloud-evidence && npm test && npm run typecheck
# tracker — 11 files, 99 tests
cd tracker && npm test && npm run typecheck

Both projects typecheck clean and the full suite (495 tests) passes. CI-style one-liner from the repo root:

(cd cloud-evidence && npm test) && (cd tracker && npm test)

Documentation index

Doc What's in it
ARCHITECTURE.md Module maps, data flow, integration points, the read-only invariant
RUNBOOK.md Setup, required IAM, all environment variables, exit codes, troubleshooting
cloud-evidence/docs/OPERATOR-GUIDE.md Single consolidated operator reference — complete CLI flag list, env var list, config files (config.yaml, thresholds.yaml, forward-spec org-profile.yaml), loop landscape (implemented / spec'd / roadmap), conditional-loop activation matrix, output-artifact catalogue, common run patterns
cloud-evidence/org-profile.yaml.example Forward-spec template for conditional loops (LOOP-M, LOOP-O, LOOP-S, LOOP-X, G.G2-CIRCIA, M.M4-CIRCIA, G.G2-SEC-8K)
COST.md Cost model for the collector and optional integrations
GAP-ANALYSIS.md How this compares to Prowler / ScoutSuite / Wiz / Drata / Vanta / Paramify
CHANGELOG.md Version history
cloud-evidence/README.md Collector deep-dive
cloud-evidence/CLAUDE.md REO standard + Scope Guard + Conditional Applicability Matrix (for contributors)
cloud-evidence/docs/STATUS.md Current implementation status: every slice, every loop
cloud-evidence/docs/IAM-PERMISSIONS-CATALOG.md Exact per-collector cloud permissions
cloud-evidence/docs/roadmap/README.md Out-of-core / roadmap docs (LOOP-U/V/Y/Z + fifth-pass audit)
tracker/README.md Tracker features, API, configuration

Data sources & attribution

This repo derives committed lookup files from public sources (regenerated by the scripts in cloud-evidence/scripts/, not re-licensed):

See NOTICE for full attribution. These sources remain governed by their own terms.

Security

  • The collector is read-only by construction (see the safety model); a ReadOnlyViolationError is a bug in a collector, never something to work around.
  • Evidence is tamper-evident (Ed25519 manifest + optional RFC 3161 timestamp) and independently verifiable offline via npm run verify -- ./out.
  • The tracker stores passwords with scrypt, uses HttpOnly/SameSite session cookies, supports TOTP 2FA and RBAC, and records every mutation in an audit log.

If you discover a security issue, please open a private report rather than a public issue.

License

Licensed under the Apache License 2.0. © 2026 Kenith Philip.

About

Read-only, evidence-grade automation for FedRAMP 20x & Rev5: a TypeScript collector that captures AWS/GCP/Kubernetes config evidence for all 63 KSIs (223 requirements), benchmarks against NIST 800-53 at Low/Moderate/High, and signs it (Ed25519 + OSCAL) — plus a local multi-user tracker over the FRMR catalog.

Topics

Resources

License

Stars

Watchers

Forks

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /