Einheit 6 / 11

Management von Infrastructure as Code (IaC): Terraform, Ansible und Plan Control

Gewinne:

  • Fähigkeit, IaC-Code (Terraform, Ansible) mit künstlicher Intelligenz mit den engsten Berechtigungen und sicheren Standardeinstellungen zu erstellen und den deklarativen Ansatz zu verstehen
  • Möglichkeit, Datenverlust zu verhindern, indem Lösch- und Ersetzungszeilen vor der Anwendung der Plan-/Prüfausgabe gelesen und erfasst werden
  • Möglichkeit, den Verlust von Geheimnissen zu verhindern, indem die Statusdatei im Remote-Backend verschlüsselt und gesperrt bleibt und Änderungen in kleine, umkehrbare Schritte aufgeteilt werden

Management von Infrastructure as Code (IaC): Terraform, Ansible und Plansteuerung mit KI

In der Vergangenheit erfolgte die Einrichtung eines Servers mit manuellen Klicks, Befehlen und persönlichen Notizen; Das Ergebnis waren nicht reproduzierbare „Snowflake“-Server, von denen niemand genau wusste, wie man sie einrichtet. Infrastructure as Code (IaC) ist der Ansatz, der diesem Chaos ein Ende setzt: Server, Netzwerke, Sicherheitsregeln werden nicht von Hand, sondern durch versionierbare Textdateien (Code) definiert. Wenn Sie diesen Code ausführen, wird die Infrastruktur genau so eingerichtet, wie Sie sie geschrieben haben – jedes Mal dieselbe, dokumentiert und wiederholbar. Die gängigsten Tools sind Terraform und CloudFormation für die Cloud-Infrastruktur sowie Ansible für die Serverkonfiguration. Hier ist die KI sehr geschickt darin, diesen IaC-Code zu schreiben, zu erklären und zu überprüfen. Doch die Macht von IaC birgt auch Gefahren: Eine falsche Leitung kann eine ganze Infrastruktur auslöschen; Die KI schreibt also Code, Sie lesen den „Plan“, genehmigen ihn und führen ihn aus.

In dieser Einheit werden wir den deklarativen Ansatz, die Plan/Anwenden-Unterscheidung, Staatssicherheit und Idempotenz diskutieren; Sie lernen die IaC-Generierung mit KI und die wichtigste Fähigkeit, die „Plankontrolle“.

Deklaratives Denken: „Was wäre, wenn“, nicht „Wie geht es?“

Die meisten IaC-Tools sind deklarativ: Sie beschreiben den Endzustand des Systems („sagen wir 3 Webserver, 1 Load Balancer“), das Tool selbst berechnet, wie es zu diesem Zustand gelangt. Dies unterscheidet sich vom Schreiben eines Skripts („Mach dies, dann mach das“ Schritt für Schritt). Der große Vorteil des deklarativen Ansatzes ist die Idempotenz: Selbst wenn Sie den Code zehnmal ausführen, ist das Ergebnis dasselbe, da das Tool prüft, ob der gewünschte Zustand bereits vorhanden ist, und wenn ja, berührt es ihn nicht. Denken Sie an diesen Unterschied, wenn Sie IaC in die KI schreiben: Sie sagen: „Diese Infrastruktur in den Zustand versetzen“ und nicht „Führen Sie diese Befehle aus“.

Planen/anwenden: das wichtigste Sicherheitsgeländer

Die lebensrettende Funktion von IaC ist der Planschritt. In Terraform, Terraform Plan, in Ansible erzeugt der --check-Modus eine Vorschau dessen, „was sich ändert, wenn ich es anwende“, bevor der Code ausgeführt wird: „2 Ressourcen werden hinzugefügt, 1 wird sich ändern, 0 wird gelöscht“. Nur so können Sie Ihre Absicht vor der Umsetzung mit der Realität vergleichen. Wichtige Regel: Bewerben Sie sich niemals, ohne den Plan gelesen zu haben. Achten Sie besonders auf die Zeilen „zerstören“. Wenn aufgrund eines Tippfehlers „12 wird gelöscht“ statt „1 wird geändert“ angezeigt wird, hat Sie der Plan vor einer Katastrophe bewahrt. Nachdem Sie den Code an die KI ausgegeben haben, lassen Sie ihn sagen: „Untersuchen Sie mit mir die Planausgabe Zeile für Zeile und markieren Sie jede Zeile, die Löschung/Neuerstellung enthält.“

