Grundlagen der Azure-Bicep-Sicherheit
Mark Johnson
13. Dezember 2022
0 Min. LesezeitDieser Beitrag wurde von Snyk Ambassador Mark Johnson (@tazmainiandevil) verfasst. Erhalten Sie exklusiven Zugang zu Snyk, indem Sie sich als Snyk Ambassador anmelden.
Azure Bicep wird immer beliebter und entwickelt sich rasch zum Nachfolger von Azure Resource Manager (ARM)-Vorlagen. In diesem Beitrag gehe ich auf einige grundlegende Sicherheitsaspekte bei der Verwendung von Bicep ein. Wenn Sie Bicep noch nicht kennen, empfehle ich Ihnen, einen Blick in die Dokumentation zu Microsoft Learn zu werfen, um mehr zu erfahren.
Halten Sie Secrets aus der Versionsverwaltung heraus
Wir alle wissen, dass Secrets nicht in die Versionsverwaltung gehören. Trotzdem können sie leicht versehentlich in Dateien landen – insbesondere, wenn Sie Ihre Bicep-Konfigurationen lokal testen.
So vermeiden Sie, Secrets mitzucommitten:
Übergeben Sie Parameter über die Befehlszeile.
Verwenden Sie eine JSON-Parameterdatei, die von der Versionsverwaltung ignoriert wird. Fügen Sie die Datei beispielsweise zu Ihrer
.gitignore-Datei hinzu, wenn Sie Git verwenden.
Eingaben schützen
Parameter von außen zu übergeben ist das eine. Doch wie stellen Sie sicher, dass Secrets geschützt sind und nicht in Ausgaben erscheinen? Bicep stellt für Parameter vom Typ String und Object den Decorator @secure bereit. Zum Beispiel:
Vorsicht bei Ausgaben
Ausgaben zu Ihren Bicep-Modulen hinzuzufügen, ist sehr nützlich. Dabei gibt es jedoch einiges zu beachten. Wenn Sie eine Ausgabe festlegen, die wie ein Secret aussieht, weist Bicep Sie mit einer Warnung darauf hin, dass Sie möglicherweise Secrets offenlegen. Die folgende Ausgabe für eine Verbindungszeichenfolge zu einem Speicherkonto würde eine solche Warnung auslösen:
Wenn der Wert jedoch zunächst einer Variable zugewiesen und erst danach als Ausgabe festgelegt wird, erscheint keine Warnung – das Problem kann dann leicht übersehen werden.
Sehen wir uns nun an, was passiert, wenn eine Speicherkontoressource mit der folgenden Konfiguration in Azure bereitgestellt wird:
Alle in Bicep definierten Ausgaben finden Sie unter Bereitstellungen für die Ressourcengruppe, in der die Ressourcen bereitgestellt wurden:

Bei den Ausgaben von StorageDeploy sehen wir, dass die Verbindungszeichenfolge den Kontoschlüssel im Klartext enthält:

Das bedeutet, dass jede Person mit Zugriff auf die Ressourcen im Azure-Portal diese Ausgaben sehen kann. Um eine gute Sicherheitslage zu gewährleisten, sollten Sie in Bicep keine Secrets als Ausgaben zurückgeben.
Hoffentlich unterstützt Bicep künftig den Decorator @secure für Ausgaben, damit Secrets sicher zurückgegeben werden können.
Secrets aus Ressourcen
Wenn es problematisch ist, Secrets aus Bicep zurückzugeben, wie lassen sich Secrets dann von einem Modul an ein anderes übergeben? Eine Möglichkeit besteht darin, mit dem Schlüsselwort existing auf eine vorhandene Ressource zuzugreifen. Zum Beispiel:
Diese Verbindungszeichenfolge kann dann als Eingabe für eine andere Ressource verwendet werden.
Secrets aus Key Vault
Vorhandene Ressourcen abzurufen, ist eine Möglichkeit, an Secrets zu gelangen. Es gibt aber auch Unterstützung dafür, Secrets aus einem Key Vault abzurufen.
Hinweis: Stellen Sie sicher, dass die Key-Vault-Zugriffskonfiguration den Zugriff über „Azure Resource Manager für die Vorlagenbereitstellung“ zulässt.

Der Zugriff auf Key Vaults erfolgt wie im vorherigen Abschnitt über das Schlüsselwort existing. Beachten Sie jedoch, dass die Methode getSecret nur verwendet werden kann, wenn Sie einem Modulparameter mit dem Decorator @secure einen Wert zuweisen:
Bicep auf Sicherheitsprobleme scannen
Das Scannen von Infrastructure as Code (IaC) wird immer beliebter. Es ist erfreulich, dass Sicherheitsprobleme möglichst früh erkannt werden sollen. Snyk bietet eine kostenlose CLI, mit der Sie lokal IaC-Scans durchführen und Ihre Konfigurationen anhand von Sicherheits- und Compliance-Standards prüfen können. Bicep wird zwar nicht direkt unterstützt, aber ARM-Vorlagen, in die Bicep kompiliert wird, lassen sich scannen.
Um Bicep in ARM zu kompilieren, müssen Sie die Bicep-CLI installieren. Für den Einstieg mit der Snyk CLI erstellen Sie ein kostenloses Konto und installieren anschließend die Snyk CLI mit npm. Wenn Node.js lokal installiert ist, können Sie die CLI mit folgendem Befehl installieren:
Nach der Installation und Einrichtung können Sie folgenden Befehl ausführen:
Dadurch wird eine JSON-Datei mit demselben Namen wie die Bicep-Datei erstellt. Anschließend können Sie den Snyk-Scan mit folgendem Befehl ausführen:
Abschließende Gedanken
Sicherheit müssen wir alle berücksichtigen. Auch wenn sie sich ständig verändert, können wir mit zunehmendem Wissen mehr tun, um unsere Ressourcen zu schützen. Ich hoffe, dieser Beitrag war informativ und hat Ihnen einige Einblicke gegeben, wie Sie Ihre Bicep-Konfigurationen absichern können.
IaC-Sicherheit für Entwickler
Snyk schützt Ihre Infrastructure as Code vom SDLC bis zur Laufzeit in der Cloud mit einer einheitlichen Policy-as-Code-Engine, damit jedes Team sicher entwickeln, bereitstellen und betreiben kann.



