HashiCorp bringt ein Tool für Compliance-Tests

Sentinel setzt Policies als Code um und lässt sich in den Entwicklungszyklus einbetten. Das Framework wird Bestandteil der Enterprise-Produkte von HashiCorp und ist vergleichbar mit Chef InSpec.

 –  2 Kommentare
HashiCorp bringt mit Sentinel ein Tool zur Absicherung von Code

Der Hersteller kommerzieller und quelloffener Infrastrukturwerkzeuge HashiCorp hat ein Policy-as-Code-Framework vorgestellt. Das Tool namens Sentinel, was sich mit Wächter übersetzen lässt, wird Bestandteil der kommerziellen Produkte des Unternehmens, also Terraform Enterprise, Nomad Enterprise, Vault Enterprise und Consul Enterprise. Sentinel hilft mit einer eigenen Sprache, Compliance-Vorgaben umzusetzen, und ist vergleichbar mit InSpec, das Chef vor einem Jahr in Version 1.0 veröffentlicht hat.

Mit dem Framework lassen sich Policies in der spezielle entwickelten Sentinel Language schreiben, die sich an bekannten Programmiersprachen orientiert. Offensichtlich haben die Macher im Vorfeld evaluiert, ob vorhandene Sprachen sich für den Einsatz in Sentinel eignen, sind aber zu dem Schluss gekommen, dass eine eigene Sprache sinnvoller sei.

Die wichtigsten Voraussetzungen beim Entwurf waren, dass die Sprache für erfahrene Entwickler geeignet sein soll und bekannte Elemente verwendet, aber auch Mitarbeitern ohne Programmierkenntnisse die Möglichkeit geben müsse, einfache Regeln zu entwerfen. Außerdem ist sie auf die HashiCorp-Produkte ausgelegt. Schließlich spielt die Sicherheit eine große Rolle: Der ausgeführte Code darf weder zu einem Absturz des Systems führen noch den unkontrollierten Zugriff auf Ressourcen ermöglichen.

Jede Policy hat eine rule namens main. Wenn das dort berechnete Ergebnis true ist, gilt die Policy als erfüllt. Weitere Regeln lassen sich analog zu Methoden in anderen Programmiersprachen umsetzen. Folgendes einfache Beispiel von der HashiCorp-Site zeigt die Überprüfung des Wochentags und der Zeit:

import "time"
# Validate time is between 8 AM and 4 PM
valid_time = rule { time.hour > 8 and time.hour < 16 }
# Validate day is M - Th
valid_day = rule {time.day in ["monday", "tuesday", "wednesday", "thursday"]}
main = rule { valid_time and valid_day }

Sentinel kennt drei sogenannte Enforcement Levels, die festlegen, wie das System die jeweilige Policy durchsetzt:

  • Advirsory bedeutet, dass das System beim Verfehlen der Policy lediglich eine Warnung ausgibt.
  • Hard Mandatory zeigt an, dass die Policy auf jeden Fall erfüllt sein muss.
  • Soft Mandatory heißt, dass die Policy erfüllt sein muss, wenn kein sogenannter "Override" zum Überstimmen der Regel spezifiziert ist. Die konkrete Umsetzung dazu ist von der jeweiligen Anwendung abhängig.

Ein Sentinel SDK ermöglicht die Anbindung externer Systeme, um die Policies in die Arbeitsabläufe über verschiedene Systeme hinweg zu verwenden. Mit dem Sentinel Simulator können Entwickler die erstellten Policies lokal testen, bevor sie sie ins System überspielen.

Weitere Details lassen sich dem HashiCorp-Blog entnehmen. Eine Open-Source-Variante scheint anders als bei Chef InSpec nicht geplant zu sein, zumal der Blog eindeutig Bezug auf die Enterprise-Produkte nimmt. (rme)