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"); </secret>
通过使用 @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 Certificates 和 Cubbyhole 。通过实现 ClientAuthentication 类即可指定它们,这表示为 Java 开发人员提供了一个更易于设置初始登录的脚手架。
还可以通过 SessionManager 类交给框架来进行会话管理。这意味着令牌更新、吊销等任务都是自动化处理的,不需要特别由应用代码来完成,这又一次消减了一些额外的开发成本。
在官方文档中可找到其他详细内容,该类库可以在 Maven Central 中下载,源码可以在 GitHub 中下载。
查看英文原文: Spring Vault GA 1.0 Released
活动推荐:
2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。
评论