Einheit 3 / 11

Infrastruktur als Code verwalten: Künstliche Intelligenz mit Terraform und IaC

Gewinne:

  • Fähigkeit, das IaC-Konzept und den Arbeitszyklus von Terraform (Initialisierung, Planung, Anwendung, Status, Modul) zu verstehen und künstliche Intelligenz sichere HCL-Entwürfe erstellen zu lassen
  • Möglichkeit, jede Änderung vor der Anwendung anhand eines Plans zu überprüfen und unerwartete Lösch-/Ersetzungszeilen abzufangen
  • Fähigkeit, die Grundsätze anzuwenden, Geheimnisse aus dem Code fernzuhalten, den Status sicher zu halten und IAM-Berechtigungen zu minimieren

In der Vergangenheit musste man sich zum Einrichten eines Servers nur durch ein Cloud-Panel klicken: eine virtuelle Maschine erstellen, das Netzwerk einrichten, die Sicherheitsregel hinzufügen. Diese Methode war langsam, fehleranfällig und nicht wiederholbar – es war nahezu unmöglich, dieselbe Umgebung ein zweites Mal einzurichten. Heutzutage wird die Infrastruktur als Code verwaltet. IaC (Infrastructure as Code) ist ein Ansatz zur Beschreibung von Cloud-Ressourcen wie Servern, Netzwerken und Datenbanken in Textdateien statt manuell. Diese Dateien befinden sich in der Versionskontrolle (Git); Sie können sehen, wer was, wann und was geändert hat; Mit einem Befehl können Sie dieselbe Infrastruktur viele Male auf genau die gleiche Weise einrichten.

Das am weitesten verbreitete IaC-Tool ist Terraform. Terraform übernimmt die Definitionen, die Sie in einer lesbaren Sprache namens HCL (HashiCorp Configuration Language – die Konfigurationssprache von Terraform) schreiben, übersetzt sie in die API des Cloud-Anbieters (AWS, Azure, GCP) und erstellt die Ressourcen. Die KI kennt HCL sehr gut und produziert schnell komplexe Blöcke. Bei IaC sind die Kosten eines Fehlers jedoch hoch: Eine falsche Definition kann eine gesamte Produktionsdatenbank auslöschen. Deshalb besteht die goldene Regel in Terraform darin, jede Änderung mit einem „Plan“ zu betrachten, bevor man sie umsetzt.

Terraforms Laufzeit

Terraform arbeitet mit drei grundlegenden Befehlen – diese zu kennen ist eine Voraussetzung für die Steuerung der KI-Ausgabe:

  • „terraform init“: Startet das Projekt, lädt die notwendigen Anbieter-Plugins herunter.
  • „Terraform-Plan“: Vergleicht die aktuelle Situation mit der gewünschten Situation und zeigt, was hinzugefügt, geändert und gelöscht werden soll. Implementiert nichts. Es ist der wichtigste Sicherheitsschritt.
  • „terraform apply“: Wendet den Plan tatsächlich an und erstellt/ändert Ressourcen.

Darüber hinaus sind zwei Konzepte von entscheidender Bedeutung. Status (Statusdatei): Dies ist die Datei, in der Terraform den aktuellen Status der von ihm verwalteten Ressourcen speichert. Normalerweise wird es in einem abgelegenen und verschlossenen Lagerhaus aufbewahrt, sodass es nicht von zwei Personen gleichzeitig verändert oder zerstört werden kann. Modul: Wiederverwendbares Konfigurationspaket; Beispielsweise können Sie in vielen Projekten das Modul „Netzwerk einrichten“ nutzen.

Tipp: Das gefährlichste Zeichen in einer Terraform-Ausgabe sind Zerstörungs- oder -/+-(Ersetzungs-)Zeilen in der Planausgabe. Dies bedeutet, dass die Ressource gelöscht wird. Wenn Sie eine unerwartete Zerstörung in einem Plan sehen, bewerben Sie sich niemals, sondern verstehen Sie zunächst, warum sie aufgetreten ist.

Schritt für Schritt: IaC mit KI schreiben

  1. Klären Sie die gewünschte Infrastruktur. Seien Sie konkret wie „eine VPC, zwei Subnetze, eine Sicherheitsgruppe und ein t3.micro EC2 auf eu-central-1“.
  2. Geben Sie Anbieter und Version an. Welche Cloud, welches Terraform und welche Anbieterversion? Wenn Sie keine Version angeben, gibt AI möglicherweise eine veraltete/inkompatible Syntax zurück.
  3. Lassen Sie den HCL-Entwurf erstellen. Fordern Sie auch Variablen und Ausgaben an.
  4. Nimm Secret raus. Werte wie Passwörter und Schlüssel sollten in den Variablen- und Geheimtresor gelangen, nicht in den Code.
  5. Führen Sie „init“ + „plan“ aus. Lesen Sie die Planausgabe Zeile für Zeile. Suchen Sie nach unerwarteten Löschungen.
  6. Klein anfangen, schrittweise umsetzen. Wenden Sie es zunächst in einem isolierten Testkonto/einer isolierten Testumgebung an.

