Im Kontext der Anwendungssicherheit ist ein Geheimnis jede Information, die im Authentifizierungs- und Autorisierungsprozess beweist, dass der Besitzer die Person ist, die er vorgibt zu sein.  Wenn böswillige Akteure Zugriff auf Geheimnisse erhalten, erlangen sie unbeabsichtigten Zugriff auf Ihre Systeme, den sie für verschiedene Zwecke verwenden können, beispielsweise zum Stehlen von Firmengeheimnissen und Kundeninformationen oder sogar zum Erpressen von Lösegeld für Ihre Daten.

Ein klassisches Beispiel sind Benutzername und Passwort, die einer Anwendung den Zugriff auf ihre Datenbank ermöglichen. Ein Geheimnis kann aber auch aus API-Schlüsseln, Anmeldeinformationen, Zertifikaten und privaten Schlüsseln sowie anderen Arten von Informationen bestehen. Da Geheimnisse zur Kontrolle des Zugriffs auf die Vermögenswerte einer Organisation verwendet werden, ist deren sichere Speicherung und Schutz von entscheidender Bedeutung, um das Risiko einer Kompromittierung der Organisation zu verringern.

Was ist Geheimnisverwaltung?

Unter Geheimnisverwaltung versteht man den Prozess, den eine Organisation für folgende Zwecke nutzt:

  • Identifizieren sensibler Daten
  • Klassifizieren der Daten
  • Beschriften Sie die Daten
  • Sichere Speicherung der Daten
  • Verteilen von Geheimnissen
  • Regelmäßiges Rotieren (Ersetzen) von Geheimnissen

Wenn Unternehmen von monolithischen zu Microservices-Architekturen wechseln , erhöht sich die Anzahl unabhängiger Anwendungs- und Infrastrukturkomponenten – jede mit ihren eigenen Anmeldeinformationen –, was bedeutet, dass viel mehr Geheimnisse verwaltet werden müssen.

Möglichkeiten zum Speichern von Geheimnissen

Schauen wir uns zwei Möglichkeiten zur sicheren Speicherung von Geheimnissen genauer an:

Gewölbe

Der Vault-Ansatz beinhaltet die Installation eines Drittanbieter-Tools zur Geheimnisverwaltung. Die Tresorlösung verschlüsselt jedes Geheimnis, um den Zugriff durch unbefugte Benutzer zu verhindern. Der Tresor stellt eine API bereit, um Benutzern auf der Grundlage etablierter Richtlinien Zugriff auf Geheimnisse zu gewähren. Wenn sich Benutzer der API damit authentifizieren, können sie nur auf die Geheimnisse zugreifen, für die sie autorisiert wurden.

Nachteile:

  • Sie müssen die Lösung und die Anmeldeinformationen selbst verwalten
  • Erfordert den Aufbau einer Infrastruktur, da es sonst für Teams schwierig ist, unabhängig voneinander zu arbeiten

Vorteile:

  • Branchenkenntnis (die meisten Entwickler wissen, wie man solche Tools verwendet)
  • Lässt sich problemlos in andere Tools des Tresoranbieters integrieren
  • Einige Tresore sind kostenlos verfügbar

Auf dem Markt stehen Entwicklern zahlreiche Tools zum Speichern und Verwalten verschlüsselter Geheimnisse zur Verfügung. Ein Beispiel für die Verwendung eines zentral automatisierten Tools zur Geheimnisverwaltung finden Sie in unserem Blog „ Schützen von SSL-Privatschlüsseln in NGINX mit HashiCorp Vault “.

Cloud-Anbieter

Ein anderer Ansatz besteht darin, einen Cloud-Anbieter für die Geheimnisverwaltung als Service zu nutzen. Ein Vorteil besteht darin, dass sich das Tool zur Geheimnisverwaltung normalerweise eng in andere Cloud-Dienste wie verwaltete Datenbanken integrieren lässt.  Die Dienste von Cloud-Anbietern bieten möglicherweise auch Funktionen wie die automatische Rotation an. Es bedarf jedoch künftiger Untersuchungen, um festzustellen, ob diese Option zu Ausfallzeiten führt.

Nachteil:

  • Normalerweise nicht kostenlos

Vorteile:

  • Zugriff und Benutzeroberfläche werden vom Cloud-Anbieter eingerichtet und verwaltet
  • Lässt sich gut in die Dienste anderer Cloud-Anbieter integrieren
  • Kann mit einem Infrastructure-as-Code-Tool verwaltet werden
Wo man Geheimnisse nicht aufbewahren sollte

Geheimnisse müssen sorgfältig verwaltet werden, um Störungen der Anwendung zu vermeiden, wenn sie entsperrt und abgerufen werden. Eine bewährte Methode besteht darin, niemals Geheimnisse in ein Quellcodeverwaltungssystem einzuchecken. Das Speichern von Geheimnissen dort setzt eine Organisation einem möglichen Desaster aus, wenn Geheimnisse versehentlich abgerufen oder kompromittiert werden, wenn ein Team oder eine Einzelperson den Code oder die Anwendung aktualisiert. Aus diesem Grund muss ein geheimer Schlüssel, der jemals, auch nur kurz, in die Quellcodeverwaltung eingecheckt wird, als kompromittiert behandelt werden. Die vertraulichen Daten müssen aus dem Repository entfernt und aus dem Verlauf des Quellcodeverwaltungssystems gelöscht werden.