Blog

Rotierende Geheimnisse mit Serverless

Andrew Stump

Aktualisiert Oktober 15, 2025
5 Minuten

Die Rotation von Geheimnissen ist ein entscheidendes Element Ihrer Sicherheitslage, das, wenn es manuell durchgeführt wird, oft übersehen wird, da es ein immer mühsamerer und komplexerer Prozess ist, je mehr das Unternehmen und die Geheimnisse wachsen. Sicherheitsverletzungen durch den Zugriff auf Geheimnisse sind schwer zu erkennen, da sich der Hacker auf legitime Weise Zugang verschafft hat, und sie können monatelang andauern, wenn das Geheimnis nicht rotiert wird. Um eine manuelle Rotation durchzuführen, müssen die Entwickler im Auge behalten, wann die Geheimnisse rotiert werden müssen, den Prozess der Rotation durchführen und die Anwendung entsprechend aktualisieren. Oft müssen Teams alle paar Monate Rotationsereignisse planen, bei denen sie eine Liste von Geheimnissen durchgehen und jedes einzelne manuell rotieren müssen. Das ist zeitaufwändig, mühsam und anfällig für menschliche Fehler, sei es, dass Geheimnisse falsch rotiert werden oder dass man vergisst, sie überhaupt zur Liste hinzuzufügen. In diesem Artikel zeigen wir Ihnen, wie Sie die Rotation der Geheimnisse mit Hilfe eines serverlosen Ansatzes automatisieren können, so dass Sie nie wieder einen dieser mühsamen Vorgänge ertragen müssen!

In diesem Artikel verwende ich das Beispiel der Rotation der Schlüssel für ein AWS IAM-Service-Konto und deren Aktualisierung in einem GitLab. Bitte haben Sie Verständnis dafür, dass dies ein sehr Vorlage. Einzelne Teile können ausgetauscht und ersetzt werden, abhängig von Ihrem aktuellen Stack und davon, wo Ihre Geheimnisse gespeichert sind. In Ihrer Situation möchten Sie vielleicht einen API-Schlüssel oder ein Passwort austauschen und in einer Datenbank oder einer VM aktualisieren. Wie auch immer die Situation aussieht, die Teile können variieren, aber das Konzept ist vom Standpunkt der Dienstlosigkeit aus gesehen das gleiche. Dieser Artikel soll nur einen groben Überblick über die Funktionsweise des Prozesses geben. Eine ausführliche und technische Erklärung der Implementierung finden Sie unter hier. In diesem Sinne, lassen Sie uns beginnen!

Übersicht

Das grundlegende Konzept dieses Prozesses basiert auf 3 Kernbestandteilen:

  1. Eine Funktion zur Durchführung der Drehung
  2. Ein Auslöser als Teil des Dienstes, der die Rotation erfordert
  3. Aufbewahrung für das Geheimnis

In unserem Beispiel hat die Funktion einen zusätzlichen Schritt, der aufgrund der Art und Weise, wie unser Dienst strukturiert ist, erforderlich ist. Der Auslöser für jeden Dienst übergibt den Namen des IAM-Benutzers, dessen Schlüssel rotiert werden, und die Geheimnisse werden in den GitLab-Projektvariablen gespeichert. Die Plattform in diesem Diagramm steht lediglich für die Plattform, auf die Sie mit dem Geheimnis zugreifen wollen. In unserem Fall wäre das AWS. Ich verwende dies als Beispiel, da ich selbst damit gearbeitet habe. Es gibt sicherlich bessere Möglichkeiten, die Berechtigungen für Servicekonten und Schlüssel zu verwalten und sie in Ihre Anwendung einzubinden, aber dieser Ansatz bietet eine einfache und verständliche Methode für das, was wir erreichen wollen. Außerdem bietet er die Möglichkeit zu zeigen, wie die Kernmethode modifiziert werden kann (indem die Bereitstellung hinzugefügt wird), um einen ganzheitlicheren Ansatz für die Geheimnisrotation zu bieten.

So rotieren Sie Ihr Geheimnis