Achtung: Einige Änderungen an Terraform führen dazu, dass eine Ressource „zerstört und neu erstellt“ wird, statt dass sie „an Ort und Stelle aktualisiert“ wird. Dies bedeutet Datenverlust für eine Datenbank. Das Ignorieren von -/+ oder „Erzwingen des Ersetzens“ in der Planausgabe ist einer der teuersten Fehler.

Staatsakte: Aufzeichnung von Geheimnissen und Wahrheit

Tools wie Terraform speichern den aktuellen Status der von ihnen verwalteten Infrastruktur in einer Statusdatei. Diese Datei ist aus zwei Gründen von entscheidender Bedeutung. Erstens kann es Geheimnisse enthalten (Datenbankkennwörter, Schlüssel können im Klartext vorliegen); Fügen Sie den Status daher niemals in ein öffentliches Repository oder eine KI ein, sondern bewahren Sie ihn in einem verschlüsselten und zugriffsbeschränkten Remote-Backend auf. Zweitens: Wenn der Staat beschädigt wird oder verloren geht, verliert das Vehikel die Verbindung zwischen der realen Infrastruktur und der imaginären Infrastruktur; Daher sind eine Sicherung des Zustands und ein Sperrmechanismus (Schloss, das verhindert, dass zwei Personen es gleichzeitig zerstören) unerlässlich.

Schritt für Schritt: IaC mit KI sichern

  1. Geben Sie Absicht und Anbieter an. „2 Server auf AWS, mit Terraform, in dieser Region, dieser Größe und einer Sicherheitsgruppe.“ Wenn Cloud, Tool und Version klar sind, erzeugt die KI eine korrekte Syntax.
  2. Sicherheitsvorgaben anfordern. „Sicherheitsgruppe öffnen, Verschlüsselung aktivieren, Geheimnisse in Variable extrahieren, öffentlichen Zugriff gewähren.“ KI kann standardmäßig lose Proben generieren.
  3. Lesen und verstehen Sie den Code. Verstehen Sie jede Ressource, jede Erlaubnis Zeile für Zeile. Wenden Sie keine Erlaubnis an, die Sie nicht verstehen.
  4. Holen Sie sich einen Plan und prüfen Sie ihn. Führen Sie den Plan/--check aus, prüfen Sie die Ausgabe mit AI, markieren Sie die Lösch- und Neuaufbauzeilen.
  5. Klein und reversibel auftragen. Führen Sie eine große Veränderung in kleinen Schritten durch, nicht auf einmal. Kennen Sie bei jedem Schritt den Weg zurück.
  6. Staat schützen. Verwenden Sie ein entferntes, verschlüsseltes Backend und eine Sperre. Niemals auslaufen.

drei Mini-Koffer

Fall 1 – Der Plan hat eine Datenbank wiederhergestellt. Ein Ingenieur wollte die Größe einer Datenbank mit dem Terraform-Code erhöhen, den er mit KI erstellt hatte. Während er in der Ausgabe des Terraform-Plans erwartet hatte, dass sich „1 ändern“ würde, sah er „1 zerstören, 1 hinzufügen“ – der von ihm gewählte Parameter löste einen Neuaufbau und keine direkte Aktualisierung aus, was bedeutete, dass alle Daten gelöscht wurden. Plan Control stoppte den irreversiblen Datenverlust, bevor er implementiert wurde.

Fall 2 – Rückkehr aus dem lockeren Zahlungsverzug. Ein Team fragte die KI nach einem Firewall-Code. Um das Beispiel auszuführen, generierte die KI eine einfache Regel von 0.0.0.0/0, was „öffentlich im Internet“ bedeutet. Der Techniker bemerkte dies beim Lesen des Codes und schränkte den Zugriff nur auf den Unternehmens-IP-Bereich ein. Bei einer Implementierung ohne Prüfung wäre die Datenbank für das gesamte Internet offen.