Sicherheit: IaC-spezifische Risiken

IaC ist ebenso riskant wie leistungsstark. Drei kritische Punkte:

  1. In der Staatsakte steckt ein Geheimnis. Der Terraform-Status speichert manchmal vertrauliche Werte, wie z. B. Datenbankkennwörter, im Klartext. Legen Sie State niemals in einem öffentlichen Repository ab; Verwenden Sie ein verschlüsseltes Remote-Backend mit eingeschränktem Zugriff.
  2. Betten Sie keine Geheimnisse in HCL ein. Zeilen wie „password="prod123"“ werden dauerhaft in den Git-Verlauf geschrieben. Verwenden Sie stattdessen eine Variable und geben Sie den Wert zur Laufzeit aus der Umgebungsvariablen (TF_VAR_...) oder dem geheimen Tresor ein.
  3. Sehr umfassende IAM-Berechtigung. KI erzeugt manchmal Blöcke wie Action: „*“ (alles zulassen), damit „es funktioniert“. Dies ist eine Schwachstelle; Beschränken Sie die Erlaubnis auf das erforderliche Minimum.
Achtung: Sobald ein Geheimnis in den Git-Verlauf gelangt, bleibt es in der Vergangenheit und kann kompromittiert werden, selbst wenn Sie die Datei löschen. Wenn Sie sich versehentlich verpflichten, stornieren Sie das Geheimnis sofort und wechseln Sie es aus. Nur löschen reicht nicht aus.

Tisch mit Schildern für riskante Pläne

Planausdruck

Bedeutung

was zu tun ist

+erstellen

Neue Ressource wird hinzugefügt

Im Allgemeinen sicher, aber Rezension

~ Direktaktualisierung

Die Quelle wird sich vor Ort ändern

Überprüfen Sie die Auswirkungen (wird es zu einem Ausfall kommen?)

-/+ ersetzen

Wird gelöscht und neu erstellt

ACHTUNG: Es kann zu Datenverlust kommen

- zerstören

Die Ressource wird zerstört

STOP: Bewerben Sie sich niemals, wenn Sie es nicht erwarten

drei Mini-Koffer

Fall 1 – 2 Tage Arbeit in 3 Stunden. Ein Team wollte Terraform schreiben, um eine neue Testumgebung (VPC, Subnetze, RDS-Datenbank, ECS-Cluster) einzurichten, war aber gerade auf HCL umgestiegen. Sie beschrieben der KI die Architektur und Versionen und erstellten einen modularen Entwurf. Sie überprüften jedes Modul anhand des Plans und hatten es innerhalb von drei Stunden betriebsbereit. Es würde zwei Tage manuelles Ausprobieren erfordern.

Fall 2 – Der Plan wurde gelöscht. Ein Ingenieur führte einen Plan aus, ohne einen von der KI generierten Aktualisierungscode anzuwenden. Die Ausgabe enthielt -/+ replace für die Produktionsdatenbank – die KI versuchte, ein nicht ersetzbares Feld zu ersetzen, was das Löschen und Neuerstellen der Datenbank bedeutete. Der Ingenieur hat die Anwendung gestoppt und die Änderung auf die sichere Methode geändert. Die Gewohnheit des Planens verhinderte eine Katastrophe.

Fall 3 – vergrabenes geheimes Leck. Ein Junior, YZ, gab db_password = „S3cret!“ aus. Er hat die Linie so festgelegt, wie sie ist, und sie vorangetrieben. Beim Code-Review gefangen; Das Passwort wurde sofort gelöscht und geändert, der Wert wurde in eine Variable verschoben und aus dem geheimen Tresor gespeist. Lektion: In HCL gibt es niemals Klartextgeheimnisse.

Vier kopierbare Vorlagen

1) Infrastrukturentwurf erstellen:

Schreiben Sie die folgende Infrastruktur auf [CLOUD: AWS] mit Terraform (Version ~> 1.7): [QUELLLISTE]. Region [X]. Regeln: – Machen Sie alle sensiblen Werte variabel, betten Sie sie nicht in HCL ein. – Korrigieren Sie die Anbieterversion (required_providers). – Minimieren Sie IAM-Berechtigungen, verwenden Sie kein „*“. – Geben Sie [X, Y] als Ausgabe zurück. Geben Sie Code modular und mit Erklärungen an.

2) Interpretation der Planausgabe:

Analysieren Sie die Ausgabe des „Terraform-Plans“ unten. Listen Sie mich auf: (1) welche Ressourcen hinzugefügt/geändert/GELÖSCHT wurden, (2) Zeilen, bei denen das Risiko von Datenverlust oder -unterbrechung besteht, (3) 3 Fragen, die ich vor der Bewerbung stellen sollte.Plan: [OUTPUT]

