前言
Spring Vault 项目将核心 Spring 概念应用于使用 HashiCorp Vault 的解决方案开发。我们提供了一个 “template” 作为存储和查询文档的高级抽象。您将注意到与 Spring Framework 中的 REST 支持的相似之处。
本文档是 Spring Vault 的参考指南。它解释了 Vault 的概念和语义以及语法。
参考文档的这一部分解释了 Spring Vault 提供的核心功能。
Vault 支持引入了 Vault 模块功能集。
1. 文档结构
本节提供了 Spring 和 Vault 的基本介绍。 它包含有关后续开发以及如何获得支持的详细信息。
本文档的其余部分引用了 Spring Vault 功能,并假定 用户熟悉 HashiCorp Vault 以及 Spring 概念。
2. 认识Spring
Spring Vault 使用 Spring 框架的核心功能,例如 IoC 容器。虽然了解 Spring API 并不重要,但了解它们背后的概念很重要。至少,无论您选择使用什么 IoC 容器,都应该熟悉 IoC 背后的概念。
可以直接使用 Vault 支持的核心功能,而无需调用 Spring Container 的 IoC 服务。这很像 Spring 容器可以“独立”使用,而无需 Spring 容器的任何其他服务。要利用 Spring Vault 文档的所有功能,例如会话支持,您需要使用 Spring 配置库的某些部分。RestTemplate
要了解有关 Spring 的更多信息,您可以参考详细解释 Spring 框架的全面(有时是令人放松的)文档。有很多关于这个问题的文章、博客条目和书籍 - 请查看 Spring 框架主页以获取更多信息。
3. 了解保险库
安全性和使用密钥是每个使用数据库、用户凭证或 API 密钥的开发人员都关心的问题。Vault 通过提供结合访问控制、撤销、密钥滚动和审计的安全存储来介入。简而言之:Vault 是一种用于安全访问和存储 secret 的服务。密钥是您想要严格控制访问的任何内容,例如 API 密钥、密码、证书等。
学习 Vault 的起点是 www.vaultproject.io。以下是有用的资源列表:
-
本手册介绍了 Vault,并包含指向入门指南、参考文档和教程的链接。
-
在线 shell 提供了一种与在线教程相结合的 Vault 实例进行交互的便捷方式。
Spring Vault 为访问、存储和撤销秘密提供了客户端支持。 使用 HashiCorp 的 Vault,您可以在一个中心位置 管理所有环境中应用程序的外部密钥数据。 Vault 可以管理静态和动态 Secret,例如应用程序数据、 远程应用程序/资源的用户名/密码并提供凭据 用于 MySQL、PostgreSQL、Apache Cassandra、Consul、AWS 等外部服务。
4. 要求
Spring Vault 2.x 二进制文件需要 JDK 级别 8.0 及以上,以及 Spring Framework 6.0.11 及以上版本。
在 Vault 方面,Vault 至少为 v0.9.6。
5. 其他帮助资源
学习新框架并不总是一帆风顺的。在本节中,我们尝试提供我们认为易于遵循的指南 Spring Vault 模块。但是,如果您遇到问题或只是在寻求建议,请随时使用以下链接之一:
5.1. 支持
有几个支持选项可用:
5.1.1. 社区论坛
在 Stackoverflow 上发布有关 Spring Vault 的问题,以共享信息并互相帮助。请注意,只有过帐时才需要注册。
5.1.2. 专业支持
Spring Vault 和 Spring 背后的公司 Pivotal Software, Inc. 提供专业的源头支持,并保证响应时间。
5.2. 跟随开发
有关 Spring Vault 源代码存储库、夜间构建和快照工件的信息,请参见 Spring Vault 主页。您可以通过 Stackoverflow 上的社区与开发人员互动,帮助使 Spring Vault 最好地满足 Spring 社区的需求。如果您遇到错误或想要提出改进建议,请在 Spring Vault 问题跟踪器上创建一个工单。要及时了解 Spring 生态系统中的最新消息和公告,请订阅 Spring 社区门户。最后,您可以在 Twitter (SpringCentral) 上关注 Spring 博客或项目团队。
6. 新的和值得注意的
6.2. Spring Vault 2.4 中的新功能
-
支持用户名/密码、LDAP、Okta 和 RADIUS 身份验证的用户名/密码身份验证。
-
支持 Vault 存储库的版本控制 Key/Value Secret 引擎。
6.3. Spring Vault 2.3 中的新功能
-
支持 PEM 编码的证书,用于密钥库和信任库。
-
ReactiveVaultEndpointProvider
用于非阻塞查找 。VaultEndpoint
-
VaultKeyValueMetadataOperations
用于键值元数据交互。 -
支持 Secrets Engine (Enterprise Feature)。
transform
-
每次登录尝试时,都会重新加载 Kubernetes 和 PCF 身份验证的登录凭证。
-
SecretLeaseContainer
发布,而不是 和 在成功进行密钥轮换时发布。SecretLeaseRotatedEvent
SecretLeaseExpiredEvent
SecretLeaseCreatedEvent
-
AbstractVaultConfiguration.threadPoolTaskScheduler()
Bean 类型更改为 而不是 。TaskSchedulerWrapper
ThreadPoolTaskScheduler
-
从 2.3.2 开始:
GcpIamCredentialsAuthentication
6.4. Spring Vault 2.2 中的新功能
-
通过 .
@VaultPropertySource
-
中的 SPEL 支持 。
@Secret
-
添加对 Jetty 作为响应式 HttpClient 的支持。
-
LifecycleAwareSessionManager
并立即发出 s。ReactiveLifecycleAwareSessionManager
AuthenticationEvent
-
废弃 . 请改用 HashiCorp Vault 的建议。
AppIdAuthentication
AppRoleAuthentication
-
CubbyholeAuthentication
和 wrapped 现在默认使用 endpoints。AppRoleAuthentication
sys/wrapping/unwrap
-
Kotlin 协程支持 .
ReactiveVaultOperations
6.5. Spring Vault 2.1 中的新功能
-
GCP Compute、GCP IAM 和 Azure 身份验证。
-
模板 API 支持版本控制和未版本控制的键/值密钥引擎以及文件库包装操作。
-
在反应式 AppRole 身份验证中支持完全拉取模式。
-
改进了 Vault 登录失败的异常层次结构。
6.6. Spring Vault 2.0 中的新功能
-
身份验证步骤 DSL 来编写身份验证流。
-
Reactive Vault 客户端通过 .
ReactiveVaultOperations
-
基于 Spring Data KeyValue 的 Vault 存储库支持。
-
Transit 批量加密和解密支持。
-
策略管理,用于存储为 JSON 的策略。
-
支持 CSR 签名、证书吊销和 CRL 检索。
-
RoleId/SecretId 解包以进行 AppRole 身份验证。
-
Spring Security 与基于 Transit Secrets 引擎和 .
BytesKeyGenerator
BytesEncryptor
6.7. Spring Vault 1.1.0 中的新功能
-
配置传输密钥的加密/解密版本。
-
AppRole 身份验证的拉取模式。
-
Transit 批量加密和解密支持。
-
基于 TTL 的通用密钥轮换。