Anleitung: Compliance eines Images prüfen
Diese Anleitung zeigt, wie Sie ein bestehendes Container-Image gegen die container.gov.de Compliance-Policy (container.gov.de.rego) prüfen.
Wann brauchen Sie das?
- Vor der erstmaligen Einreichung eines Images
- Nach einem Update des Images oder seiner Abhängigkeiten
- Nach einer neuen CVE-Veröffentlichung, die Ihr Image betreffen könnte
Voraussetzungen:
- DevGuard Scanner installiert (Installationsanleitung)
- Das Image ist in einer Container Registry erreichbar (z.B.
registry.opencode.de) - Das Image besitzt eine VEX-Attestierung (oder Sie möchten herausfinden, ob es eine besitzt)
1. DevGuard Scanner aufrufen
Laden Sie die aktuelle container.gov.de-Policy herunter:
curl -LO https://gitlab.opencode.de/oci-community/container-gov/-/raw/main/data-generation/container.gov.de.regoFühren Sie den folgenden Befehl aus und ersetzen Sie den Image-Pfad durch Ihr Image:
devguard-scanner attestations \
registry.opencode.de/oci-community/images/IHRE-GRUPPE/IHR-IMAGE:TAG \
--policy container.gov.de.regoBeispiel mit dem Debian-Minimal-Image:
devguard-scanner attestations \
registry.opencode.de/oci-community/images/zendis/debian:13-main-minimal \
--policy container.gov.de.rego2. Ausgabe interpretieren
Der Scanner gibt ein SARIF-Dokument (Static Analysis Results Interchange Format) zurück. Ein konformes Image hat "kind": "pass":
{
"$schema": "https://json.schemastore.org/sarif-2.1.0.json",
"runs": [
{
"results": [
{
"kind": "pass",
"locations": [
{
"message": {
"text": "The attestation is compliant with the policy."
},
"physicalLocation": {
"artifactLocation": {
"uri": "oci://registry.opencode.de/oci-community/images/zendis/debian:13-minimal"
}
}
}
],
"message": {
"text": "Policy compliant"
},
"ruleID": "container.gov.de.rego"
}
]
}
],
"version": "2.1.0"
}Ein nicht-konformes Image hat "kind": "fail" und enthält eine Beschreibung des Verstoßes:
| Feld | Bedeutung |
|---|---|
results[].kind | "pass" = konform, "fail" = Verstoß |
results[].message.text | Zusammenfassung des Ergebnisses |
results[].locations[].message.text | Details zum Ergebnis oder Verstoß |
results[].locations[].physicalLocation.artifactLocation.uri | Das geprüfte Image |
results[].ruleID | Die angewendete Policy-Datei |
3. Verstöße beheben
Für jede in violations aufgeführte unbehandelte CVE müssen Sie eine Bewertung in Ihrem VEX hinterlegen (z.b. via DevGuard):
- Öffnen Sie devguard.opencode.de
- Navigieren Sie zu Ihrem Asset und dem Container-Scanning-Ergebnis
- Suchen Sie die unbehandelte CVE (z.B.
CVE-2024-12345) - Wählen Sie einen Bewertungsstatus:
- Falsch-Positiv – CVE gilt nicht für dieses Image
- Risiko akzeptiert (Accept) – Risiko dokumentiert und bewusst akzeptiert
Das bereits an das Container-Image attestierte VEX-Dokument wird erst nach einem erneuten Pipeline-Durchlauf aktualisiert. Daher müssen Sie die Pipeline manuell erneut ausführen, um die aktualisierte Compliance-Attestierung zu erhalten.
4. Compliance in der CI/CD-Pipeline automatisieren
Damit die Prüfung bei jedem Build automatisch stattfindet, fügen Sie den Compliance-Check in Ihre GitLab CI/CD-Pipeline ein.
stages:
- verify
compliance-check:
stage: verify
image: ghcr.io/l3montree-dev/devguard/scanner:main-latest
script:
- devguard-scanner attestations
$CI_REGISTRY_IMAGE:main-amd64
--policy container.gov.de.rego
rules:
- if: $CI_COMMIT_BRANCH == "main"Fehlerbehebung
Fehler: “No VEX attestation found” Das Image besitzt noch keine VEX-Attestierung. Folgen Sie der Anleitung VEX-Attestierung erstellen.