Spring 避难所
介绍
Spring Vault为访问,存储和吊销机密提供了熟悉的Spring抽象和客户端支持。它提供了与Vault交互的低层和高层抽象,使用户摆脱了基础设施方面的顾虑。
使用HashiCorp的保管库,您可以在中心位置管理跨所有环境的应用程序的外部机密数据。保险柜可以管理静态和动态机密,例如应用程序数据,远程应用程序/资源的用户名/密码,并为外部服务(例如MySQL,PostgreSQL,Apache Cassandra,Consul,AWS等)提供凭据。
特征
-
使用基于Java的@Configuration类的Spring配置支持。
-
VaultTemplate
帮助程序类,可提高执行Mongo常见操作的效率。包括文档和POJO之间的集成对象映射。 -
支持的身份验证机制:
-
代币
-
AppRole
-
AWS-EC2
-
AWS-IAM
-
Azure MSI
-
证书(PKI)
-
衣帽间
-
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();
}
}
金库 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) {
// …
}
}
快速启动您的项目
使用
Spring Initializr引导您的应用程序
。