Compliance Control Mapping

Updated 2026-06-22

Last Updated: 2026-06-22 · Applies to: OpenWatch 0.2.0-rc series (Go single-binary)

This document maps OpenWatch's security controls to industry frameworks, providing evidence for compliance audits.

Framework Coverage

FrameworkControls MappedCoverage
NIST SP 800-53 Rev 542Moderate baseline
CIS Controls v818Implementation Group 2
CMMC Level 228Practice-level mapping
FedRAMP Moderate42Inherited from NIST
ISO 27001:202215Annex A controls

NIST SP 800-53 Control Mapping

Access Control (AC)

ControlTitleOpenWatch ImplementationEvidence
AC-2Account ManagementUser CRUD with RBAC (admin, analyst, viewer)internal/users/, user audit events
AC-3Access EnforcementRole-based permission checks on each routeinternal/auth/, generated permission registry
AC-6Least PrivilegeThree-tier role model, default viewer roleinternal/auth/permissions.gen.go
AC-7Unsuccessful Logon AttemptsRate limiting (100/min per user, 1000/min per IP)internal/server/ middleware
AC-8System Use NotificationConfigurable login bannerFrontend login page
AC-11Session LockInactivity timeout (default 15 min, configurable 1-480)internal/systemconfig/ (session-timeout)
AC-12Session TerminationSession cookie and JWT expiration (30 min access, 7 day refresh)internal/auth/
AC-17Remote AccessSSH with NIST SP 800-57 key validationinternal/ssh/

Audit and Accountability (AU)

ControlTitleOpenWatch ImplementationEvidence
AU-2Event LoggingStructured audit events for auth/scan/admin actionsinternal/audit/
AU-3Content of Audit RecordsUser, timestamp, action, resource, outcomeinternal/audit/
AU-6Audit Record ReviewAudit query API (/api/v1/audit/events)internal/audit/, api/openapi.yaml
AU-9Protection of Audit InformationAudit events stored append-only in PostgreSQLaudit_events table (internal/db/migrations/)
AU-12Audit Record GenerationAPI routes generate audit eventsinternal/server/, internal/audit/

Configuration Management (CM)

ControlTitleOpenWatch ImplementationEvidence
CM-2Baseline ConfigurationKensa YAML rules define expected configurationsKensa rules (338 native YAML rules)
CM-3Configuration Change ControlSQL migration tracking, git version controlinternal/db/migrations/ (run via openwatch migrate)
CM-6Configuration SettingsConfiguration validation at startupinternal/config/, openwatch check-config
CM-8System Component InventoryHost management with discovery and metadatainternal/host/, internal/intelligence/

Identification and Authentication (IA)

ControlTitleOpenWatch ImplementationEvidence
IA-2Identification and AuthenticationSession cookie and JWT auth with username/passwordinternal/auth/
IA-2(1)MFA for Privileged AccountsTOTP-based MFA with backup codesinternal/auth/
IA-5Authenticator ManagementArgon2id hashing (64MB, 3 iterations), 8-char minimum (15 for admin)internal/users/
IA-5(1)Password-Based AuthenticationComplexity requirements (upper, lower, digit, special)internal/auth/ (password policy)

Risk Assessment (RA)

ControlTitleOpenWatch ImplementationEvidence
RA-5Vulnerability MonitoringAutomated compliance scanning via Kensainternal/kensa/
RA-5(2)Update VulnerabilitiesKensa rule updates via rule syncinternal/kensa/

System and Communications Protection (SC)

ControlTitleOpenWatch ImplementationEvidence
SC-8Transmission ConfidentialityTLS 1.2/1.3 for all connectionsinternal/server/ (HTTPS listener)
SC-8(1)Cryptographic ProtectionFIPS-approved cipher suitesinternal/config/
SC-10Network DisconnectConfigurable session timeoutinternal/systemconfig/
SC-12Cryptographic Key EstablishmentAES-256-GCM with environment-sourced keysinternal/secretkey/, internal/credential/
SC-13Cryptographic ProtectionFIPS via OpenSSL 3.x FIPS providerinternal/config/
SC-23Session AuthenticitySession cookie plus JWT, HttpOnly cookiesinternal/auth/
SC-28Protection of Information at RestAES-256-GCM encryption for credentialsinternal/credential/, internal/secretkey/

System and Information Integrity (SI)

ControlTitleOpenWatch ImplementationEvidence
SI-2Flaw RemediationSingle Go binary built from a maintained Go toolchaingo.mod, native RPM/DEB packages
SI-4System MonitoringHealth checks and fleet monitoring endpoints/api/v1/health, internal/liveness/
SI-10Information Input ValidationRequest validation at the API boundary, parameterized SQLinternal/server/, sqlc-generated queries

