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;
// ...
}
ライブラリは複数の認証メカニズムもサポートする。AppIdとAppRole、AWS EC2、TLS証明書、Cubbyholeだ。ClientAuthentication
クラスの実装を通じてこれらを提供することで、Java開発者は最初のログインをより簡単に構築する足場を提供してもらえるということを意味する。
またSessionManager
を通じて、フレームワークによって必要とされるセッション管理が処理される。これが意味することは、トークンの再生成や廃棄時の無効化のようなタスクは自動的に処理され、アプリケーションコードで明示的に処理する必要がない。もう一度言うが、追加となる開発のオーバーヘッドを取り除いてくれる。
より詳細は公式ドキュメントにある。ライブラリはMavenセントラルからダウンロードできる。ソースコードはGitHubから利用できる。
Rate this Article
- Editor Review
- Chief Editor Action