In this article
Infrastructure as Code in der DevSecOps-Welt
In diesem Artikel erfahren Sie mehr über Infrastructure as Code (IaC), was genau dahintersteckt und welche Auswirkungen der Einsatz von IaC in der Praxis auf die Sicherheit hat.
Was ist Infrastructure as Code?
Infrastructure as Code (IaC) bezeichnet die Bereitstellung und Verwaltung von Ressourcen in Public Clouds wie AWS, GCP und Azure mithilfe editierbarer Textdateien. Diese beschreiben, wie und wo die Konfigurationen der Infrastrukturressourcen bereitgestellt werden.
Diese Eingabeskripte werden von Infrastructure-as-Code-Tools verarbeitet, die anschließend automatisch Ressourcen erstellen, aktualisieren oder löschen. So wird sichergestellt, dass die Cloud-Infrastruktur dem in der IaC-Datei definierten Zustand entspricht. IaC-Tools verwalten die impliziten und expliziten Abhängigkeiten zwischen Cloud-Infrastrukturressourcen. Dadurch werden Ressourcen logisch erstellt, gewartet und entfernt, wobei ihre Abhängigkeiten berücksichtigt werden.
Vor der Einführung von Infrastructure as Code (IaC) wurden Ressourcen in der Regel manuell oder bestenfalls mithilfe einfacher Skripte wie Shell-Skripten oder Python bereitgestellt. Konfigurationsmanagement-Tools waren sehr effizient, wenn es darum ging, eine laufende Instanz zu konfigurieren. Bei der erstmaligen Erstellung der Instanz stießen sie jedoch an ihre Grenzen.
IaC wurde entwickelt, um diese Lücke zu schließen, die Ressourcenbereitstellung zu automatisieren und so den Einsatz von Snowflake-Servern zu vermeiden. Die Einführung deklarativer Hochsprachen zur Definition eines gewünschten Zustands und der IaC-Tools, die diese Vorgaben automatisch umsetzten, war ein großer Fortschritt für die Branche.
Infrastructure as Code (IaC) bietet zahlreiche Vorteile, darunter:
Geschwindigkeit und Standardisierung: Der gewünschte Zustand lässt sich in Skripten festhalten und exakt reproduzieren.
Versionskontrolle: Die Skripte lassen sich in Git speichern. So können Sie wie bei Anwendungscode den Verlauf Ihrer Infrastruktur nachvollziehen.
Dokumentation: Die Skripte dienen als Dokumentation und zentrale verlässliche Informationsquelle.
Effizienz: Kontinuierliche Bereitstellungen lassen sich auch auf die Bereitstellung und Verwaltung der Ressourcen selbst ausweiten.
Alle drei großen Public-Cloud-Anbieter bieten eigene IaC-Lösungen an, die jeweils nur auf ihren eigenen Plattformen funktionieren:
Amazon Web Services bietet AWS CloudFormation.
Die Plattform von Microsoft Azure heißt Azure Resource Manager.
Google Cloud Platform verwendet Google Cloud Deployment Manager.
Terraform ist die am weitesten verbreitete cloudunabhängige IaC-Software und unterstützt zahlreiche Cloud-Anbieter. Kleinere Cloud-Anbieter wie DigitalOcean und Rackspace setzen daher häufig auf Terraform statt auf ein eigenes IaC-Produkt.
Auch Anbieter automatisierter Konfigurationsmanagement-Software wie Puppet, Chef und Ansible haben ihre Funktionen erweitert und unterstützen heute teilweise das Erstellen, Aktualisieren und Löschen von Ressourcen in Public Clouds. Sie wurden jedoch nicht von Grund auf als IaC-Lösungen entwickelt.
Was ist IaC-Sicherheit?
Infrastructure-as-Code-Sicherheit (IaC-Sicherheit) bedeutet, Cloud-, Infrastruktur- und Anwendungskonfigurationen zu schützen, indem IaC-Dateien und Cloud-Bereitstellungen anhand eines kodifizierten Regelwerks auf Compliance geprüft werden.
IaC-Sicherheit kann Fehlkonfigurationen verhindern, bevor sie in produktive Cloud-Umgebungen gelangen, und so das Risiko von Datenschutzverletzungen, Ausfällen und fehlgeschlagenen Bereitstellungen senken. IaC-Skripte, die Sicherheitsprinzipien nicht einhalten, können schwerwiegende Folgen haben. Dazu gehören ungesicherte Speicher-Buckets, durch die sensible Daten offengelegt werden, oder eine versehentlich öffentlich zugängliche Instanz, die Hackern als Angriffsvektor dient.
Zu den Best Practices für IaC-Sicherheit gehören das Prinzip der geringsten Berechtigungen, die Netzwerksegmentierung, damit Ressourcen und ihre Abhängigkeiten in einem privaten Subnetz geschützt sind, sowie die Verschlüsselung von Daten während der Übertragung und im Ruhezustand.
Das Prinzip der geringsten Berechtigungen ist wichtig, um Schäden durch falsch konfigurierte Ressourcen oder böswillig veränderte Skripte zu begrenzen. Es gilt bei Infrastructure as Code (IaC) auf drei Ebenen:
Festlegen, wer die Skripte ausführen darf und wer nicht.
Die Berechtigungen autorisierter**IaC**Nutzerauf das für ihre Aufgaben notwendige Maß beschränken.
Die IaC-Skripte sollten sicherstellen, dass die verschiedenen erstellten Ressourcen nur die erforderlichen Berechtigungen erhalten, um ihre Aufgaben zu erfüllen.
Die meisten übrigen Aspekte der IaC-Sicherheit betreffen die von den Skripten erstellten Ressourcen. Eine angemessen segmentierte Netzwerkarchitektur kann beispielsweise Schäden durch interne oder externe Angriffe begrenzen. Eine Zeile mit encrypt = true in Ihren Infrastructure-as-Code-Skripten schützt ruhende Daten. Verwaltete Dienste wie AWS Certificate Manager schützen Daten während der Übertragung. Zu den weiteren Best Practices zählt die Einrichtung üblicher Schutzmaßnahmen gegen DDoS- und verbreitete HTTP-Angriffe, etwa einer Web Application Firewall.
Was bedeutet IaC in DevSecOps?
Im Zusammenhang mit Infrastructure as Code umfasst DevOps die enge Zusammenarbeit zwischen Entwicklern und DevOps-Engineers sowie den Einsatz von IaC für kontinuierliche Bereitstellungen. „DevSecOps“, auch als „Shift-Left-Ansatz“ bezeichnet, integriert Sicherheitsaspekte in DevOps. Bei IaC bedeutet DevSecOps, Sicherheit von Projektbeginn an einzubeziehen und durchgehend im Blick zu behalten. Dazu gehört auch, die passenden Tools für Ihre Workload einzusetzen und Sicherheit zu automatisieren (manchmal als Security as Code bezeichnet).

