该版本仍在开发中,尚未被视为稳定。最新稳定版本请使用Spring Cloud Vault 5.0.0spring-doc.cadn.net.cn

服务注册表配置

你可以用发现客户端(例如Spring Cloud Consul)通过设置spring.cloud.vault.discovery.enabled=true(默认)来定位Vault服务器false). 最终结果是,你的应用需要一个带有相应发现配置的 application.yml(或环境变量)。 好处是只要发现服务是固定点,Vault 可以更改坐标。 默认服务ID为但你可以在客户端上更改spring.cloud.vault.discovery.serviceId(春.cloud.vault.discovery.serviceId).spring-doc.cadn.net.cn

发现客户端的实现都支持某种元数据映射(例如Eureka的例子是eureka.instance.metadataMap)。 服务的注册元数据中可能需要配置一些额外的属性,以确保客户端能够正确连接。 不提供传输层安全细节的服务注册表需要提供方案元数据条目将设置为httpshttp. 如果没有配置任何方案且服务未被暴露为安全服务,则配置默认为Spring.cloud.vault.schemehttps当它没有被设定时。spring-doc.cadn.net.cn

spring.cloud.vault.discovery:
    enabled: true
    service-id: my-vault-service

Vault 客户端快速故障

在某些情况下,如果服务无法连接到 Vault 服务器,启动失败可能是理想的选择。 如果这是期望的行为,设置引导配置属性Spring.cloud.vault.fail-fast=true客户端将以例外方式停止。spring-doc.cadn.net.cn

spring.cloud.vault:
    fail-fast: true

Vault Enterprise 命名空间支持

Vault Enterprise 允许使用命名空间在单一 Vault 服务器上隔离多个 Vault。 通过设置配置命名空间Spring.cloud.vault.namespace=...启用命名空间头部X-金库命名空间在使用 Vault 时,对每个外发出的 HTTP 请求都适用Rest模板Web客户端.spring-doc.cadn.net.cn

请注意,该功能不支持Vault社区版,且不影响Vault运营。spring-doc.cadn.net.cn

spring.cloud.vault:
    namespace: my-namespace

Vault 客户端 SSL 配置

SSL 可以通过设置各种属性来声明式配置。 你可以设置任何一种javax.net.ssl.trustStore配置 JVM 范围的 SSL 设置 或Spring.cloud.vault.ssl.trust-store只为 Spring Cloud Vault 配置设置 SSL 设置。spring-doc.cadn.net.cn

spring.cloud.vault:
    ssl:
        trust-store: classpath:keystore.jks
        trust-store-password: changeit
        trust-store-type: JKS
        enabled-protocols: TLSv1.2,TLSv1.3
        enabled-cipher-suites: TLS_AES_128_GCM_SHA256

请注意配置spring.cloud.vault.ssl.*只有当Apache Http组件或OkHttp客户端位于你的类路径上时,才能应用。spring-doc.cadn.net.cn

租赁生命周期管理(续租与撤销)

每个秘密,Vault 都会创建一个租约: 包含时间持续时间、可再生性等信息的元数据。spring-doc.cadn.net.cn

Vault 承诺数据在给定的时间内有效,即“存活时间”(TTL)。 租约到期后,Vault 可以撤销数据,秘密的消费者也无法确定其有效性。spring-doc.cadn.net.cn

Spring Cloud Vault 维护着超越创建登录Tokens和密钥的租赁生命周期。 不过,登录Tokens和与租赁相关的密钥通常会在租约到期前不久续签,直到终止期限。 应用关闭、已获得的登录Tokens和可续租租约被撤销。spring-doc.cadn.net.cn

特勤局和数据库后端(如 MongoDB 或 MySQL)通常会生成可续租租约,因此在应用关闭时生成的凭证会被禁用。spring-doc.cadn.net.cn

静态Tokens不会续期或撤销。

租约续签和撤销默认是启用的,可以通过设置来禁用spring.cloud.vault.config.lifecycle.enabledfalse. 不建议这样做,因为租约可能到期,Spring Cloud Vault 无法再使用生成的凭证访问 Vault 或服务,且有效凭证在应用关闭后仍然有效。spring-doc.cadn.net.cn

spring.cloud.vault:
    config.lifecycle:
    	enabled: true
    	min-renewal: 10s
    	expiry-threshold: 1m
    	lease-endpoints: Legacy
  • 启用控制与秘密关联的租赁是否被视为续签,以及过期秘密是否轮换。 默认启用。spring-doc.cadn.net.cn

  • 最小值更新设定续租前至少需要的期限。 这种设置防止了续约发生得太频繁。spring-doc.cadn.net.cn

  • 到期阈值设定到期门槛。 租约在到期前的规定期限内续签。spring-doc.cadn.net.cn

  • 租约端点设置续期和撤销的端点。 0.8之前的vault版本用Legacy,后期用SysLeases。spring-doc.cadn.net.cn

  • 租赁策略设置租赁策略 (掉落错误,RetainOnError(保留错误),RetainOnIoError)用于控制租约续签时的错误处理。spring-doc.cadn.net.cn

会话Tokens生命周期管理(续订、重新登录和撤销)

Vault 会话Tokens(也称为登录Tokens)与租赁非常相似,因为它有TTL、最大TTL,并且可能会到期。 一旦登录Tokens过期,就无法再用它与Vault互动。 因此,Spring Vault 会附带会话管理器用于命令式和响应式使用的API。spring-doc.cadn.net.cn

Spring Cloud Vault 默认维护会话Tokens生命周期。 会话Tokens获取得很懒,所以实际登录会推迟到第一次会话绑定的 Vault 使用时才进行。 一旦 Spring Cloud Vault 获得会话Tokens,它会一直保留该Tokens直到有效期。 下一次使用会话绑定活动时,Spring Cloud Vault 会重新登录 Vault 并获得新的会话Tokens。 应用关闭时,如果Tokens仍然活跃,Spring Cloud Vault 会撤销以终止会话。spring-doc.cadn.net.cn

会话生命周期默认启用,可以通过设置关闭spring.cloud.vault.session.lifecycle.enabledfalse. 不建议禁用,因为会话Tokens可能会过期,Spring Cloud Vault 也无法访问 Vault。spring-doc.cadn.net.cn

spring.cloud.vault:
    session.lifecycle:
        enabled: true
        refresh-before-expiry: 10s
        expiry-threshold: 20s
  • 启用控制是否启用会话生命周期管理以更新会话Tokens。 默认启用。spring-doc.cadn.net.cn

  • 刷新-过期前控制会话Tokens续期的时间点。 刷新时间通过减去计算刷新-过期前从Tokens到期时间开始。 默认5秒.spring-doc.cadn.net.cn

  • 到期阈值设定到期门槛。 阈值代表会话Tokens有效所需的最小TTL持续时间。 TTL较短的Tokens被视为过期,不再使用。 应该大于刷新-过期前以防止Tokens过期。 默认7秒.spring-doc.cadn.net.cn