14-day trial, no credit cardStart now

NIST 800-171 control mapping

For teams preparing for a CMMC Level 2 assessment or already operating under NIST 800-171: which controls PermitUSB satisfies, and to what depth. The auditor language in each section is a starting point for your System Security Plan or POA&M.

Compliance25 controls mapped

Coverage at a glance

PermitUSB is purpose-built for the Media Protection family, with strong supporting coverage in Audit and Accountability and in Configuration Management. Other families are compensating at best: pair PermitUSB with the rest of your security stack.

ControlCoverageHow
3.1.1 Limit system access to authorized usersDirectRBAC, Supabase Auth, per-tenant RLS
3.1.2 Limit access to types of transactionsDirectRole capabilities: owner, admin, operator, auditor
3.1.5 Least privilegeDirectPer-role capability set. The auditor role is read-only
3.1.21 Limit portable storage on external systemsDirectMass-storage class blocking (USBSTOR, UASPStor, SCSIAdapter) plus per-serial allow lists
3.3.1 Audit logsDirectevents and admin_audit_log tables
3.3.2 Unique user identification in logsDirectactor_user_id on every admin audit row
3.3.3 Audit log reviewDirectAudit log with filters and CSV/JSON export, plus curated reports
3.3.7 Time-stamped audit recordsDirectServer-side created_at on every row
3.3.8 Protect audit informationDirectTenant isolation through Postgres RLS
3.3.9 Limit audit management to privileged usersDirectThe audit_log.read capability gates the route
3.4.6 Essential capabilities onlyDirectClass-based deny by default, per-group allow rules
3.4.7 Restrict nonessential functionsDirectSame enforcement as 3.4.6
3.5.1 Identify usersDirectSupabase Auth
3.5.2 Authenticate usersDirectPassword with TOTP MFA, or a passkey
3.5.3 MFA for privileged accountsDirectTOTP or passkey at sign-in, with a workspace-wide require_mfa flag
3.6.2 Track and report incidentsDirectTamper events with email and webhook alerting
3.8.7 Control removable mediaDirectBlock-by-default policy engine, events logged with full device fingerprint
3.8.8 Prohibit unidentifiable portable storageDirectPer-device serial allow-listing, warning on non-unique serials
3.13.1 Boundary protectionPartialUSB is one boundary. Complements network boundary tools
3.13.8 Encrypt CUI in transitDirectTLS 1.3 agent to cloud, HSTS on the dashboard
3.13.11 FIPS-validated cryptographyPartialDPAPI on the agent. Confirm provider validation with your assessor
3.13.13 Control mobile codePartialConstrains the USB vector. Pair with EDR for the executable side
3.14.1 Identify, report, correct flawsPartialTamper detection and watchdog correction. OS patching is yours
3.14.6 Monitor systemsPartialContinuous USB event monitoring. Pair with EDR or SIEM
3.14.7 Identify unauthorized useDirectEvery block event logged, with optional alert and reports

3.1.21 Limit use of portable storage devices on external systems

Direct mapping. Block-by-default whitelisting on the mass-storage classes, USBSTOR for bulk-only transport devices and UASPStor and SCSIAdapter for UAS devices such as most modern external SSDs, plus per-device serial allow-listing, implements exactly this control’s intent: portable storage is used only on endpoints where the organization has explicitly approved the device.

3.4.6 Essential capabilities only

Class-based deny by default enforces essential capabilities only at the USB layer. Endpoint groups let you express a different essential set per role: one group allowing storage from approved vendors, another allowing printers and audio only, a locked-down group allowing nothing beyond input devices.

3.8.7 Control the use of removable media

Direct mapping. Removable media is controlled by the policy engine, and every plug and unplug event is logged with the full device fingerprint: VID, PID, serial, class, friendly name and vendor manufacturer string.

3.8.8 Prohibit portable storage with no identifiable owner

Per-device serial allow-listing identifies the owner. The dashboard surfaces a warning when a device reports a non-unique serial number, a common cheap-thumb-drive pattern, so administrators can recognize un-ownable devices and disallow them explicitly.

3.3 Audit and accountability

Two log streams: device events, covering every USB plug with the action taken, and an admin audit log covering every policy, token, role and billing change. Default retention is 365 days on the Paid plan, and both export to CSV or JSON. Timestamps are set server-side at insert, so a manipulated local clock on a compromised endpoint cannot corrupt the trail.