Einführung von DevSecOps: Sicherheit in die CI/CD-Pipeline integrieren
Bei DevSecOps geht es ebenso sehr um die Unternehmenskultur – insbesondere den freien Informationsfluss zwischen verschiedenen Teams – wie um Technologie. DevSecOps als Teil der DevOps-Welt, in der Kultur und Technologie zusammenkommen, setzt auf Automatisierung auf allen Ebenen. IaC ist ein grundlegender Bestandteil von DevOps, denn damit lassen sich ganze Bereitstellungen automatisieren. Bei DevSecOps mit IaC geht es darum, Best Practices für Sicherheit zu automatisieren und passende Tools für die jeweilige Workload einzusetzen, um die Sicherheit zu verbessern.
Infrastructure-as-Code-Sicherheitstools
In der Praxis gibt es nur wenige Sicherheitstools, die speziell dafür entwickelt wurden, Best Practices für Sicherheit auf der DevSecOps-IaC-Ebene umzusetzen. Sicherheitslösungen von Drittanbietern wie DataDog, Splunk, Jaeger und andere können außerhalb der IaC-Skripte eingesetzt werden. Darüber hinaus gibt es cloudnative Sicherheitsdienste, die sich über IaC-Skripte aktivieren lassen, etwa Amazon GuardDuty, Amazon Macie und Amazon Inspector.
Snyk IaC Security gehört jedoch zu den wenigen Tools, die speziell für Entwickler _und_Sicherheitsteams entwickelt wurden, um Terraform, Kubernetes, CloudFormation, Azure Resource Manager (ARM) und mehr abzusichern.