3) Untersuchen Sie die vorhandene HCL auf Sicherheit:

Überprüfen Sie den folgenden Terraform-Code auf Sicherheit: eingebettetes Geheimnis, zu weit gefasste IAM-Berechtigung, offene Netzwerkregel (0.0.0.0/0), unverschlüsselter Speicher? Schreiben Sie jeden Befund in der Reihenfolge seiner Wichtigkeit und Korrektur auf. Code: [HCL]

4) Konvertieren Sie den sich wiederholenden Code in das Modul:

Konvertieren Sie den folgenden sich wiederholenden Terraform-Code in ein wiederverwendbares Modul: Welche Werte sollten Variablen sein, was sollte die Modulschnittstelle sein? Zeigen Sie auch Anwendungsbeispiele an. Code: [HCL]

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwach: „Erstellen Sie eine Datenbank mit Terraform.“

Ergebnis: unklar, welche Cloud, welche Engine, welche Version, verschlüsselt oder nicht; Mit der Legacy-Syntax kann KI ein öffentlich verfügbares Beispiel bereitstellen, das das Passwort in den Code einbettet.

Strong: „Erstellen Sie eine RDS PostgreSQL 15-Instanz auf AWS mit Terraform ~> 1.7. Machen Sie das Passwort variabel, betten Sie es nicht in den Code ein. Der Speicher ist verschlüsselt, nur über ein privates Subnetz zugänglich, nicht öffentlich. Anbieterversion korrigieren. Endpunkt als Ausgabe zurückgeben.“

Unterschied: Die zweite Eingabeaufforderung gibt die Engine, die Version, die Verschlüsselung, die Netzwerkbeschränkung und die geheime Regel an – die Ausgabe ist sicher und nah an prod.

Häufige Fehler

  • Sich bewerben, ohne einen „Plan“ zu erstellen. Der teuerste Fehler bei IaC; Planen Sie immer zuerst.
  • Geheimnis in HCL einbetten. Erzeugt ein permanentes Leck im Git-Verlauf.
  • Speicherstatus unsicher. Ein unverschlüsselter, entsperrter öffentlicher Zustand ist eine Katastrophe.
  • Die Version wird nicht repariert. Die Verwendung eines Anbieters ohne Angabe einer Version wird in Zukunft zu plötzlichen Fehlern führen.
  • *`Aktion: Umfassende Berechtigung wie „“`.** Verstößt gegen das Prinzip der geringsten Berechtigung.
  • Unerwartetes „Zerstören“ wird ignoriert. Die Löschzeilen im Plan anwenden, ohne zu hinterfragen.

Zusammenfassend

IaC verwandelt die Infrastruktur in wiederholbaren, versionierbaren und überprüfbaren Code. Das am häufigsten verwendete Tool ist Terraform. KI erstellt schnell HCL-Stubs, Sie müssen jedoch die Version, cloudspezifische Details und Sicherheitsregeln angeben. Die unfehlbare Regel in Terraform: jede Änderung mit einem Plan zu sehen, unerwartete Löschungen abzufragen, Geheimnisse vom Code fernzuhalten und den Zustand sicher aufzubewahren. Die Zeilen zum Zerstören und Ersetzen in einer Planausgabe sind die Stellen, die am sorgfältigsten gelesen werden sollten.

Anwendungsaufgabe

Lassen Sie die KI mithilfe der obigen Vorlage „Infrastrukturskizze generieren“ eine kleine Infrastruktur (z. B. einen Speicher-Bucket und eine Zugriffsrichtlinie) generieren. Dann: (1) Lassen Sie die Vorlage „Überprüfung“ auf geheime oder *-Berechtigungen prüfen, die in den Code eingebettet sind; (2) Wenn möglich, führen Sie init + plan in einem Testkonto aus und lesen Sie die Planausgabe mit der Vorlage „Planinterpretation“; (3) Beachten Sie alle unerwarteten Löschungen/Änderungen.

Checkliste

  • [ ] Ich habe meiner Eingabeaufforderung Cloud-, Terraform-/Provider-Version und Verschlüsselungs-/Netzwerkeinschränkungen hinzugefügt.
  • [ ] Der Code enthält kein Klartextgeheimnis; Präzisionswerte variabel.
  • [ ] Ich habe IAM/Berechtigungen auf minimale Berechtigungen eingegrenzt, * ich habe es nicht verwendet.
  • [ ] Ich habe „plan“ vor „apply“ ausgeführt und die Ausgabe Zeile für Zeile gelesen.
  • [ ] Ich habe überprüft, dass der Plan keine unerwartete Zerstörung/Ersetzung vorsieht.
  • [ ] Ich bin sicher, dass der Status in einem verschlüsselten, gesperrten und eingeschränkten Backend gespeichert wird.