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 更新时间:2025-08-03 12:09
最后编辑:Jeebiz 更新时间:2025-08-03 12:09