Data & Evidence
EngineerCode / policy labScenario sim

Control Health Metrics & Scorecards

Coverage, freshness, pass rate and exception aging, and the denominators that turn a reassuring dashboard into a lie.

45 min 195 XPSkills: Metrics, Reporting, SQL

Brief

Once controls emit data, someone will ask for a dashboard. The temptation is to publish a single percentage. The useful version publishes four numbers per control: coverage, freshness, pass rate and exception aging, because each one fails in a different, silent way.

Coverage says how much of the population the check saw. Freshness says when it last ran. Pass rate says what it found. Exception aging says how long you have tolerated what it found.

A control at 100% pass rate over 4% of the estate is not a healthy control. It is an unsampled one.

The scorecard that survives a challenge

Every metric on a control scorecard needs three things attached: the numerator, the denominator and the window. 'MFA compliance: 98%' is unauditable. '3,332 of 3,400 active admin accounts enrolled, evaluated daily, window 1-31 August' is a measurement someone else can reproduce.

Publish the window with the number and disagreements become arithmetic rather than opinion.

Control scorecard table with columns for coverage, freshness, pass rate and exception aging across several controls, with one row showing high pass rate but very low coverage.
Four numbers per control. Reading only one of them is how programs get surprised.

The denominator is where the lying happens

Almost every flattering compliance metric is flattering because of its denominator. Measure enrolled users over users who logged in this month and departed accounts vanish. Measure patched hosts over hosts the scanner could reach and the unreachable ones, the interesting ones, disappear.

The rule: the denominator is the population the control claims to cover, taken from an authoritative source, not from the tool doing the measuring.

Two calculations of the same metric: one dividing by scanned hosts giving 99 percent, the other dividing by the authoritative asset inventory giving 71 percent.
Same numerator, two denominators, two very different conversations.

Aging beats counting

An exception count is a vanity metric: it goes down when someone closes tickets, not when risk falls. Aging, how long each open exception has been open, bucketed against its approved expiry, tells you whether the program is absorbing risk or clearing it.

Trend matters more than level. Twelve exceptions with a median age of six days is a functioning program. Four exceptions with a median age of eleven months is a queue nobody owns.

Report the oldest exception by name. Averages hide the one that will hurt you.

Tasks

Answers are graded on the server: the answer key never reaches your browser.

Task 1: Ninety-nine percent of what?

Scenario sim+65 XP

Name the part of the metric that is wrong, then the source it must come from.

Incident brief

The patching scorecard reports 99% compliance and has done for two quarters. The number is computed as patched hosts divided by hosts the scanner reported on.

An incident starts on a host that has not been scanned since March because its agent stopped reporting. It does not appear in either side of the fraction.

The security lead's response is that the metric is accurate: every host it measured really was patched.

Term bank, not all of these are right

denominatorasset inventorynumeratorscanner outputcoveragesample

1.1Name the part of the metric that is wrong. (one word)

1.2Name the source it must come from. (two words)

Task 2: Green, and eleven weeks old

Scenario sim+65 XP

Name the missing metric, then what the tile is actually showing.

Incident brief

The access-review tile on the executive dashboard is green and reads 100%. The underlying job last completed on 14 June; a credential rotation in late June broke it and the dashboard renders the last successful result.

It is now September. Nobody has looked at the job logs because the tile is green.

The dashboard has no field showing when a result was produced.

Term bank, not all of these are right

freshnessstale signalcoveragepass ratelatencyuptime

2.1Name the missing metric. (one word)

2.2Name what the tile is actually showing. (two words)

Task 3: Four exceptions and a clean quarter

Scenario sim+65 XP

Name the metric that would expose this, then what the count is measuring instead.

Incident brief

The exception register shows four open items, down from nineteen. The quarterly pack leads with the reduction as evidence the program is maturing.

Three of the four have been open since the year before last, two are past their approved expiry, and eleven of the fifteen closures were bulk-closed by an administrator during a tool migration with the note 'migrated'.

No risk was retired; a queue was tidied.

Term bank, not all of these are right

exception agingticket hygieneexception countcoveragepass raterisk acceptance

3.1Name the metric that would expose this. (two words)

3.2Name what the count is really measuring. (two words)

Labs

80 bonus XP

Hands-on work. You edit the artefact, the server runs the checks: the expectations and the reference solution never reach your browser.

Lab 1 · YAML lab

Define a metric that survives a question

Briefing 40 XP

The patching tile reads 99% and has for two quarters. It is computed as patched hosts over hosts the scanner reported on, with no window and no age, and the security lead insists it is accurate because "every host it measured really was patched".

Rewrite the definition so a stranger could recompute it: an authoritative denominator, an explicit window, a freshness threshold, and exception health expressed as aging rather than a count.

Current tile, and what the sources can provide

current: patched_hosts / hosts_scanner_reported_on   -> 99%

available sources:
  asset_inventory   : authoritative list of hosts that exist (4,180)
  scanner_output    : hosts the scanner could reach this month (2,910)
  exception_register: open exceptions with opened_at and approved_expiry

notes:
  a host whose agent stops reporting disappears from scanner_output
  the tile currently renders the last successful result with no timestamp

Checks

  • Denominator is the population the control claims
  • Denominator comes from an authoritative source
  • The measurement window is explicit
  • A staleness threshold is set
  • Exception health is aging, not a count
Lab 2 · Review lab

Review the control scorecard

Briefing 40 XP

The quarterly control scorecard goes to the audit committee on Friday. Six metric definitions are up for review, and the team's position is that every one of them is 'already reported today'.

Accept the definitions someone outside the team could reproduce. Reject the ones that cannot survive a question about what they divide by, when they were true, or what they actually track.

Verdicts are accept or reject. Every rejection needs one reason code from: tool-denominator | no-window | count-not-aging | no-freshness.

scorecard_definitions.yaml: entries under review

H-1  MFA enrolment: 3,332 of 3,400 active admin accounts taken from the HR-backed identity inventory, evaluated daily, window 1-31 August.
H-2  Patch compliance: patched hosts divided by hosts the vulnerability scanner reported on this month.
H-3  Exception aging: open exceptions bucketed 0-30 / 31-90 / 90+ days against approved expiry, oldest item named.
H-4  Access review compliance: 98%. No period, no counts, no run date.
H-5  Exception health: count of open exceptions, quarter over quarter, presented as the risk trend.
H-6  Backup verification tile: renders the last successful check result; the tile carries no timestamp and no staleness threshold.

Checks

  • Every line in the fixture carries a verdict
  • Accept and reject land on the right lines
  • Each rejection cites a valid reason code

Next on your path · Data & Evidence

Drift Detection & Alert Design

Declared state versus observed state, detection latency, suppression windows, and alerts a human can actually act on at 3am.

Engineer 50 min 210 XP
Start next room

Community

Discussion & writeups

Sign in to post

Share how you approached the room or ask where you got stuck. Never paste task answers or full lab solutions: write the reasoning, not the key.

Loading discussion…