Skip to content

Run a compliance audit, end to end

Policy Compliance counts differently from every other module, and the differences matter from the first step. Read how the numbers work alongside this if the counting is new to you.


Before you start

You need Why
The benchmark being assessed It decides which controls apply
The host list in scope Scope here is hosts, not applications
Working scanner credentials on those hosts A failed check returns error, not fail

1. Create the audit

Policy Config → PC Audit → Request New Audit.

Policy Compliance audits

Policy Config → PC Audit

2. Set the scope

Add the hosts through host selection. Export IPs downloads the list — keep it, because compliance scope disputes are settled by comparing it against the benchmark tool's own target list.

Hosts that genuinely do not apply belong in excluded assets, each with a Comment giving the justification. An exclusion without one is the first thing an external auditor questions.


3. Upload the results

Uploads are queued rather than applied immediately.

The posture upload queue

Policy Config → Postures → Uploaded Report Status

Choose the upload type carefully: it decides how incoming rows meet the existing ones — merge, closure, limited closure or ignore. The wrong choice is not a parsing error and produces no warning; it produces the wrong result quietly.

While it processes: the queue shows Pending or In Progress, and counts move. A failed job carries a per-row reason — most often a host in the file that is not in the audit's scope.


4. Read the results

Postures

Policy Config → Config Policies → Postures

A posture is one control checked against one host. Every check produces a row whether it passed or not, so an audit of 400 hosts and 300 controls is 120,000 rows.

Total postures = passed + failed + error. If the three do not add up, the run is still processing.

Two columns that look alike and are not:

Column Means
Posture Status What the check returned — pass, fail, error
Status What your team decided to do

A posture can be fail and Risk accepted at once. The machine is still non-compliant, and the organisation has agreed to leave it that way.

Mostly errors is a credentials problem, not a compliance result

Error means the check could not run. A benchmark returning mostly errors usually indicates the scanner could not authenticate to the targets.


5. Work the failures

Open a posture for Cause and Evidence. Cause is the rule's explanation; Evidence is the value actually read from the machine. When an owner says "that setting is correct", Evidence is what settles it.

Record decisions as you go:

  • Comments — the discussion trail, with who and when.
  • Status changes — each passes through a confirmation dialog naming the audit and the transition. Whether a comment is required depends on the target status.

Comments accept letters, numbers and _ - . & up to 5000 characters, so text pasted from a ticketing system is sometimes rejected for its characters rather than its length.


6. Approve

Bulk Approve Audit Status acts on the rows you tick, which is what the checkbox column is for — a cycle's worth of completed audits can be approved together.


7. Re-assess

A follow-up assessment against the same scope shows what has actually changed. The status history on each posture — including the Evidence recorded by whoever changed it — is what an auditor reads later.


When something looks wrong

Symptom First thing to check
Upload "did nothing" The queue, not the posture list
Counts do not add up Still processing
Everything closed, or nothing updated The upload type used
Mostly errors Scanner credentials on the targets
The list is empty The filter badge — filters persist across the module
The heading says "undefined" A known defect; the table below is still correct