Fall 3 – Staatsleck verhindert. Ein Juniormitglied wollte gerade die Datei terraform.tfstate intakt in ein öffentliches Tool einfügen, um ein Terraform-Problem zu lösen. Der leitende Ingenieur hat angehalten: Der Status enthielt ein Klartext-Datenbankkennwort. Stattdessen wurde eine entschlüsselte Zusammenfassung, die das Problem beschreibt, geteilt und der Status in das verschlüsselte Remote-Backend verschoben.

Vier kopierbare Vorlagen

1) IaC-Ressourcengenerierung (sicherer Standard):

Ihre Rolle: Senior Cloud Infrastructure Engineer. [Wolke, z.B. AWS] für[Tool, z.B. Terraform] Code generieren. Zweck: [Zweck].Sicherheitsregeln: öffentlicher (0.0.0.0/0) Zugriff OPEN; beginnen Sie mit der engsten Berechtigung; Verschlüsselung aktivieren; Geheimnisse in Variablen extrahieren, nicht in Code einbetten; Überprüfen Sie die Einstellungen, die zur Löschung/Neuerstellung führen können. Erklären Sie jede Quelle mit einem kurzen Kommentar.

2) Planen Sie das Output-Audit:

Unten finden Sie eine [Terraform-Plan-/Ansible-Prüfung]-Ausgabe. Sagen Sie mir: (1) wie viele Ressourcen hinzugefügt/geändert/gelöscht werden, (2) markieren Sie auch die Zeilen „Zerstören“ oder „Erzwingen des Ersetzens“, bei denen das Risiko eines Datenverlusts besteht, (3) listen Sie alle Änderungen auf, die unerwartet oder gefährlich erscheinen. Ausgabe: [plan]

3) Sicherheitsüberprüfung des IaC-Codes:

Untersuchen Sie den folgenden IaC-Code auf Sicherheit: (1) Gibt es zu weitreichende Zugriffe/Berechtigungen, (2) ist die Verschlüsselung deaktiviert, (3) sind Geheimnisse im Code eingebettet, (4) gibt es öffentlich verfügbare Ressourcen? Schlagen Sie für jeden Befund eine Korrektur vor. Code: [maskierter Code]

4) Teilen Sie die Änderung in sichere Teile auf:

Ich möchte diese große Infrastrukturänderung [Erklärung] nicht auf einmal umsetzen. Teilen Sie es in kleine, unabhängige Schritte auf, zu denen Sie leicht zurückkehren können. Zu jedem Schritt: Welche Änderungen gibt es, worauf muss ich im Plan achten, wie kann ich es rückgängig machen, wenn es Probleme gibt?

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwache Eingabeaufforderung:

Schreiben Sie Terraform-Code, der einen Server auf AWS erstellt.

Region, Größe, Sicherheit, Netzwerk, Verschlüsselung sind unklar. Die KI erzeugt die lockersten und explizitesten Standardvorgaben für die Arbeit – würde sie in Produktion gehen, wäre sie eine Schwachstelle.

Kraftvolle Aufforderung:

Ihre Rolle: Senior Cloud Infrastructure Engineer. Definieren Sie einen Webserver mit Terraform auf AWS eu-central-1: t3.small, nur aus dem Unternehmens-IP-Bereich (ich gebe ihn mit einer Variablen), Port 443 ist offen, Festplatte ist verschlüsselt, kein öffentlicher Zugriff, Labels sind obligatorisch. Der Variable werden Geheimnisse offenbart. Nach dem Code: Sagen Sie mir vor der Implementierung die 3 Zeilentypen, auf die ich im Plan achten sollte, und erläutern Sie den Rückweg.

Bühne

Risiko

Sicherheitsgeländer

Code schreiben

Loose Default (öffentlich)

Engste Erlaubnis + Lesen

planen/prüfen

Löschen, ohne es zu merken

Inspektion planen, Markierung zerstören

Bewerben

Große einmalige Änderung

Kleine, umkehrbare Stufen

