BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Spring Vault GA 1.0がリリースされた

Spring Vault GA 1.0がリリースされた

原文(投稿日:2017/05/08)へのリンク

PivotalはSpring Vault 1.0の一般提供を発表した。これはJavaライブラリで、セキュリティ管理ツールのHashicorp Vaultのまわりにクライアントサイドを抽象化したものを提供する。典型的なSpringのイディオムに従うと、VaultをSpringやJavaアプリケーションにより簡単に連携できるようにする。よくあるパターンはテンプレートやプロパティソースといったものだ。

Hashicorp Vaultは開発者にAPIトークンやSSL証明書、パスワードのような機密にアクセスし保存する安全な手段を提供するツールである。またトークンを無効にしたりロールしたりすることでユーザへのアクセス制限を処理する。この上には、ユーザを追跡する監査機能がある。

Vaultを採用したいJava開発者は一般的にCLIかAPIかの選択を提示される。ゆえにJVMからVaultを呼び出したいとき、開発者はAPIを選択し、彼ら自身のクライアントライブラリを実装する可能性が高い。Spring Vaultをオープンソースとして提供することで開発者自身がそうせずともよくする。また営利企業であるPivotalによっても支援されている。

Spring自身に依存はしないが、高レベルの設計原則と抽象化はともに開発者にとってのお決まりのコードを減らす目的となじんでいる。これが意味することは、フレームワークは一般的なJava開発者と同様に、Spring開発者にとってとくに簡単に適用できるべきだということだ。

Vaultとやり取りするために、Spring Vaultは中心となるクラスとしてVaultTemplateを使う。VaultのCLIやAPIと同義にする目的で、"write"や"read"、"delete"、"revoke"のようなよくある処理を提供する。

Secret toWrite = new Secret("foo");
vaultTemplate.write("mysecret/myapp", toWrite);

VaultResponseSupport<Secret> toRead = vaultTemplate.read("mysecret/myapp", Secret.class);
vaultTemplate.delete("mysecret/myapp");

@VaultPropertySourceアノテーションを使うと、Spring Vaultが機密をJavaオブジェクトに暗黙的にマッピングできるようになる宣言的メカニズムを適用できる。

@VaultPropertySource(value = "foo/creds", propertyNamePrefix = "foo")
public class SomeConfig {
  // ...
}

public class MyProperties {
  @Value("${foo.username}")
  private String awsAccessKey;

  @Value("${foo.password}")
  private String awsSecretKey;

  // ...
}

ライブラリは複数の認証メカニズムもサポートする。AppIdAppRoleAWS EC2TLS証明書Cubbyholeだ。ClientAuthenticationクラスの実装を通じてこれらを提供することで、Java開発者は最初のログインをより簡単に構築する足場を提供してもらえるということを意味する。

またSessionManagerを通じて、フレームワークによって必要とされるセッション管理が処理される。これが意味することは、トークンの再生成や廃棄時の無効化のようなタスクは自動的に処理され、アプリケーションコードで明示的に処理する必要がない。もう一度言うが、追加となる開発のオーバーヘッドを取り除いてくれる。

より詳細は公式ドキュメントにある。ライブラリはMavenセントラルからダウンロードできる。ソースコードはGitHubから利用できる。

 

Rate this Article

Adoption Stage
Style

この記事に星をつける

おすすめ度
スタイル

BT