Das erste, was wir definieren müssen, ist: Wie drehe ich mein gewünschtes Geheimnis? In unserem Beispiel verwenden wir die IAM-Benutzeranmeldeinformationen. Wenn wir diese Rotation manuell durchführen würden, müssten wir diesen Benutzer in der Konsole finden, neue Anmeldedaten für ihn erstellen und dann diese neuen Anmeldedaten verwenden, um die entsprechenden Variablen in unserem GitLab-Projekt zu aktualisieren. Nach der Aktualisierung würden wir unseren Dienst mit den neuen Werten erneut bereitstellen. Und schließlich können wir nach der Bereitstellung den alten Schlüssel des Benutzers entfernen, damit er nicht mehr im Umlauf ist.

Um dies in unsere serverlose Funktion zu übersetzen, müssen wir diesen Prozess per Code durchführen. Für technische Details werfen Sie bitte noch einmal einen Blick auf hier , Für den Umfang dieses Artikels genügt es jedoch zu sagen, dass der Code in Python geschrieben wurde und die boto3 für die AWS IAM-Elemente und python-gitlab für die GitLab-Elemente. Bitte beachten Sie auch, dass Ihre Lambda-Funktion über die richtigen Berechtigungen verfügen muss, um Änderungen an IAM-Schlüsseln vorzunehmen, sowie über eine GitLab-Zugangs-Token injiziert, so dass es die Möglichkeit hat, dort Variablen zu aktualisieren.

Auslösen der Funktion

Wenn man die Funktion in logische Schritte aufteilt, ist sie einfach zu erstellen und zu verstehen. Wir müssen jedoch in der Lage sein, sie zum richtigen Zeitpunkt für jedes unserer Servicekonten auszulösen, also wie erreichen wir das?

Bisher haben wir eine eigenständige "Credential-Rotator"-Funktion erstellt, die eine Rotation durchführt. Auf der Seite unseres gewünschten Dienstes müssen wir jedoch eine Funktionalität und Infrastruktur hinzufügen, die die Funktion mit genügend Informationen auslöst, um das richtige Dienstkonto anzuvisieren. Zu diesem Zweck erstellen wir einfach eine Cloudwatch-Ereignis-Regel. Die Regel läuft nach einem Zeitplan und löst den Lambda mit einem Ereignis aus, das den Namen des Benutzers, der rotiert wird, und die GitLab-Projekt-ID, in der die Variablen aktualisiert werden müssen, enthält. Gemäß den AWS-Best-Practices sollten die Schlüssel alle 90 Tage oder weniger ausgetauscht werden, so dass wir dies als Zeitplan festlegen können. Wir können diesen Vorgang dann für jeden IAM-Benutzer wiederholen, den wir rotieren möchten, und so ein System schaffen, bei dem die Funktion zum Rotieren eines Schlüssels automatisch ausgelöst wird, wenn sein Ablaufdatum erreicht ist, und den Service mit den neuen Schlüsseln bereitstellen.

Das mag entmutigend erscheinen, aber wenn Sie eine Form von IaC für die Bereitstellung Ihres Codes verwenden (was Sie tun sollten!), können Sie ein "Servicekonto"-Modul erstellen, das diese Cloudwatch-Ereignisregel zusammen mit der IAM-Benutzerinfrastruktur verpackt, so dass sie bei der Erstellung neuer Dienste oder bei der Aktualisierung von Diensten ohne automatische Rotation einfach einbezogen werden kann.

Zusammenfassung

Ich habe es schon ein paar Mal erwähnt, aber es ist wichtig, also erwähne ich es noch einmal. Der Schlüssel liegt darin, sich nicht in den Details dieses speziellen Beispiels zu verzetteln und stattdessen einen Überblick über die Funktionsweise des Prozesses zu gewinnen, damit Sie ihn an Ihre speziellen Bedürfnisse anpassen können. Anstelle von GitLab und AWS IAM können Sie genauso gut API-Schlüssel in einer Datenbank aktualisieren, die von Containern in GKE verwendet werden sollen, oder Terraform Vault-Geheimnisse aktualisieren, die in zukünftigen Bereitstellungen verwendet werden sollen. Was auch immer Sie tun, wenn Sie Geheimnisse haben, die rotieren, können Sie dies automatisch tun.

Verfasst von

Andrew Stump

Contact

Let’s discuss how we can support your journey.