Was ist ein Secret?

Im Zusammenhang mit der Anwendungssicherheit ist ein Secret jede Information, die beweist, dass der Besitzer derjenige ist, der er während des Authentifizierungs- und Autorisierungsprozesses zu sein vorgibt. Wenn böswillige Akteure Zugriff auf Secrets erhalten, verschaffen sie sich unerwünschten Zugriff auf ihre Systeme, den sie für verschiedene Zwecke nutzen können, einschließlich des Diebstahls von Unternehmensgeheimnissen und Kundeninformationen oder sogar einer Erpressung mithilfe Ihrer Daten.

Ein klassisches Beispiel sind der Benutzername und das Passwort, mit denen eine Anwendung auf ihre Datenbank zugreifen kann, aber ein Secret kann auch aus API-Schlüsseln, Anmeldeinformationen, Zertifikaten und privaten Schlüsseln sowie anderen Arten von Informationen bestehen. Da Secrets zur Kontrolle des Zugriffs auf Vermögenswerte von Organisationen verwendet werden, sind ihre sichere Speicherung und ihr Schutz von entscheidender Bedeutung, um das Risiko einer Gefährdung der Organisation zu verringern.

Was ist die Secret-Verwaltung?

Die Secret-Verwaltung ist der Prozess, den eine Organisation anwendet, um:

  • Sensible Daten zu identifizieren
  • Daten zu klassifizieren
  • Daten zu bezeichnen
  • Daten sicher zu speichern
  • Secrets zu verteilen
  • Secrets regelmäßig zu rotieren (auszutauschen)

Wenn Organisationen von monolithischen zu Microservices-Architekturen wechseln, steigt die Anzahl unabhängiger Anwendungs- und Infrastrukturkomponenten, jede mit ihren eigenen Anmeldeinformationen, was bedeutet, dass es viel mehr Secrets zu verwalten gibt.

Wege, Secrets zu speichern

Schauen wir uns zwei Optionen für die sichere Speicherung von Secrets genauer an:

Tresor

Bei der Tresorlösung wird ein Drittanbieter-Tool zur Verwaltung von Secrets installiert. Die Tresorlösung verschlüsselt jedes Secret, um zu verhindern, dass unberechtigte Benutzer darauf zugreifen. Der Tresor stellt eine API zur Verfügung, über die Benutzer auf der Grundlage festgelegter Richtlinien auf Secrets zugreifen können. Wenn sich Benutzer der API damit authentifizieren, können sie nur auf die Secrets zugreifen, für die sie autorisiert wurden.

Nachteile:

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

Vorteile:

  • Vertrautheit mit der Branche (die meisten Entwickler wissen, wie man solche Tools benutzt)
  • Einfache Integration mit anderen vom Tresorhersteller bereitgestellten Tools
  • Einige Tresore sind kostenlos erhältlich

Es gibt zahlreiche Tools auf dem Markt, mit denen Entwickler verschlüsselte Secrets speichern und verwalten können. Ein Beispiel für die Verwendung eines zentral automatisierten Tools zur Verwaltung von Secrets finden Sie in unserem Blog „Protecting SSL Private Keys in NGINX with HashiCorp Vault“ (Schutz von privaten SSL-Schlüsseln in NGINX mit HashiCorp Vault).

Cloud-Anbieter

Ein weiterer Ansatz ist die Nutzung eines Cloud-Anbieters für die Verwaltung von Secrets als Dienst. Ein Vorteil ist, dass das Tool zur Verwaltung von Secrets in der Regel eng mit anderen Cloud-Diensten wie verwalteten Datenbanken integriert ist. Cloud-Anbieter können auch Funktionen wie die automatische Rotation anbieten, wobei noch zu untersuchen ist, ob diese Option zu Ausfallzeiten führt.

Nachteil:

  • In der Regel nicht kostenlos

Vorteile:

  • Zugriff und Benutzeroberfläche werden vom Cloud-Anbieter eingerichtet und verwaltet
  • Gut integrierbar mit anderen Cloud-Anbieter-Diensten
  • Kann mit einem Infrastructure-as-code-Tool verwaltet werden
Wo man keine Secrets speichern sollte

Secrets müssen sorgfältig verwaltet werden, um Störungen der Anwendung zu verhindern, wenn sie entsperrt und darauf zugegriffen wird. Eine bewährte Praxis ist es, Secrets niemals in ein Versionskontrollsystem einzuchecken. Das Speichern von Secrets in einem Versionskontrollsystem kann Organisationen für eine potentielle Katastrophe anfällig machen, wenn ein Team oder ein Einzelner bei der Aktualisierung des Codes oder der Anwendung versehentlich auf Secrets zugreift oder diese kompromittiert. Aus diesem Grund muss ein Secret, das jemals in die Versionskontrolle eingecheckt wird, wenn auch nur für kurze Zeit, als kompromittiert behandelt werden. Die sensiblen Daten müssen aus dem Repository entfernt und aus dem Verlauf des Versionskontrollsystems gelöscht werden.