2016-07-26 13 views
1

Hashicorp Vault kann eingerichtet werden, um Datenbank-Passwörter bei Bedarf bereitzustellen; Jedes Passwort kann für eine bestimmte "Leasing" -Periode (z. B. 1 Stunde) verwendet werden, bevor es erneuert wird, und es kann eine maximale Nutzungsdauer eingestellt werden, nach der das Passwort verworfen und ein neues erhalten werden muss. Im Spring-Boot wird die JDBC-Verbindung beim Start der Anwendung konfiguriert, und es wird davon ausgegangen, dass das JDBC-Passwort in der Datei application.properties codiert ist (oder alternativ über Spring Cloud Config oder gleichwertig zum Startzeitpunkt der Anwendung erhalten wird). und für immer benutzt.Spring boot JDBC mit Passwort lease/renew (wie in Vault)

FRAGE: Wie kann ich einen Weg im Spring Boot implementieren, um das JDBC-Passwort durch Zugriff auf Vault zurückzusetzen, wenn ein Verbindungsversuch aufgrund eines abgelaufenen Passworts fehlschlägt?

Gibt es eine Möglichkeit festzulegen, dass eine Art von Handler aufgerufen wird, wenn die Verbindung aufgrund eines alten Passworts fehlschlägt, und sie auf einen neuen Wert zurücksetzt?

Antwort

1

Sehen Sie sich dieses auf GitHub verfügbare Open-Source-Projekt an. Ich denke, es könnte genau das sein, wonach Sie suchen. Hinweis: Aus heutiger Sicht ist dies derzeit ein Spring Cloud Incubator-Projekt (hat das Potenzial, in Zukunft eine offizielle Spring-Open Source-Bibliothek zu werden), und es gibt nur drei Mitwirkende. Sie müssten sehen, ob es "zuverlässig genug" ist, um Ihren Bedürfnissen zu entsprechen.

https://github.com/spring-cloud-incubator/spring-cloud-vault-config

--- Hier ist eine kurze Zusammenfassung von nützlichen Informationen ---

die folgende Abhängigkeit pom.xml hinzufügen:

<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-vault-starter-config</artifactId> 
    <version>x.y.z</version> 
</dependency> 

Erstellen einer Standard-Frühlings-Boot-Anwendung - zur Verfügung gestellt Beispiel ist nur eine Hauptanwendungsklasse:

@SpringBootApplication 
@RestController 
public class Application { 

    @RequestMapping("/") 
    public String home() { 
     return "Hello World!"; 
    } 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 

} 

Wenn es ausgeführt wird, wird die externe Konfiguration vom lokalen lokalen Vault-Server an Port 8200 übernommen, wenn es ausgeführt wird. Zum Ändern des Startverhaltens können Sie den Speicherort des Vault-Servers mit bootstrap.properties (wie application.properties, aber für die Bootstrap-Phaseeines Anwendungskontexts) ändern, z.

bootstrap.yml:

spring.cloud.vault: 
    host: localhost 
    port: 8200 
    scheme: http 
    connection-timeout: 5000 
    read-timeout: 15000 

host setzt den Hostnamen des Host-Vault. Der Hostname wird

für die SSL-Zertifikatsüberprüfung verwendet werden

port setzt den Vault-Port

scheme das System auf http Einstellung wird Plain-HTTP verwenden. Unterstützte Schemata sind http und https.

connection-timeout stellt die Verbindung Timeout in Millisekunden

read-timeout die Lese Timeout in Millisekunden setzt

+0

Dieses Projekt eine der Frühling Boot-Konfiguration in Vault sicher speichern können, aber es scheint nicht überhaupt das Passwort zu adressieren Leasing/erneuern Funktionalität. –

+0

Es gibt noch keine neue Funktionalität. Das Aktualisieren von statischen Geheimnissen ist keine große Sache, aber das Aktualisieren von Datenbank-/Dienstgeheimnissen ist ein Problem. Datenbanken behandeln Benutzeränderungen auf verschiedene Arten. MySQL ist es egal, wenn Sie einen Benutzer löschen, sobald eine Verbindung hergestellt wurde, während eine DB2-Datenbank ausflippt. Ich denke, das Aktualisieren der Datenquelle/des Pools ist machbar. Sie sollten auf der sicheren Seite bleiben, indem Sie mit dem Ablauf umgehen, indem Sie Ihren Dienst von Zeit zu Zeit neu starten. Wir müssen sorgfältig prüfen, wie wir das Verfalls-/Verlängerungsfeature in einer Weise nutzen können, ohne Ihre App zu zerstören, daher haben wir noch keine Unterstützung dafür hinzugefügt. – mp911de