aquasecurity/trivy-checks
bundle. The same air-gapped path a customer with no outbound network runs is
the one every deployment runs by default.
Kinds covered, with proof
Every kind below is asserted by a fixture test in the same scan, in the same offline run, alongside a clean file that must produce nothing — a scanner that flags correct configuration cannot be trusted about the one finding it reports next to it.
Azure ARM templates and Ansible playbooks are enabled by the same scanner
list (Trivy’s own default) but do not yet have a fixture test in this
repository proving a specific finding — treat their coverage as claimed by
the upstream engine, not independently verified here until one exists.
Not covered
docker-compose is not a supported misconfiguration target. Trivy has no docker-compose config analyzer — there is no rule catalogue that understands adocker-compose.yml’s shape the way it understands a Kubernetes manifest’s.
Scanning a compose file today finds nothing not because your compose file is
clean, but because nothing looked. This is stated here rather than left to
be discovered from an empty findings list.
Remediation, not just a rule id
Every misconfiguration finding carries:- the file and exact line range the rule matched (
location.path,location.start_line,location.end_line), - the resolved resource name where the engine can name one (e.g.
aws_s3_bucket.logs), not merely the file it lives in, - the rule id (e.g.
AVD-AWS-0001), and - a resolution — what to change and why it matters, in prose, not only a link.
Severity overrides: per-organization policy control
A customer who has already compensated for a specific rule elsewhere — a WAF in front of the bucket a rule flags, say — can set what severity their organization treats that rule as, without suppressing the finding and losing visibility into recurrences:iac_severity_override.set /
.removed), with the stated reason kept verbatim, because a severity a
customer disagrees with the engine about is exactly the kind of decision an
auditor needs to see who made and why.
An override never moves a finding’s identity. A misconfiguration’s
fingerprint is built from its rule id and its resolved resource — deliberately
never from severity, a file path once a resource name exists, or a line
number — so a triage decision made under one severity survives the override
being set, changed or removed, and survives the resource moving to a
different file or the file gaining an import above it that shifts every line
number below.
Suppression — silencing a specific finding, with a reason and a bounded
expiry — is a separate, general mechanism that already applies to every
finding kind including misconfigurations; see
Suppression. A severity override changes how severe
a rule IS; suppression changes whether a specific finding is currently being
triaged.
Requires policies:manage to set or remove, policies:read to list.
Surfaces
- API —
GET/PUT/DELETE /api/v1/settings/iac-severity-overrides(see API reference). - Dashboard — misconfiguration findings appear in the shared findings list and detail view alongside every other finding kind, filterable by kind; severity overrides are managed from Settings.
- This page — the kinds covered, the rule source, and this scanner’s actual limitations.

