Spring Vault
2.3.1導入
Spring Vault は、おなじみの Spring の抽象化と、シークレットのアクセス、保存、取り消しのためのクライアント側サポートを提供します。Vault と対話するための低レベルおよび高レベルの抽象化を提供し、インフラストラクチャの懸念からユーザーを解放します。
HashiCorp の Vault (英語) を使用すると、すべての環境にわたるアプリケーションの外部シークレットデータを管理する中心的な場所があります。Vault は、アプリケーションデータ、リモートアプリケーション / リソースのユーザー名 / パスワードなどの静的および動的なシークレットを管理し、MySQL、PostgreSQL、Apache Cassandra、Consul、AWS などの外部サービスの資格情報を提供できます。
機能
Java ベースの @Configuration クラスを使用した Spring 構成のサポート。
一般的な Mongo 操作を実行する生産性を向上させる
VaultTemplate
ヘルパークラス。ドキュメントと POJO 間の統合オブジェクトマッピングが含まれます。サポートされている認証メカニズム:
トークン
AppRole
AWS-EC2
AWS-IAM
Azure MSI
証明書 (PKI)
Cubbyhole
GCP-GCE
GCP-IAM
Kubernetes
Pivotal CloudFoundry
アノテーションベースの
@VaultPropertySource
統合再生可能なシークレットのサポート
Spring の変換サービスと統合された機能豊富なオブジェクトマッピング
アノテーションベースのマッピングメタデータですが、他のメタデータ形式をサポートするために拡張可能
カスタムクエリメソッドのサポートを含む、リポジトリインターフェースの自動実装。
VaultTemplate の設定
@Configuration
class VaultConfiguration extends AbstractVaultConfiguration {
@Override
public VaultEndpoint vaultEndpoint() {
return new VaultEndpoint();
}
@Override
public ClientAuthentication clientAuthentication() {
return new TokenAuthentication("…");
}
}
VaultTemplate を注入して使用する
public class Example {
// inject the actual template
@Autowired
private VaultOperations operations;
public void writeSecrets(String userId, String password) {
Map<String, String> data = new HashMap<String, String>();
data.put("password", password);
operations.write(userId, data);
}
public Person readSecrets(String userId) {
VaultResponseSupport<Person> response = operations.read(userId, Person.class);
return response.getBody();
}
}
Vault PropertySource
@VaultPropertySource(value = "aws/creds/s3",
propertyNamePrefix = "aws."
renewal = Renewal.RENEW)
public class MyConfig {
}
public class Example {
// inject the actual values
@Value("${aws.access_key}")
private String awsAccessKey;
@Value("${aws.secret_key}")
private String awsSecretKey;
public InputStream getFileFromS3(String filenname) {
// …
}
}
ドキュメント
2.3.1 CURRENT GA | リファレンスドキュメント (英語) | API ドキュメント (英語) |
2.4.0-SNAPSHOT SNAPSHOT | ||
2.3.2-SNAPSHOT SNAPSHOT | ||
2.2.3.BUILD-SNAPSHOT SNAPSHOT | ||
2.2.2.RELEASE GA | リファレンスドキュメント (英語) | API ドキュメント (英語) |