0Pricing
Terraform Infrastructure as Code · Lektion

Sentinel-Richtlinien für Governance

Lernen Sie, mit HashiCorp Sentinel Richtlinien als Code zu schreiben und durchzusetzen, um Compliance und Governance in Ihren Terraform-Deployments sicherzustellen.

Sentinel-Richtlinien für Governance ist eine kostenlose Terraform Infrastructure as Code-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Terraform Infrastructure as Code-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Einführung in Policy as Code und Sentinel

Was wäre, wenn Sie automatisch sicherstellen könnten, dass Ihre Infrastruktur-Bereitstellungen bestimmte Regeln erfüllen? Genau das ermöglicht Policy as Code (PaC). PaC definiert Regeln für die Erstellung und Änderung von Infrastruktur auf programmierbare Weise und integriert Governance in Ihren Entwicklungsprozess. HashiCorp Sentinel ist ein leistungsfähiges PaC-Framework, das für diesen Zweck entwickelt wurde.

Die Rolle von Sentinel in Terraform

Sentinel lässt sich direkt in Terraform Cloud und Terraform Enterprise integrieren. Es fungiert als Kontrollinstanz und bewertet Ihren Terraform-Ausführungsplan bevor Änderungen auf Ihre Cloud-Umgebung angewendet werden. Dieser entscheidende Schritt verhindert, dass nicht konforme oder unsichere Infrastruktur überhaupt bereitgestellt wird, und setzt Regeln proaktiv durch.

Richtlinien und Durchsetzungsstufen

Eine Sentinel-Richtlinie ist eine Reihe von Regeln, die in der Sprache Sentinel geschrieben werden. Wird eine Richtlinie ausgelöst, gibt sie true (bestanden) oder false (fehlgeschlagen) zurück. Richtlinien können mit verschiedenen Durchsetzungsstufen konfiguriert werden:

  • Advisory: Warnt vor Verstößen, lässt den Vorgang aber fortsetzen.
  • Soft-Mandatory: Erfordert eine ausdrückliche Überschreibung, damit nicht konforme Änderungen fortgesetzt werden können.
  • Hard-Mandatory: Blockiert nicht konforme Vorgänge vollständig und erfordert die Einhaltung der Richtlinie.

Struktur einer Sentinel-Richtlinie

Sentinel-Richtlinien werden in .sentinel-Dateien definiert. Sie enthalten typischerweise Imports, Regeln und eine Hauptbedingung. Die main-Regel bestimmt, ob die Richtlinie bestanden wird oder fehlschlägt.

Eine einfache Richtlinie könnte so aussehen:

import "tfplan"

main = rule {
  tfplan.resource_changes is empty
}

Auf Daten des Terraform-Plans zugreifen

Der Import tfplan stellt eine strukturierte Ansicht des Terraform-Ausführungsplans bereit. Richtlinien verwenden diese Daten, um Folgendes zu untersuchen:

  • tfplan.resource_changes: Details zu Ressourcen, die erstellt, aktualisiert oder gelöscht werden.
  • tfplan.variables: Eingabevariablen, die für die Konfiguration bereitgestellt werden.
  • tfplan.outputs: Ausgabewerte der Konfiguration.

Diese Daten sind entscheidend, um fundierte Richtlinienentscheidungen auf Grundlage dessen zu treffen, was Terraform vorhat.

Beispiel: Nicht genehmigte Regionen ablehnen

Schreiben wir eine Sentinel-Richtlinie, um sicherzustellen, dass alle AWS-Ressourcen ausschließlich in us-east-1 bereitgestellt werden. Diese Richtlinie prüft die für jede AWS-Ressource im Plan konfigurierte Region.

import "tfplan/v2" as tfplan

allowed_regions = ["us-east-1"]

is_region_allowed = func(resource_change) {
  if resource_change.provider.name is "aws" {
    region = resource_change.provider.config.region else "us-east-1"
    return region in allowed_regions
  }
  return true # Not an AWS resource, allow
}

all_regions_compliant = all tfplan.resource_changes as _, rc {
  is_region_allowed(rc)
}

main = rule {
  all_regions_compliant
}

Richtlinienfunktionen und Operatoren

Sentinel stellt leistungsfähige integrierte Funktionen und Operatoren für komplexe Logik bereit:

  • Sammlungsfunktionen: all, any, filter, map zum Durchlaufen von Listen und Maps.
  • Typfunktionen: is, type_of zum Überprüfen von Datentypen.
  • Operatoren: Logische Operatoren (and, or, not) und Vergleichsoperatoren (==, !=, >, <).

