feat(coverage): include the WireGuard unit absent from both Defender exports #12
Loading…
Reference in a new issue
No description provided.
Delete branch "fm/dse-security-reports-wireguard-coverage"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
The captain asked for the WireGuard machine to be included in the analysis: dse_prod_wireguard (ASP-DSE-PROD-WIREGUARD, an Alma 9.8 Azure VM managed by dse-ansible, WireGuard gateway with 19 peers) appears in neither Defender export -- a coverage gap, since the machine is real, reachable and runs the same stack family. The pipeline now maps, collects evidence for and scans the unit, and the derivation keeps evidence-covered units with zero Defender rows in the payload with an explicit absence marker, so both reports show the gap data-driven instead of dropping the machine silently. The trivy join gains its honest one-directional complement (trivy-only) next to the per-row defender-only verdicts.
What changed
config/systems.csv: new exact rowASP-DSE-PROD-WIREGUARD(aliasdse_prod_wireguard, RG-DSE-PROD, DSE domain), sojust evidencecollects it andjust scanscans it like the other units.scripts/derive_findings.pyandsrc/dse_security_reports/derive.py: on real data the evidence cache is enumerated for units outside the export (gated onis_synthetic, so the fixture lane never joins real caches); evidence-covered units with zero Defender rows stay in the payload withdefenderExport: absent,defenderRows, their mapping fields and machine-scopedtrivyOnlydetections; the payload-levelscannerAgreementgains atrivy-onlycount. Both lanes stay byte-identical (just py-crosscheckgreen on fixture and real data).scripts/ssh_evidence.sh/scripts/scan_trivy.sh: comment updates only (units incl. zero-Defender-row coverage, trivy-only dimension).reports/defender-triage.typ: Systemlandkarte and Evidenzabdeckung render the unit with 0 Defender rows, a data-driven absence marker (Abdeckungsluecke, nicht sauber) and its evidence/trivy posture; the Trivy column now counts trivy-only CVEs per unit; a new subsection breaks the trivy-only complement down per unit with the backlog framing; the kernel-gap ranking row (P15) covers the four el9 units now; the SSH-evidence Methods bullet states the public-key authentication forphilipp_baumannwith account and key managed by the Ansible IaC (devxy.sysadminusers role); counts updated (8 Linux units, nginx on 7 of 8) and a fan-out row for clarifying the Defender coverage of the unit (MDE runs per the status audit).reports/defender-findings.typ: scanner-agreement prose explains the one-directional join with the per-export trivy-only count; the evidence section lists units with zero Defender rows in the export as coverage gaps.tests/test_derive.py: wireguard-shaped cache unit (absence marker, mapping fields, trivy-only join including machine scoping -- the bind CVE reported by Defender on DEV-WORKBENCH is trivy-only on WIREGUARD), the synthetic gate proven byte-identical for both lanes, and the committed mapping coverage test gains the new endpoint.AGENTS.md: project notes updated (8 units, coverage-gap handling, trivy-only dimension, five generated tables).Behaviour change
Machines covered by SSH evidence but absent from the Defender exports no longer vanish from the derivation: they render in the system map and coverage tables with 0 Defender rows and an explicit coverage-gap marker, together with their evidence and trivy posture (ASP-DSE-PROD-WIREGUARD: Alma 9.8, running kernel fixed, dnf-auto+install enabled, no nginx, no venvs, 998 trivy-only detections / 295 CVEs). The scanner-agreement counts gain a
trivy-onlyvalue that names trivy findings without a Defender counterpart on the same unit, including the distro advisory backlog, and both reports state that this number is not comparable to export rows. The synthetic fixture lane and byte-identical reproducibility are unchanged.Instructions-PR: none
89d24cc48dto6658ab47f3