Skip to main content

NIST SP 800-53 — Security and Privacy Controls for Information Systems

Scope: the unified catalogue of security and privacy controls referenced by FISMA, FedRAMP, DoD ICD 503, and many state RAMPs. Currently at Revision 5 (with annual errata).

The annotation is compliance: [NIST_800_53]. It almost always travels with FISMA, the statute that requires the controls:

compliance: [FISMA, NIST_800_53]

FedRAMP is not a class here. It is the authorization program that selects a baseline from this catalogue and has a 3PAO assess it — a fact about who signed off on your service, not about what the data is. The regulatory vocabulary is closed (axon-T1214) and holds sources of obligation: statutes and control standards. Declare FISMA + NIST_800_53, and record the baseline where your assessment programme records it. See Regulatory classes for the full list.

This page focuses on the AXON-enforceable subset — the families where the language has direct grammar, runtime, or evidence support. The full 800-53 catalogue has 20 families; AXON substantively enforces 8 of them.

Family-by-family map

AC — Access Control

ControlWhat it requiresAXON enforcement
AC-2 — account managementLifecycle of system accountsOIDC layer (v2.0.0); audit row on every account event
AC-3 — access enforcementAuthorisation per policyRuntime — every emission to a NIST-tagged endpoint is checked against requires: capabilities
AC-4 — information flowAuthorised flows onlyCompile time — a flow that lowers a tagged type to an untagged endpoint is rejected
AC-5 — separation of dutiesTasks split across rolesmandate excludes_requester: true — see SOX page
AC-6 — least privilegeNo wildcard capsCompile time — wildcard requires: on NIST-tagged endpoints rejected

AU — Audit and Accountability

ControlWhat it requiresAXON enforcement
AU-2 — audit eventsCatalogue of auditable eventsRuntime — closed category: enum, always-on
AU-3 — audit record contentWhat each row containsRuntime — (actor, action, target, timestamp, source_ip, decision) always present
AU-6 — audit review + analysisRegular reviewOperational; AXON exports via axon-enterprise diagnostics gate
AU-9 — protection of audit infoTamper-evidenceRuntime — hash-linked + signed chain (v1.19.1 FIPS-friendly)
AU-10 — non-repudiationOriginator bindingRuntime — actor subject is the OIDC-verified identity, not a service principal
AU-12 — audit generationSelectable eventsCompile time — categories closed; runtime always emits

SC — System and Communications Protection

ControlWhat it requiresAXON enforcement
SC-7 — boundary protectionNetwork egress controlsCompile time — tool with network effect requires explicit transfer_boundary: on NIST endpoints
SC-8 — transmission integrity/confidentialityIn-flight protectionRuntime — wss:// + TLS 1.2+ required
SC-12, SC-13 — crypto key mgmtFIPS-validated modulesRuntime — selects FIPS 140-3 validated configuration when tagged
SC-23 — session authenticitySession-level bindingCompile time — socket requires protocol: (a typed session); runtime verifies duality
SC-28 — protection of info at restAt-rest encryptionCompile time — NIST-tagged axonstore requires encryption: at_rest

SI — System and Information Integrity

ControlWhat it requiresAXON enforcement
SI-4 — system monitoringContinuous monitoringRuntime — v2.0.0 observability layer
SI-7 — software/firmware/info integrityDetection of unauthorised changesRuntime — hash-linked audit chain
SI-10 — info input validationValidate inputsCompile time — v2.0.0 D4 body schema validation activates on NIST-tagged endpoints with refined types
SI-15 — info output filteringValidate outputsCompile time — v2.0.0 D5 output schema validation

IR — Incident Response

ControlAXON enforcement
IR-4 — incident handlingStructured incident records flow to the compliance event store
IR-5 — incident monitoringThe v2.0.0 observability layer surfaces incident metrics
IR-6 — incident reportingRecords are consumable by US-CERT-equivalent tooling
IR-8 — incident response planOperational

CM — Configuration Management

ControlAXON enforcement
CM-2 — baseline configurationThe AXON source IS the baseline; declared in version control
CM-3 — configuration change controlConfiguration changes emit system:config_change audit rows
CM-5 — access restrictions for changeEndpoints that mutate config require elevated capabilities
CM-7 — least functionalityOperational
CM-8 — system component inventoryOperational

CP — Contingency Planning

ControlAXON enforcement
CP-9 — system backup integrityThe audit-chain hash is a self-verifying integrity proof of the data plane
CP-10 — system recovery + reconstitutionThe hash chain + audit-log restore allow point-in-time reconstitution

IA — Identification and Authentication

ControlAXON enforcement
IA-2 — identification + authentication (org users)Runtime — OIDC layer, MFA enforced per the v2.0.0 policy
IA-5 — authenticator managementOperational
IA-8 — identification + authentication (non-org users)OIDC federation; tenant-isolated principal namespace

Families AXON does NOT enforce substantively

These families are organizational, physical, or operational; AXON has no language surface for them. They are documented in the SSP and audited externally:

  • AT — Awareness and Training
  • CA — Assessment, Authorization, and Monitoring
  • MA — Maintenance
  • MP — Media Protection
  • PE — Physical and Environmental Protection
  • PL — Planning
  • PM — Program Management
  • PS — Personnel Security
  • PT — PII Processing and Transparency (partially — see GDPR / Privacy resources)
  • RA — Risk Assessment
  • SA — System and Services Acquisition
  • SR — Supply Chain Risk Management

Common patterns

Pattern 1 — Moderate-baseline audit-trail evidence

flow GenerateNIST_AU_Evidence(month: Month) -> EvidencePackage {
step Collect {
given: month
retrieve: AuditLog where tag = "NIST_800_53" AND month
output: List<AuditRow>
}
step Sign {
given: Collect.output
ask: "Sign the bundle + emit chain-head proof"
output: EvidencePackage
}
return Sign.output
}

Pattern 2 — AC-6 least-privilege binding

mandate StrictLeastPrivilege
requires: capability("case.read") # specific, not wildcard
on_breach: raise

axonendpoint CaseLookup {
flow: CaseLookupFlow
method: GET
route: "/v1/cases/{case_id}"
compliance: [NIST_800_53]
mandate: StrictLeastPrivilege
}

Pattern 3 — SC-7 explicit egress boundary

tool ExternalLookup {
provider: external_search
effects: <network>
transfer_boundary: ISA_2024_017 # required on NIST endpoints
}

When NOT to use NIST 800-53

  • Pure commercial customers with no government nexus. SOC2 + framework-specific tags are usually enough.
  • NIST 800-171 systems (federal contractor data). Use the shorter 800-171 catalogue instead; AXON's nist_800_171 resource is planned.
  • Non-US frameworks. ENS (Spain), IRAP (Australia), CSE (Canada) have separate catalogues; some map to 800-53 + an addendum.

For the per-baseline selection of which 800-53 controls apply, see axon://compliance/fedramp (Low/Moderate/High).