staatliche Verwaltung

Glasurleckage, Verformung

Remote-verschlüsseltes Backend + Sperre

Häufige Fehler

  • Bewerben, ohne den Plan zu lesen. Der Plan sieht eine Löschung und einen Wiederaufbau vor; Wenn es übersprungen wird, ist ein Datenverlust unvermeidlich.
  • Den lockeren Standard nicht bemerken. KI-Instanzen erzeugen häufig 0.0.0.0/0; Wenn es in die Produktion verlagert wird, bedeutet es Open Source für das gesamte Internet.
  • Auslaufender Staat. Durch den Export der Statusdatei in die KI oder ein offenes Repository werden Klartextgeheimnisse offengelegt.
  • Geheimnisse in Code einbetten. Das Schreiben des Passworts in IaC-Code stellt ein dauerhaftes Leck im Versionsverlauf des Codes dar.
  • Einen Neuaufbau mit einem Update verwechseln. Das Ignorieren der Forces-Replacement-Zeile führt zu Datenverlust in Datenbanken.
Tipp: Auch wenn Sie die Planausgabe einer KI zur Überprüfung übergeben, stützen Sie sich bei der endgültigen Entscheidung auf Ihr eigenes Wissen und nicht auf den Plantext. KI fasst den Plan zusammen und markiert riskante Linien; Die Antwort auf die Frage „Ist diese Löschung akzeptabel?“ hängt jedoch von Ihrem Geschäftskontext ab.

Zusammenfassend

IaC sorgt für Wiederholbarkeit und Dokumentation, indem es die Infrastruktur mit versionierbarem Code statt mit manuellen Klicks verwaltet. KI ist ein leistungsstarker Partner beim Schreiben, Beschreiben und Überprüfen dieses Codes auf Sicherheit. Doch die Stärke von IaC birgt auch Gefahren: Eine Leitung kann die gesamte Infrastruktur auslöschen. Denken Sie deklarativ, beginnen Sie mit der engsten Berechtigung, korrigieren Sie lose Standardeinstellungen, halten Sie Geheimnisse aus Code und Status fern. Die wichtigste Leitplanke ist der Plan-/Prüfschritt: Führen Sie niemals aus, ohne die Lösch- und Wiederherstellungszeilen zu lesen. Halten Sie den Status verschlüsselt, gesperrt und remote. Der Code liegt bei der KI, die Entscheidung liegt bei Ihnen.

Anwendungsaufgabe

Wählen Sie ein kleines Infrastrukturziel (z. B. eine einzelne virtuelle Maschine und eine Sicherheitsregel). Bitten Sie die KI mit der Vorlage „IaC-Ressourcengenerierung“ oben um einen Code mit sicheren Standardwerten. Überprüfen Sie den Code noch einmal mit der Vorlage „IaC-Code-Sicherheitsüberprüfung“ und versuchen Sie, mindestens eine lose Einstellung zu finden. Wenn möglich, führen Sie plan/--check auf einem Testkonto aus und überprüfen Sie die Ausgabe mit der Vorlage „Planausgabeprüfung“. Überprüfen Sie, ob eine Lösch- oder Neuerstellungszeile vorhanden ist. Beschreiben Sie in 6 Punkten Ihre Erkenntnisse und wie Sie den Staat sichern.

Checkliste

  • [ ] Habe ich Cloud, Tool und Version für AI angegeben und Code mit den engsten Berechtigungen angefordert?
  • [ ] Habe ich den Code auf lose Standardwerte überprüft (0.0.0.0/0, geschlossene Verschlüsselung)?
  • [ ] Habe ich die Geheimnisse in die Variable extrahiert, anstatt sie in den Code einzubetten?
  • [ ] Habe ich die Plan-/Prüfausgabe gelesen und die Löschzeilen markiert, bevor ich mich beworben habe?
  • [ ] Habe ich die Auswirkungen von „erzwungenem Austausch“/Neuaufbau auf Datenverluste bewertet?
  • Habe ich die [ ] State-Datei nicht verschlüsselt und gesperrt im Remote-Backend aufbewahrt und sie durchgesickert?