Container Image Scan Policy Template
Scan Policy Configuration
Severity Thresholds
| Environment |
Block On |
Alert On |
Accept |
| Production |
Critical, High |
Medium |
Low, Negligible |
| Staging |
Critical |
High, Medium |
Low, Negligible |
| Development |
None |
Critical, High |
Medium, Low, Negligible |
Scan Triggers
Image Inventory
| Image |
Registry |
Tag Policy |
Last Scanned |
Status |
app/frontend |
ghcr.io |
Immutable digest |
YYYY-MM-DD |
Pass/Fail |
app/backend |
ghcr.io |
Immutable digest |
YYYY-MM-DD |
Pass/Fail |
app/worker |
ghcr.io |
Immutable digest |
YYYY-MM-DD |
Pass/Fail |
Grype Configuration Template
# .grype.yaml - Place in repository root
check-for-app-update: false
fail-on-severity: "high"
output: "json"
scope: "squashed"
quiet: false
ignore:
# Template: Add accepted risks below
# - vulnerability: CVE-YYYY-NNNNN
# reason: "Justification for accepting this risk"
# expires: "YYYY-MM-DD" # Optional expiration for risk acceptance
db:
auto-update: true
cache-dir: "/tmp/grype-db"
max-allowed-built-age: 120h
match:
java:
using-cpes: true
python:
using-cpes: true
javascript:
using-cpes: false
stock:
using-cpes: true
Risk Acceptance Form
Vulnerability Risk Acceptance
| Field |
Value |
| CVE ID |
|
| Severity |
|
| Affected Package |
|
| Image(s) Affected |
|
| Justification |
|
| Compensating Controls |
|
| Approved By |
|
| Approval Date |
|
| Expiration Date |
|
Remediation SLA
| Severity |
Remediation Timeline |
Escalation |
| Critical |
24 hours |
Security Lead + Engineering VP |
| High |
7 days |
Security Lead |
| Medium |
30 days |
Team Lead |
| Low |
90 days |
Tracked in backlog |
| Negligible |
Best effort |
No escalation |