Damit können Sie robuste und ausdrucksstarke Richtlinien für unterschiedlichste Szenarien erstellen.

Beispiel: Erforderliche Tags durchsetzen

Eine häufige Anforderung an die Governance besteht darin, bestimmte Tags für die Kostenzuordnung oder Identifizierung von Ressourcen durchzusetzen. Diese Richtlinie stellt sicher, dass alle neu erstellten oder aktualisierten aws_instance-Ressourcen über ein Project-Tag verfügen.

import "tfplan/v2" as tfplan

required_tags = ["Project"]

resource_has_required_tags = func(resource_change) {
  if resource_change.type is "aws_instance" {
    # Check if 'tags' attribute exists in the planned state
    if not ("tags" in resource_change.change.after) {
      return false
    }
    
    missing_tags = filter required_tags as tag {
      not (tag in resource_change.change.after.tags)
    }
    return missing_tags is empty
  }
  return true # Not an aws_instance, allow
}

all_instances_tagged = all tfplan.resource_changes as _, rc {
  (rc.change.actions contains "create" or rc.change.actions contains "update") ?
    resource_has_required_tags(rc) :
    true # Only check on create/update actions
}

main = rule {
  all_instances_tagged
}

Lokales Testen von Richtlinien

Bevor Sie Richtlinien in Terraform Cloud/Enterprise bereitstellen, können Sie sie lokal mit der Sentinel-CLI testen. Mit dem Befehl sentinel test können Sie Testfälle mit simulierten tfplan-Daten definieren. So können Sie das Verhalten der Richtlinie überprüfen und Fehler frühzeitig erkennen. Dadurch stellen Sie sicher, dass Ihre Richtlinien wie vorgesehen funktionieren, ohne Live-Umgebungen zu beeinflussen.

Überprüfung der Richtlinienlogik

Sie müssen eine Sentinel-Richtlinie erstellen, die verhindert, dass ein AWS-S3-Bucket mit öffentlichem Lesezugriff erstellt wird. Welchen konkreten Teil der tfplan-Daten würden Sie hauptsächlich untersuchen, um dies durchzusetzen?

Zusammenfassung: Governance mit Sentinel

Wir haben HashiCorp Sentinel kennengelernt, ein leistungsfähiges Policy-as-Code-Framework für Governance:

  • Es lässt sich in Terraform Cloud/Enterprise integrieren, um Regeln durchzusetzen.
  • Richtlinien bewerten den tfplan, bevor die Infrastruktur angewendet wird.
  • Verschiedene Durchsetzungsstufen (Advisory, Soft-Mandatory, Hard-Mandatory) steuern die Auswirkungen der Richtlinie.
  • Sie können Richtlinien schreiben, um Regionen abzulehnen, Tags durchzusetzen und vieles mehr.
  • Durch lokale Tests wird sichergestellt, dass die Richtlinien vor der Bereitstellung wie vorgesehen funktionieren.

Sentinel ist entscheidend, um Compliance, Sicherheit und betriebliche Standards bei Ihren Infrastruktur-Bereitstellungen einzuhalten.

Häufig gestellte Fragen

Ist die Lektion „Sentinel-Richtlinien für Governance“ kostenlos?

Ja — der vollständige Text von „Sentinel-Richtlinien für Governance“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Terraform Infrastructure as Code-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Terraform Infrastructure as Code-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Sentinel-Richtlinien für Governance“?

Lernen Sie, mit HashiCorp Sentinel Richtlinien als Code zu schreiben und durchzusetzen, um Compliance und Governance in Ihren Terraform-Deployments sicherzustellen. Du übst Terraform Infrastructure as Code mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Terraform Infrastructure as Code zu starten?

Keine Vorkenntnisse erforderlich. Terraform Infrastructure as Code auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Sentinel-Richtlinien für Governance“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Terraform Infrastructure as Code-Lektion Code schreiben und ausführen?

Ja. Jede Terraform Infrastructure as Code-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Multi-Cloud- und Hybrid-Cloud-Muster
  2. Sentinel-Richtlinien für Governance
  3. Terraform Cloud und Enterprise
  4. Benutzerdefinierte Provider entwickeln
← Zurück zu Terraform Infrastructure as Code