Sheet REL-14 — Endpoint Management Manual
Compliance Operations
Operational compliance posture, configuration discipline, and the review model teams use to keep IT operations auditable.
Scope
Compliance in Relay should stay attached to the systems and actions that create risk, not become a separate reporting exercise. This public guide keeps that model while excluding private internals.
Template Creation and Publishing
System templates: 9 built-in templates (CIS Level 1, CIS Level 2, STIG x Windows, Linux, BSD). These cannot be edited.
Creating a custom template:
- Navigate to Security > Compliance > Templates
- Click “Copy” on a system template
- Select the target organization
- Provide a name
- The copy includes all checks from the source template
- Edit checks as needed (add, remove, modify, toggle)
Template versioning workflow:
- Create/copy a template (starts in
draftstatus) - Edit checks and configuration as needed. The edit modal includes a Scan Interval (hours) field (24–168 hours) to control the default scan frequency for this template.
- When ready, click Publish in the edit modal (or with
{"status": "published"}). The UI saves current edits first, then publishes. - Published templates are immutable – no check or config edits allowed. The Publish button is hidden for already-published templates.
- To make changes, click New Version on the published template row: creates a draft copy with an incremented version number.
- Edit and publish the new version.
-
Update policies to reference the new template.
-
Export a template portability document:
- Import into an organization as a new draft template:
- Imports always create a custom draft template in the target organization. Publish after review.
Policy Assignment
Create a compliance policy:
- Navigate to Security > Compliance > Policies
- Click “Create Policy”
- Select: - Organization: Target org - OS type: Windows, Linux, or BSD (one policy per OS per org) - Template: Which template to evaluate - Scan interval: Hours between scans (default 24) - Batch size: Endpoints per scan cycle (default 100)
- Configure auto-remediation gates (if desired):
- Enable for severity levels: critical, high, medium, low
- Set approval mode:
auto(immediate) ormanual(requires change approval)
Endpoint-level overrides:
- Use to assign a different template to a specific endpoint
- The override applies only for that policy
Running Compliance Scans
Automatic scans:
- The scheduler runs every 30 minutes
- Checks each policy’s
scan_interval_hoursto determine due endpoints - Creates
compliance_checkjobs dispatched to agents - Respects dynamic batch sizing (larger orgs get bigger batches)
On-demand scans:
- Endpoint must be online and in the same org as the policy
- Returns scan record immediately
Reviewing Scan Results
View scan results:
Results include per-check pass/fail/error/skip status with actual values found.
Score interpretation:
- Score = passed / (total - skipped - errors - waived) * 100
- Score < 70%: triggers low-score notification
- Score < 50%: triggers critical-severity notification
Endpoint compliance view: Shows latest scan results for the endpoint across all policies.
Compliance history: Shows historical scan results for trend analysis.
Triggering Remediation
Automatic remediation:
- Configure auto-remediation severity gates on the policy
- After each scan, failed checks with script/workflow bindings are auto-dispatched (severity must match an enabled gate)
- If
Organization.automation_pausedis set, no remediation is dispatched for any endpoint in that org regardless of policy settings - After a remediation is dispatched, the scheduler automatically re-scans the endpoint ~15 minutes later to verify the fix
- Remediation outcomes (success/failed) are reflected in the scan result_data within ~5 minutes of the job finishing
- In
manualapproval mode: a native approval request is created and remediation waits for an operator to approve it from the Approvals inbox
One-click fix:
- Works for checks with
scriptorworkflowremediation type - Returns 400 for checks with
noneormanualtype - In manual approval mode creates a native approval request gate; forwards a
change.recordedITSM bridge event when a platform is connected
Manual remediation flow (approval_mode = “manual”):
- Scan completes, finds failed checks
- Change records created with
status="pending_approval" - CAB or change manager reviews and approves
resume_approved_remediations()picks up approved records- Remediation jobs/workflows dispatched
- Change record transitions to “implementing”
Managing Compliance Exceptions
Step 1: Create an exception (status: pending_approval)
The exception is created with status="pending_approval". It does NOT affect scan results until approved.
Step 2: Approve or reject the exception
A different user (not the creator) must approve or reject:
This transitions the exception to active. It will now cause matching check failures to be marked as waived in scan results.
To reject instead:
This transitions the exception to rejected. The rejection reason is optional and recorded in audit logs.
Scope options:
- Neither: Org-wide waiver for the rule
Exception lifecycle:
- Only
activeexceptions cause matching check failures to be marked aswaivedin scan results - Waived checks are excluded from the compliance score
- Exceptions with
expires_atare auto-expired by the scheduler (every 30 min) - DELETE endpoint soft-deletes (sets status to
revoked, returns updated record) - Updates (reason, expires_at) are only allowed on
activeexceptions
Monitoring Compliance Scores
Dashboard: Returns:
- Total policies, total scans, average score, endpoints scanned
- Per-framework scores
- Worst 10 endpoints by score
- Top failing checks
Trends: Returns daily compliance score averages with min/max/avg summary.
Score regression alerts:
- Per-endpoint scan processing uses a rolling 7-day baseline when enough history exists (fallback: previous scan baseline)
- If drop exceeds 10 percentage points, a warning-severity
compliance_score_regressionalert is fired - Alert metadata includes baseline type, baseline score, current score, and drop percentage
Compliance incident automation:
- Severe compliance outcomes automatically open native
AlertIncidents (forwarded via the ITSM bridge when a platform is connected) when any of these occur: - at least one critical failed check
- compliance score below 50%
- a fired regression alert (>10pp drop)
- Incidents are deduped per endpoint+policy so recurring scans do not create duplicate open incidents.
Exporting Compliance Data
CSV export:
Compliance report: Returns:
- Summary: total_endpoints, avg_score, endpoints_above_80, endpoints_below_50
- By framework: grouped scores
- By endpoint: per-endpoint latest scores
- Failing checks: aggregated failure counts (when include_details=true)
UI Feature Reference
The compliance UI (Security > Compliance) has seven tabs:
Dashboard — Aggregate compliance scores, worst endpoints, top failing checks. Shows a loading spinner while data is being fetched.
Templates — List, copy, edit, and delete compliance templates. The edit modal includes a Scan Interval (hours) field (24–168 hours). Published non-system templates have a New Version button that creates a draft clone with incremented version number for iterative editing. Draft templates show a Publish button that saves current edits first then publishes the template.
Policies — Create and edit policies with approval_mode (auto/manual), batch_size, and four auto-remediation severity toggles (critical/high/medium/low). Each policy row expands to show endpoint overrides with inline add (by endpoint) and delete.
- Endpoint override selection uses server-side search as you type, so operators can target endpoints beyond previous client preload limits.
- If policy lists, template lists, override rows, or endpoint search cannot be loaded, the tab shows an inline warning with Retry instead of silently rendering an empty policy state.
Endpoint Compliance — Server-side paginated table loaded from the report endpoint (no N+1). Search by hostname and select 10, 25, 50, or 100 rows per page. Pagination is handled server-side so the full fleet is accessible regardless of size. Click a row to see the latest scan detail. Failed checks with script or workflow remediation show an “Apply Fix” button for one-click remediation dispatch.
Scan History — Server-side paginated list of scan summaries with status and type filters. The backend returns X-Total-Count header so the pager shows the correct total pages. Detail modal for completed scans shows individual check results with remediation actions.
Exceptions — Full exception lifecycle: create (pending_approval), approve, reject, update, revoke. Server-side pagination with X-Total-Count header for accurate page counts. Status badges, creator/approver tracking, expiry dates.
- Create modal: Endpoint and endpoint group selectors are searchable dropdowns (show hostname+IP or group name, not raw IDs).
- Endpoint search behavior: Endpoint selector queries the backend while typing instead of filtering a capped preloaded endpoint list.
- Edit modal: Visible for
activeexceptions. Allows updating the reason and expiry date. - Scope display: Shows resolved hostname or group name (from backend enrichment) rather than raw IDs where available.
Reports — Three sections:
- Score Trends: Date-range selector (7/14/30/90 days), visual line chart (Recharts) of daily avg/min/max scores
- Compliance Report: Framework breakdown with per-framework scores and endpoint details
All mutation actions show toast notifications. All tabs respect RBAC (compliance.view / compliance.manage).
Common Compliance Scenarios
Scenario: Rolling out a new compliance standard
- Copy the appropriate system template (e.g., CIS Level 1 Windows)
- Review and customize checks for your environment
- Disable checks that don’t apply (bulk-toggle)
- Publish the template
- Create a compliance policy referencing the template
- Set scan interval and batch size
- Wait for first scan cycle (up to 30 minutes)
- Review results and create exceptions for known acceptable deviations
Scenario: Investigating a score drop
- Check score regression alerts for affected org
- Identify which endpoints dropped: check dashboard’s worst endpoints
- Drill into specific endpoint:
- Compare with history:
- Determine if a change caused the regression (new software, config change, etc.)
Scenario: Setting up auto-remediation
- Ensure compliance checks have remediation bindings:
- Provide the script or workflow ID
- Set
remediation_requires_changeif change governance needed - Enable auto-remediation on the policy:
- Set
auto_remediate_critical = true(and other severity levels as needed) - Failed checks matching enabled severity gates will auto-remediate after each scan
Scenario: Updating a template without breaking scans
- Published templates are immutable – this is by design
- Create a new version:
- Edit the draft version with your changes
- Publish the new version
- Update policies to reference the new template (or rely on pinned_template_version = null for auto-latest)
- Old scans retain their results against the old template version
Cross-Domain Operations
Vulnerability-Driven Patching
The vulnerability management system automatically drives patch deployments:
- CVE sources are synced (NVD daily, CISA KEV daily)
- Endpoint matching detects vulnerable endpoints (every 6 hours)
- Vuln-patch bridge links CVEs to available patches
- Auto-remediation creates patch deployments for qualifying vulns
- Lifecycle sync resolves alerts when patches are applied
No manual intervention needed if:
- Remediation policy is configured
- Auto-deploy ring set exists
- Patches are auto-approved by policy
Compliance-Driven Remediation
Compliance scans can trigger remediation through:
- Script remediation: Direct script execution on the agent
- Workflow remediation: Trigger a multi-step workflow
- Approval-gated remediation: Require a native approval before remediation dispatches (manual approval mode)
The compliance and patching systems share:
- Agent job infrastructure
- Change management integration
- Alert and incident correlation
Automation Kill Switch
If Organization.automation_paused = True:
- Auto-deploy is skipped
- Auto-remediation is skipped
- Manual operations still work
Use this during major incidents or change freezes.