3.3.2 Unique user identification in logs

Every admin audit row carries an actor_user_id uniquely identifying the Supabase Auth user that performed the action.

3.3.3 / 3.3.6 Audit review and analysis

The audit-log page filters by actor, action prefix and date range, with CSV and JSON export. The events page does the same for device-level events. The reports page adds curated aggregates, blocked devices, silent endpoints, tamper and protection pauses, and a full-history export with an explicit date-range builder: the artifact an assessor asks for, rather than a dashboard to filter.

3.3.8 / 3.3.9 Protecting and restricting the audit trail

Audit data is protected by Postgres row-level security: a cross-tenant query returns no rows. The service-role key that bypasses RLS is held only by the PermitUSB API, never by customer-facing code. Reading the audit log requires the audit_log.read capability, which the auditor, admin and owner roles hold and the operator role does not.

3.5 Identification and authentication

Identification and authentication are delegated to Supabase Auth. Email and password is the default mechanism and password complexity follows Supabase’s NIST-aligned policy. A passkey is an alternative, and it satisfies the multifactor requirement on its own.

For 3.5.3, TOTP multifactor is enrolled per user and challenged at every sign-in once a factor is verified. Tenant owners can require it workspace-wide through the require_mfa flag: members without a factor are redirected to enroll before they can use the dashboard. Sensitive admin actions, such as resetting another user’s MFA or toggling the workspace requirement, need step-up re-authentication. Each enrollment issues ten single-use recovery codes for the lost-device case.

3.6 Incident response

Tamper events, meaning service-stop attempts, watchdog re-disable, refresh-token replay and policy-stale, are logged to the cloud and routed to email or webhook channels per the tenant’s alerting configuration. Block events on policies marked sensitive take the same alert path.

3.13 System and communications protection

USB is one boundary among many. PermitUSB controls that boundary; pair it with network firewalls, DNS filtering and EDR for the boundaries it does not address.

  • 3.13.8, encrypt CUI in transit: all agent-to-cloud and dashboard-to-cloud traffic is TLS 1.3 and the cloud surface enforces HSTS. Agent enrollment and token rotation use signed JWTs over the same channel
  • 3.13.11, cryptography for protecting CUI: the agent encrypts its cached refresh-token credential at rest with DPAPI scoped to LocalMachine, and cloud-side data sits in Supabase Postgres with provider-level at-rest encryption. PermitUSB implements no cryptography of its own, so FIPS validation status of the underlying TLS and storage providers is something you confirm with your assessor
  • 3.13.13, control and monitor mobile code: indirect. Controlling which USB mass storage devices can attach constrains a common delivery vector, but the control’s full intent, governing script and binary execution, needs endpoint anti-malware or EDR. PermitUSB is complementary here, not a replacement

3.14 System and information integrity

Tamper events are the report half of 3.14.1 and the watchdog is the correct half for in-band tampering, re-disabling devices that were re-enabled out of band. Operating system patching stays yours; agent updates are signed MSIs distributed through the dashboard’s authenticated download.

For 3.14.6, the agent runs continuous USB-event monitoring on every managed endpoint, and events surface on the dashboard within about five seconds of plug-in. For 3.14.7, every block event is by definition an unauthorized-use attempt: block events are logged, they fire an immediate alert when the matched policy is marked sensitive, and the blocked-devices report aggregates them per device and endpoint over any date range.

What PermitUSB does not address

PermitUSB is a USB device control product. It should not be cited as primary evidence for these families:

  • 3.2 Awareness and Training: entirely a customer program
  • 3.7 Maintenance: endpoint maintenance procedures are out of scope
  • 3.9 Personnel Security: HR and vetting controls
  • 3.10 Physical Protection: site security
  • 3.11 Risk Assessment: your security program owns this
  • 3.12 Security Assessment: your assessor and SSP process

Within the families it partially covers, these sub-controls need other tools:

  • File-content data loss prevention
  • BitLocker or disk-encryption enforcement
  • Network device control over Ethernet, Wi-Fi or Bluetooth
  • Endpoint anti-malware and EDR
  • Vulnerability management and patching
  • Backup and recovery of customer-side CUI

Asking for help

If your assessor has a question about a specific control mapping, or your SSP needs PermitUSB-specific wording that is not on this page, email compliance@permitusb.com. We will either provide the language directly or update this page so every customer has it.

Something missing or wrong here? Tell us. Documentation gaps get filled fast.