Dienstkontoschlüssel schützen

Im Gegensatz zu normalen Nutzern haben Dienstkonten keine Passwörter. Stattdessen verwenden Dienstkonten ECDSA-Schlüsselpaare zur Authentifizierung. Mit dem privaten Schlüssel des RSA-Schlüsselpaars können Sie sich als Dienstkonto authentifizieren. Der Zugriff auf den privaten Schlüssel ähnelt in etwa dem Passwort eines Nutzers. Der private Schlüssel wird als Dienstkontoschlüssel bezeichnet. Dienstkontoschlüssel stellen ein Sicherheitsrisiko dar, wenn sie nicht sorgfältig verwaltet werden.

Die Hauptbedrohungen, die durch Dienstkontoschlüssel entstehen, sind:

  • Datenleck: Dienstkontoschlüssel können versehentlich an Orten vorhanden sein, an denen sie nicht gespeichert werden sollen. Ein böswilliger Akteur kann einen gehackten Dienstkontoschlüssel verwenden, um sich zu authentifizieren und Zugriff auf Ihre Umgebung zu erhalten.

  • Eskalation von Berechtigungen: Wenn ein böswilliger Akteur Zugriff auf einen schlecht gesicherten Dienstkontoschlüssel erhält, kann er mit dem Schlüssel möglicherweise seine Berechtigungen eskalieren.

  • Offenlegung von Informationen: Dienstkontoschlüssel können unbeabsichtigt vertrauliche Daten offenlegen.

  • Keine Nachvollziehbarkeit: Durch die Authentifizierung mit einem Dienstkontoschlüssel und die Möglichkeit, dass das Dienstkonto Vorgänge in seinem Namen ausführt, kann ein böswilliger Akteur seine Identität und seine Aktionen verbergen.

Auf dieser Seite finden Sie Best Practices für die Verwaltung, Verwendung und Sicherung von Dienstkontoschlüsseln.

Schutz vor Anmeldedatenlecks

Wie Nutzername und Passwort sind Dienstkontoschlüssel eine Form von Anmeldedaten. Wenn ein Nutzer Zugriff auf einen gültigen Dienstkontoschlüssel hat, kann er ihn zum Authentifizieren und Zugreifen auf die Ressourcen verwenden, auf die das jeweilige Dienstkonto Zugriff hat.

Böswillige Akteure finden Dienstkontoschlüssel möglicherweise wertvoller als ein gehacktes Passwort. Der Versuch, sich mit einem gehackten Passwort anzumelden, ist selten erfolgreich, wenn das Nutzerkonto mit einer Bestätigung in zwei Schritten und Identitätsbestätigungen konfiguriert wurde. Im Gegensatz dazu ist die Authentifizierung mithilfe eines gehackten Dienstkontoschlüssels wahrscheinlich erfolgreich, da Dienstkonten keiner zusätzlichen Anmeldungsüberprüfung unterliegen.

Böswillige Akteure können auf folgende Weise nach Dienstkontoschlüsseln suchen:

  • Quellcode-Repositories von Open-Source-Projekten.
  • Öffentliche Datendumps beschädigter Dienste.

Neben öffentlichen Standorten können böswillige Nutzer nach Dienstkontoschlüsseln an privaten Standorten suchen, die sie gehackt haben. Hier einige Beispiele:

  • E-Mail-Posteingänge
  • Dateifreigaben
  • Sicherungsspeicher
  • Temporäre Dateisystemverzeichnisse

Eine effektive Möglichkeit, das Risiko von Datenlecks bei Dienstkontoschlüsseln zu verringern, besteht darin, die Anzahl der Schlüssel im Umlauf zu verringern und die Erstellung neuer Schlüssel zu behindern. In den folgenden Abschnitten wird beschrieben, wie Sie die Anzahl der Dienstkontoschlüssel im Umlauf begrenzen und welche anderen Maßnahmen Sie dabei unterstützen können, Datenlecks von Dienstkonten zu verringern.

Keine Dienstkontoschlüssel an temporären Speicherorten belassen

Wenn Sie einen Dienstkontoschlüssel erstellen, sollten Sie ihn sofort an den Speicherort verschieben, an dem Sie ihn speichern möchten. Achten Sie darauf, nicht versehentlich eine Kopie im Downloadordner oder im Papierkorb zu belassen.

Keine Dienstkontoschlüssel zwischen Nutzern weitergeben

Wenn Sie eine Anwendung bereitstellen, für die ein Dienstkontoschlüssel erforderlich ist, sind Sie möglicherweise nicht berechtigt, einen Dienstkontoschlüssel selbst zu erstellen. Stattdessen müssen Sie möglicherweise eine andere Person bitten, einen Dienstkontoschlüssel für Sie zu erstellen.

Keine Dienstkontoschlüssel an Quellcode-Repositories senden

Dienstkontoschlüssel sind Anmeldedaten, die vor unbefugtem Zugriff geschützt werden müssen. Wenn Sie einen Dienstkontoschlüssel an ein Quellcode-Repository senden, besteht ein erhöhtes Risiko, dass der Schlüssel für nicht autorisierte Nutzer und böswillige Akteure zugänglich ist:

  • Böswillige Akteure scannen den Quellcode von öffentlichen Quell-Repositories möglicherweise nach gehackten Schlüsseln.

  • Sie entscheiden zu einem späteren Zeitpunkt, ein ehemals privates Quell-Repository in ein öffentliches Repository umzuwandeln und prüfen es dann nicht mehr auf Schlüssel.

  • Andere Teammitglieder speichern Kopien des Quellcodes auf ihrer Workstation.

Wenn Sie an Code arbeiten, der einen Dienstkontoschlüssel verwendet, speichern Sie den Dienstkontoschlüssel immer getrennt vom Quellcode, um das Risiko zu verringern, versehentlich den Schlüssel an das Quell-Repository zu senden. In vielen Fällen können Sie dieses Risiko weiter reduzieren, indem Sie während der Entwicklung überhaupt keine Dienstkontoschlüssel verwenden und stattdessen Ihre persönlichen Anmeldedaten verwenden.

Keine Dienstkontoschlüssel in Programmbinärdateien einbetten

Dienstkontoschlüssel sind Strings, die einem bestimmten Muster entsprechen und auch dann identifiziert werden können, wenn sie in andere Dateien oder Binärdateien eingebettet sind. Wenn ein böswilliger Akteur Zugriff auf die Binärdatei hat, kann er alle in die Binärdatei eingebetteten Dienstkontoschlüssel extrahieren.

Programmbinärdateien für serverseitige Anwendungen können in Artefakt-Repositories gehostet oder zu Debugging-Zwecken in Entwickler-Workstations kopiert werden. Sie sollten Dienstkontoschlüssel von Programmbinärdateien trennen und so sicherstellen, dass ein Nutzer, der auf die Binärdatei zugreifen kann, nicht implizit auf die Anmeldedaten des Dienstkontos zugreift.

  • Verwenden Sie für clientseitige Anwendungen wie Tools, Desktop-Programme oder mobile Apps keine Dienstkonten.
  • Betten Sie bei serverseitigen Anwendungen keine Dienstkontoschlüssel in die Binärdatei ein. Halten Sie stattdessen die Schlüssel von der Binärdatei der Anwendung getrennt.

Dienstkontoschlüssel rotieren, um das Sicherheitsrisiko durch gehackte Schlüssel zu reduzieren

Sie können zwar die Wahrscheinlichkeit verringern, dass ein Dienstkontoschlüssel versehentlich gehackt wird, aber das Risiko kann nur schwer ganz beseitigt werden.

Die Schlüsselrotation ist der Prozess, bei dem Ihre vorhandenen Schlüssel durch neue Schlüssel ersetzt und dann die ersetzten Schlüssel ungültig werden. Wir empfehlen, regelmäßig alle von Ihnen verwalteten Schlüssel zu rotieren, einschließlich der Dienstkontoschlüssel.

Durch die Rotation von Dienstkontoschlüsseln kann das Risiko von gehackten oder gestohlenen Schlüsseln verringert werden. Wenn ein Schlüssel versehentlich gehackt wurde, kann es den böswilligen Akteuren Tage oder Wochen dauern, bis er den Schlüssel erkennt. Wenn Sie Ihre Dienstkontoschlüssel regelmäßig rotieren, ist die Wahrscheinlichkeit höher, dass die gehackten Schlüssel ungültig sind, bis ein böswilliger Akteur sie erhält.

Ablaufzeiten verwenden, damit Schlüssel automatisch ablaufen

Standardmäßig haben Dienstkontoschlüssel, die Sie erstellen, eine Ablaufzeit von einem Jahr und bleiben gültig, bis Sie sie löschen. Sie können auch ein eigenes Ablaufdatum festlegen. Wenn Sie eine Ablaufzeit für Dienstkontoschlüssel festlegen, können Sie Ihr Sicherheitsrisiko begrenzen, da die Lebensdauer der nichtflüchtigen Anmeldedaten verkürzt wird. Das Festlegen von Ablaufzeiten birgt jedoch auch andere Risiken. Wenn beispielsweise eine Ablaufzeit festgelegt wird, können Arbeitslasten fehlschlagen, wenn ihre Schlüssel ablaufen.

Verwenden Sie Ablaufzeiten, wenn Sie vorübergehend auf ein System zugreifen müssen, das einen Dienstkontoschlüssel erfordert. Verwenden Sie beispielsweise Ablaufzeiten in den folgenden Fällen:

  • Sie entwickeln Code in einer Nicht-Produktionsumgebung für eine Anwendung, die sich nur mit Dienstkontoschlüsseln authentifizieren kann.
  • Sie verwenden ein Drittanbietertool, das nur mit Dienstkontoschlüsseln authentifiziert werden kann.

Vermeiden Sie in diesen Szenarien Ablaufzeiten:

  • Produktionsarbeitslasten: In der Produktion kann ein abgelaufener Dienstkontoschlüssel einen versehentlichen Ausfall verursachen. Verwenden Sie stattdessen Schlüssel, die nicht ablaufen, und verwalten Sie ihren Lebenszyklus mit Schlüsselrotation.
  • Nicht-Produktionsarbeitslasten, die dauerhaften Zugriff benötigen, z. B. eine CI-Pipeline (Continuous Integration).
  • Schlüsselrotationssysteme, die verhindern, dass ein Schlüssel nach einer bestimmten Zeit verwendet wird.

Wenn Sie die Gültigkeit von Dienstkontoschlüsseln begrenzen möchten, können Sie eine Ablaufzeit für neu erstellte Schlüssel in Ihrem Projekt, Ordner oder Ihrer Organisation konfigurieren. Die Ablaufzeit gilt nicht für vorhandene Schlüssel.

Mit einem etablierten Prozess zur Rotation von Dienstkontoschlüsseln können Sie schnell reagieren, wenn Sie vermuten, dass ein Dienstkontoschlüssel manipuliert wurde.

Für jeden Computer, der eine Anwendung ausführt, einen eigenen Schlüssel verwenden

Erstellen Sie für jede Kopie der Anwendung individuelle Schlüssel, um die potenziellen Quellen verdächtiger Aktivitäten einzugrenzen. So können Sie das Feld serviceAccountKeyName verwenden, das viele Dienste zu Audit-Logeinträgen hinzufügen, um zu unterscheiden, von welchem Computer eine Aktivität stammt.