2016-07-26 18 views
1

ハシコープのVaultは、オンデマンドでデータベースパスワードを提供するように設定できます。各パスワードは、更新前の一定の「リース」期間(例えば1時間)に使用することができ、最大使用期間を設定してから、パスワードを破棄し、新しいパスワードを取得することができる。パスワードリース/更新付きのスプリングブートJDBC(Vaultのように)

Spring起動時にJDBC接続がアプリケーション開始時に設定され、JDBCパスワードがapplication.propertiesファイルにコード化されていると想定されます(あるいは、Spring Cloud Configまたは同等のものを介してアプリケーションのブートストラップ時に取得されます)永遠に使用されます。

質問:期限切れのパスワードのために接続の試行が失敗したときに、VaultにアクセスしてJDBCパスワードをリセットする方法をSpring Bootで実装する方法はありますか?

古いパスワードのために接続が失敗したときに何らかの種類のハンドラが呼び出され、それを新しい値にリセットする方法がありますか?

答えて

1

GitHubで利用できるこのオープンソースプロジェクトをチェックしてください。私はそれがちょうどあなたが探しているものかもしれないと思う。注:外観から見ると、これは現在、Spring Cloud Incubatorプロジェクト(将来Springの正式なSpring認定オープンソースライブラリになる可能性があります)であり、投稿者は3人だけです。あなたのニーズに合うように「十分に信頼できる」かどうかを確認する必要があります。

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

---ここで有用な情報の簡単な概要---

のpom.xmlに以下の依存関係を追加します:

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

標準のSpringブートアプリケーションを作成します - 提供例は単なる主なアプリケーションクラスです:

@SpringBootApplication 
@RestController 
public class Application { 

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

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

} 

実行時には、ポート8200のデフォルトローカルVaultサーバ から外部設定を取得します(実行中の場合)。起動時の動作を に変更するには、bootstrap.properties(application.propertiesのようなアプリケーションコンテキストの ブートストラップフェーズの場合)を使用してVaultサーバー の場所を変更することができます。

bootstrap.yml:

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

Vaultのホストのホスト名を設定しますhost。ホスト名は

portは、プレーンHTTPを使用するHTTPにスキームを設定するVaultのポート

schemeを設定し、SSL証明書の検証に使用されます。サポートされているスキームはhttpとhttpsです。

connection-timeout

read-timeoutこのプロジェクトは、1がしっかりボールトで春のブート設定を保存することができます

+0

ミリ秒単位の読み取りタイムアウトを設定し、ミリ秒単位で接続タイムアウトを設定しますが、すべてのパスワードに対応するためには表示されません。リース/更新機能 –

+0

まだ更新機能はありません。静的秘密の更新は大したことではありませんが、データベース/サービス秘密の更新は問題です。データベースは、ユーザーの変更をさまざまな方法で処理します。 DB2データベースがフリークアウトしている間に接続が確立されると、ユーザを削除してもMySQLは気にしません。私はデータソース/プールを更新することが可能だと思います。しばらくの間、サービスを再開して有効期限を処理することで、安全な側にいなければなりません。有効期限を切る/更新する機能をアプリを破壊することなく使用する方法を慎重に調査するため、まだサポートは追加されていません。 – mp911de

関連する問題