Offizielle Website - Bundesrepublik Deutschland

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.rego

Fü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.rego

Beispiel mit dem Debian-Minimal-Image:

devguard-scanner attestations \
  registry.opencode.de/oci-community/images/zendis/debian:13-main-minimal \
  --policy container.gov.de.rego

2. 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:

FeldBedeutung
results[].kind"pass" = konform, "fail" = Verstoß
results[].message.textZusammenfassung des Ergebnisses
results[].locations[].message.textDetails zum Ergebnis oder Verstoß
results[].locations[].physicalLocation.artifactLocation.uriDas geprüfte Image
results[].ruleIDDie 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):

  1. Öffnen Sie devguard.opencode.de
  2. Navigieren Sie zu Ihrem Asset und dem Container-Scanning-Ergebnis
  3. Suchen Sie die unbehandelte CVE (z.B. CVE-2024-12345)
  4. 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.