Snyk IaC schützt Ihre Konfigurationen über den gesamten Infrastrukturlebenszyklus hinweg, indem es sich nahtlos in Entwickler-Workflows integrieren lässt und Best Practices für IaC-Sicherheitsrichtlinien vom Code bis zur Cloud durchsetzt:
Best Practices für Sicherheit und Compliance etablieren: Ein kontinuierlich weiterentwickeltes, integriertes Regelwerk basiert auf Best Practices der Branche, CIS-Benchmarks und Threat-Modeling-Übungen des Snyk-Sicherheitsteams. Integrieren Sie Sicherheit und überzeugen Sie bei Code-Reviews.
Entwickler in ihrem bevorzugten Workflow arbeiten lassen: IaC kontinuierlich auf Fehlkonfigurationen prüfen – lokal über die CLI oder durch Integrationen in IDEs, Source-Code-Management-Systeme (GitHub, GitLab usw.) und Terraform Cloud. So fördern Sie die Akzeptanz bei Entwicklern und minimieren Ausfallzeiten und Ablenkungen.
Die riskantesten Probleme schneller beheben: Schweregrad und Auswirkungen von Problemen sowie strukturierte Hinweise zur Behebung werden direkt im Code hervorgehoben. So können Entwickler Probleme schnell beheben und dauerhaft sichere Konfigurationen gewährleisten.
Sicherheit für Ihr konkretes Szenario: Schreiben oder importieren Sie benutzerdefinierte Regeln in der Hochsprache Rego von Open Policy Agent und passen Sie den Schweregrad vordefinierter Regeln an.
Während des gesamten Infrastrukturlebenszyklus für Sicherheit sorgen: Erkennen Sie Infrastrukturabweichungen und nicht verwaltete Ressourcen in produktiven Cloud-Umgebungen. Melden Sie Probleme mit Informationen zur jeweiligen Ressource direkt an die zuständigen Engineers, damit sie schneller behoben und nicht verwaltete Ressourcen kontrolliert werden können.
Snyk Infrastructure as Code ist ein integraler Bestandteil der Snyk-Plattform. Die Plattform verankert und gewährleistet Best Practices für Sicherheit über den gesamten cloudnativen Anwendungs-Stack hinweg – einschließlich Open Source, Containern und Kubernetes sowie Infrastructure as Code.
Sichern Sie Ihre Infrastruktur an der Quelle
Snyk automatisiert die IaC-Sicherheit und Compliance in Workflows und erkennt abweichende sowie fehlende Ressourcen.
Fazit
Da Infrastructure as Code an der Spitze der Orchestrierungsebenen angesiedelt ist, lässt sich Sicherheit besser verwalten und leichter aufrechterhalten. Es gibt viele Lösungen, die sich über IaC aktivieren lassen, doch nur wenige ermöglichen die Umsetzung von Best Practices für Sicherheit auf IaC-Ebene. Entscheidend sind außerdem die richtigen Tools und Schulungen für Mitarbeitende, die die Zusammenarbeit zwischen Teams fördern. Setzen Sie beim Einsatz von Terraform, Kubernetes, CloudFormation, Azure Resource Manager (ARM) und weiteren Technologien Best Practices für Sicherheit in Ihrem IaC-Code um. Registrieren Sie sich kostenlos und sichern Sie Ihre Projekte mit Snyk.