CI-Integration, Unit-Tests und Installationswege Prüfmechanismen für Team-Workflows und Richtliniensets mit Conftest

Von Thomas Joos 2 min Lesedauer

Anbieter zum Thema

„Conftest“ ergänzt Entwicklungsabläufe um reproduzierbare Richtlinienprüfungen und ermöglicht den Einsatz in „Github“-Actions, „Azure“-Pipelines und pre-commit-Hooks. Zusätzlich liefert die Rego-Engine präzise Unit-Tests für Richtliniendateien und unterstützt umfangreiche Parser im Testkontext.

Der Artikel behandelt „Conftest“-CI-Integration, Unit-Tests und Installationswege. (Bild:  Thomas Joos)
Der Artikel behandelt „Conftest“-CI-Integration, Unit-Tests und Installationswege.
(Bild: Thomas Joos)

Der Output-Parameter steuert das Ausgabeformat. stdout liefert Text, Json strukturierte Objekte, tapPrüfzeilen, table tabellarische Werte, junit XML-Ergebnisse, github Anweisungen für Github Actions, azuredevops Nachrichten für Azure-Pipelines, sarif Sicherheitsdaten.

Eine Github-Action nutzt ein Container-Image von Conftest, prüft Dateien im Repository und erzeugt Ausgaben im github-Format. Azure-Pipelines greifen auf das azuredevops-Format zurück. Beide Varianten integrieren Richtlinienprüfungen unmittelbar in Pull-Requests und Build-Prozesse.

Unit-Tests für Rego-Regeln

conftest verify führt Richtlinientests aus. Eine Testdatei endet auf _test.rego und ersetzt Eingabedokumente über die with-Anweisung. Die parse_config-Funktion verwandelt Konfigurationstexte komplexer Formate in Rego-Objekte. Dies vermeidet manuelle JSON-Fragmente in Tests.

Eine Richtlinie für „AWS Load Balancer“ prüft das Protokoll und erzeugt einen Meldungstext, wenn ein HTTP-Wert vorliegt. Eine „Azure Managed Disk“-Regel untersucht Verschlüsselungsparameter. Die parse_config_file -unktion übernimmt Testdateien von der Festplatte und integriert sie als Input in die Rego-Engine.

Ein Prefix wie deny_ statt deny erleichtert die Prüfung einzelner Regeln. Dadurch prüft ein Test ausschließlich eine bestimmte Regel und verhindert Verwechslungen mit anderen deny-Blöcken.

Pre-commit-Integration

Eine .pre-commit-config.yaml-Datei bindet Conftest in den Commit-Ablauf ein. Der Hook conftest-test prüft Dateien vor dem Commit. Ein weiterer Hook conftest-verify führt Richtlinientests aus. Weitere Hooks wie conftest-fmt oder conftest-pull erweitern Abläufe um Formatierung oder Policy-Synchronisation. Dadurch fließen Richtlinien in frühe Phasen der Entwicklung ein und sichern die Konsistenz.

Installation und Nutzung

Conftest liegt für Linux, MacOS und Windows vor. Ein Installationsvorgang lädt das Release-Archiv, entpackt die Datei und verschiebt die Binärdatei nach /usr/local/bin. Homebrew installiert Conftest unter MacOS und Linux über brew install conftest.

Windows installiert das Werkzeug über „Scoop“ mit scoop install conftest. Ein Container mit openpolicyagent/conftest führt Prüfungen ohne lokale Installation aus, indem ein Projektverzeichnis in den Container gemountet wird. Eine Go-Umgebung installiert Conftest über go install.

Artikelfiles und Artikellinks

(ID:50632832)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu RZ- und Server-Technik

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung