4 Minuten Lesezeit (846 Worte)

Password expired: Sensitive Werte aus Hashicorp Vault in NiFi synchronisieren

Ab der NiFi Version 1.18.0 ist eine Anbindung externer Parameter Provider wie die Hashicorp Vault KV-Secret Engine als „Secret Store“ möglich. Damit können sensitive Informationen automatisch vom Vault (Englisch für Tresor) in NiFi synchronisiert werden. Dieses Feature ermöglicht eine verbesserte Zugangskontrolle der Datenbank, die von den NiFi-Prozessoren genutzt wird. Ein sicheres Management von sensitiven Werten wie beispielsweise Passwörter oder API-Keys in NiFi wird so unterstützt. 

Wer, Wie, Was: Was ist Vault?

Seit der NiFi Version 1.18 ist eine Anbindung externer Parameter Provider möglich. Hiermit verwirklicht NiFi ein lang ersehntes und nützliches Feature. Insgesamt gibt es vier mögliche Systeme. In diesem Artikel gehen wir auf Hashicorp Vault ein. Lassen Sie uns aber zunächst klären, was ein Vault überhaupt ist. 

In Kurzform: Hashicorp Vault ist ein pfad- und tokenbasiertes Secret Managementsystem, zur Speicherung von sensiblen bzw. geheimen Daten. Es bietet eine sichere Plattform inklusive einer Zugangskontrolle zur Verwaltung von Zugangsdaten. Über Tokens wird in Vault sichergestellt, dass die zugreifende Person auch tatsächlich berechtigt ist, auf den Pfad in Vault zuzugreifen. Wir haben bereits einen Artikel zu Vaulveröffentlicht. Dort werden die Grundlagen des Vault sehr gut erklärt.  

Wieso, Weshalb, Warum: Warum brauche ich einen Vault?

Der größte Vorteil von einem zentralen Secret Store ist, dass Berechtigungen (Credentials) zentral gespeichert werden können. Eigene Passwortlisten oder Ähnliches können sehr leicht ein Sicherheitsrisiko darstellen und sollten deshalb vermieden werden. Vault stellt für das Managen solcher Informationen eine zentrale Plattform bereit. 

Ein weiterer Vorteil von Vault ist die Authentifizierung von Anwendern. Mithilfe von Regeln (Policies) können Rechte so beschränkt werden, dass nur Personen, die auch autorisiert sind, die entsprechenden Informationen sehen können. Eine Datenbank, welche mit Vault abgesichert ist, kann so auch mit NiFi bearbeitet werden. Unerlaubter Zugriff bleibt trotzdem nicht möglich. 

Wer nicht fragt bleibt dumm: Wie konfiguriere ich einen Vault?

Exemplarisch verwenden wir in diesem Blog Vault für die Berechtigungsverwaltung einer Datenbank. Um NiFi an Vault anbinden zu können, muss zunächst die dafür benötige Key-Value Secret Engine des Vaults aktiviert werden. Hierbei ist zu beachten, dass die KV-API Version 1 genutzt wird. Version 2 wird von NiFi aktuell noch nicht unterstützt.

Anschließend können wir ein neues „Secret“ anlegen. Ein „Secret“ ist eine Art „Sammlung“ von Zugangsdaten (Credentials). Unter dem neuen „Secret“ werden die eigentlichen Zugangsdaten abgelegt, die NiFi verwenden soll, um auf die Datenbank zuzugreifen. Der Einfachheit halber eignen sich für unsere Zugangsinformationen die Keys „username“ und „password“ für die im „Vault Secret“ hinterlegten Informationen.

Abbildung 1: Der KV-Store in Vault mit den Secrets username und password

Damit haben wir ein neues „Secret“ mit zwei Keys im Vault erzeugt. Doch wie können wir die Informationen nun in NiFi verfügbar machen?

Dazu benötigt es zwei Controller. Zunächst einen StandardHashiCorpVaultClientService. Dieser ist für die Verbindung mit dem Vault zuständig. Dies ist im Prinzip vergleichbar mit dem DHCP–ConnectionPool, der eine Verbindung zu einer Datenbank bereithält.

Ist die Verbindung zum Vault erfolgreich hergestellt, wird der HashicorpParameterProvider benötigt. Dieser synchronisiert die eigentlichen „Secrets“ des Vaults in einen ParameterContext in NiFi.

Um NiFi mit dem Vault zu verbinden, wird der erwähnte StandardHashiCorpVaultClientService als Client Service benötigt. Als Authentication-Methode muss Token festgelegt werden. Unter „vault.token“ fügen wir dafür ein gültiges Vault-Token hinzu. Dieses Token muss in NiFi als „sensitive Property“, also sensible Information, gekennzeichnet werden. Mit diesem Token kann sich der Service dann am Vault authentifizieren.

Abbildung 2: Konfiguration des HashiCorpVaultClientService

Die erstellen „Secrets" im Vault lassen sich nun mit dem HashicorpParameterProvider in NiFi laden und nutzen. 

Abbildung 3: Die geladenen Parameter aus dem Vault

Tausend tolle Sachen … Weitere Vorteile des Vaults

Bindet man NiFi an Vault an, hat man einen großen Vorteil. Ändern sich Passwort und Nutzername im Vault, sowie die an sie gebundenen Zugriffsrechte, so ändert NiFi diese automatisch mit. Dieser Prozess kann im Provider auch manuell angestoßen werden. Gerade dort, wo durch Sicherheitsrichtlinien Passwörter in kurzen Abständen neu vergeben werden müssen, ist diese Funktion besonders hilfreich. Bei einer konsequenten Verwendung von Vault muss die Änderung lediglich an einer Stelle vorgenommen werden.

Was passiert, wenn die Vault-Verbindung während der Laufzeit von NiFi nicht mehr funktioniert? In diesem Fall verwendet NiFi weiterhin die gecachten Informationen. Sofern diese noch gültig sind, ist der Zugriff auf die benutzte Datenbank weiterhin möglich. Für den Fall, dass diese nicht mehr funktionieren (z. B. aufgrund eines abgelaufenen Passwortes), versucht NiFi am Vault die Werte neu zu synchronisieren. 

Fazit

Seit der neuen NiFi Version 1.18, ist es nun relativ unkompliziert möglich Hashicorp Vault als Parameter Provider zu nutzen. Die Nutzung gewährleistet eine höhere Sicherheit bei der Anbindung in NiFi Workflows. Nach der Konfiguration in Vault und NiFi ist es sehr unkompliziert weitere Prozessoren anzubinden, bei denen Vault als zentraler Secret Store den Zugang zur Datenbank schützt.

Haben Sie weitere Frage zu Hashicorp Vault oder NiFi? Sprechen Sie uns gerne an! 

Seminarempfehlungen

Philipp Srock hat noch keine Informationen über sich angegeben
 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Freitag, 01. März 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie