← back to all posts
Government· FedRAMP · FISMA· 5 min read

FedRAMP ConMon, control by control

FedRAMP continuous monitoring asks for evidence control by control. This post shows the queries that return it from recorded history.

Your 3PAO shows up. Third Party Assessment Organization. They've got the FedRAMP ConMon Strategy Guide open on their laptop and they want twelve months of POA&M reports, NIST 800-53 control evidence for the AC, AU, CM, CP, IR, and SI families, and cryptographic proof that nothing has been retroactively modified. Your Authorizing Official is CC'd on every email. ATO sustainment depends on this.

In most federal SaaS stacks, the annual assessment is a four-month project. Your SIEM holds the audit logs. Your GRC tool tracks POA&M items. Your change-management system holds CM-3 records. Your ticketing system has the incident responses. Pulling them all together into a coherent assessment package takes a senior ConMon team months — and the assessor fees ($120K–$300K) scale with how much remediation is needed.

The downside is binary. Losing your ATO doesn't degrade your federal business — it ends it. Overnight.

What FedRAMP ConMon actually demands

Read the strategy guide carefully and three things have to be true:

  1. Continuous monitoring evidence by month. Twelve monthly POA&M snapshots showing open items, closed items, and SLA-conformance.
  2. Control evidence by control family. NIST 800-53 Rev 5 demands signed, time-stamped evidence for every control family in scope. The chain has to show the evidence was generated when the control was tested.
  3. AU-9(3) audit log integrity. Cryptographic protection of audit information. Modifications without a documented reason violate the control outright.

If those live in one bitemporal graph, the whole assessment package is one query loop.

The twelve-month POA&M reconstruction

MATCH (p:POAM) AT RECORDED '2026-01-01T00:00:00Z'
  WHERE p.system_id = 'PROD-MOD-001'
RETURN count(p) AS open, collect(p)[..10] AS samples

Run the query once per month, changing the AT RECORDED timestamp, to produce the twelve monthly reports. The timestamp must be a literal or a parameter; it cannot refer to a variable from an earlier clause. In the illustrative walkthrough, 348 items were opened over the year, 322 were closed within SLA, and 18 were open at year-end, each with a documented remediation plan.

The AU-9(3) integrity check

The 3PAO's hardest question is whether any audit log has been retroactively modified. AU-9(3) requires cryptographic protection of audit information. Each committed node and relationship write is appended to the graph's history log with the SHA-256 hash of the previous record. GET /graphs/{name}/audit/verify re-hashes the graph’s write history and returns clean or the first broken record. The check covers the whole graph and has no date window. The history log is not signed or anchored outside the server, so the check does not detect a rewrite of the whole log, or removal of the most recent records, by someone with write access to the server.

The CM-3 change lineage

Every change to the authorized system boundary must derive from an approved CCB ticket, an impact assessment, a test record, and a deployment signoff. If each change is linked to those records with DERIVED_FROM edges, db.derivedFrom returns them for a given change.

Node creates refused by field-level write ACLs are recorded in the ACL event log; write ACLs are checked only when a Cypher CREATE creates a node.

The reciprocity multiplier

While your assessment is in flight, a new agency wants to reuse your ATO under FedRAMP reciprocity. The same queries return the control evidence, POA&M state and continuous-monitoring history that a reciprocity review asks for.

The numbers

The figures in this post and in the walkthrough are illustrative.

Illustrative walkthrough on the FedRAMP tab.

See the walkthrough

Step through the illustrative walkthrough.

The full illustrative flow, ending with the chain verification. It is pre-rendered, runs in any browser, and does not connect to an engine.

Open the Government walkthrough →