CIS Controls v8 Mapping

CIS ControlTitleOpenWatch Implementation
1.1Enterprise Asset InventoryHost management with system info collection
2.1Software InventoryServer intelligence (package collection)
3.3Data EncryptionAES-256-GCM at rest, TLS 1.2+ in transit
4.1Secure ConfigurationKensa compliance scanning (538-rule corpus)
4.2Baseline Network ConfigurationNetwork discovery and topology mapping
5.2Unique PasswordsArgon2id hashing, 8-char minimum (15 for admin), breached-password screening
5.4MFATOTP-based MFA with backup codes
6.1Audit Log ManagementStructured JSON audit logs, audit query API
6.3Centralized Log CollectionJSON logging, configurable log aggregation
8.2Audit LoggingAll authentication and authorization events logged
8.5Access Control LogsJWT validation events, RBAC enforcement logged
8.11Audit Log RetentionConfigurable retention, export to CSV/JSON/PDF
9.1Email SecuritySMTP TLS for notifications
10.1Anti-MalwareFile upload validation, no executable uploads
13.1Network MonitoringHealth check endpoints, Prometheus metrics
16.1Application SecurityRequest validation at the API boundary, parameterized SQL (no raw SQL)
16.9Security HeadersCSP, X-Frame-Options, HSTS, X-Content-Type-Options
16.11Web Application FirewallsBuilt-in rate limiting, request size limits

CMMC Level 2 Practice Mapping

PracticeDomainOpenWatch Implementation
AC.L2-3.1.1Access ControlRBAC with three-tier role model
AC.L2-3.1.2Access ControlTransaction-level access enforcement
AC.L2-3.1.5Access ControlLeast privilege (viewer default role)
AC.L2-3.1.7Access ControlPrevent non-privileged users from executing privileged functions
AC.L2-3.1.8Access ControlUnsuccessful logon attempt limiting
AC.L2-3.1.10Access ControlSession lock after inactivity
AC.L2-3.1.12Access ControlRemote access session termination
AU.L2-3.3.1AuditSystem-level audit records
AU.L2-3.3.2AuditUser accountability through audit trails
CA.L2-3.12.1AssessmentCompliance posture assessment
CA.L2-3.12.3AssessmentContinuous monitoring via scheduled scans
CM.L2-3.4.1ConfigurationBaseline configurations (Kensa rules)
CM.L2-3.4.2ConfigurationSecurity configuration enforcement
CM.L2-3.4.5ConfigurationAccess restrictions for configuration changes
IA.L2-3.5.1IdentificationUser identification and authentication
IA.L2-3.5.2IdentificationDevice authentication (SSH host verification)
IA.L2-3.5.3IdentificationMulti-factor authentication
IA.L2-3.5.7IdentificationMinimum password complexity
IA.L2-3.5.8IdentificationPassword reuse prevention
IA.L2-3.5.10IdentificationCryptographically-protected passwords
MP.L2-3.8.6Media ProtectionData encryption at rest
RA.L2-3.11.2Risk AssessmentVulnerability scanning
RA.L2-3.11.3Risk AssessmentVulnerability remediation
SC.L2-3.13.1System/CommsBoundary protection (network segmentation)
SC.L2-3.13.8System/CommsCryptographic mechanisms for CUI
SC.L2-3.13.11System/CommsFIPS-validated cryptography
SI.L2-3.14.1System IntegrityFlaw identification and remediation
SI.L2-3.14.6System IntegritySystem monitoring

Compliance Evidence Collection

To generate evidence for an audit:

  1. Access control evidence: Export user list and role assignments from the Users API
  2. Audit log evidence: Use the Audit Query API to export logs for the audit period
  3. Scan evidence: Export compliance scan results showing configuration assessment
  4. Encryption evidence: Document FIPS mode configuration and cipher suite settings
  5. Monitoring evidence: Export fleet health and liveness data from the monitoring endpoints

OpenWatch serves the REST API over HTTPS on port 8443. Authenticate with a session cookie obtained from /api/v1/auth/login, or with a Bearer token.

# Query audit events for a date range
curl "https://localhost:8443/api/v1/audit/events?date_from=2026-01-01&date_to=2026-02-17" \
  -H "Authorization: Bearer $TOKEN" > audit_evidence.json

# Export fleet compliance score
curl https://localhost:8443/api/v1/fleet/score \
  -H "Authorization: Bearer $TOKEN" > fleet_score_evidence.json

Note: dedicated compliance-posture and Kensa-framework export endpoints are pending a Go-era rewrite. See api/openapi.yaml for the current endpoint surface and specs/ for the behavioral contracts.

Edit this page on GitHub →