Spring Vault
官方地址:https://spring.io/projects/spring-vault
Spring Vault 提供了熟悉的 Spring 抽象和客户端支持来访问、存储和撤销机密。它提供了与 Vault 交互的低级和高级抽象,使用户免于基础设施问题。
借助HashiCorp 的 Vault,您可以在一个中心位置来管理所有环境中应用程序的外部秘密数据。Vault 可以管理静态和动态机密,例如应用程序数据、远程应用程序/资源的用户名/密码,并为外部服务(例如 MySQL、PostgreSQL、Apache Cassandra、Consul、AWS 等)提供凭证。
特征
Spring 配置支持使用基于 Java 的 @Configuration 类。
VaultTemplate
帮助程序类可提高执行常见 Vault 操作的工作效率。包括文档和 POJO 之间的集成对象映射。支持的身份验证机制:
Token
AppRole
AWS-EC2
AWS-IAM
Azure MSI
Certificates (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) {
// …
}
}
作者:Jeebiz 创建时间:2023-08-12 12:38
最后编辑:Jeebiz 更新时间:2024-07-06 19:00
最后编辑:Jeebiz 更新时间:2024-07-06 19:00