3. 客户端使用

要在应用程序中使用这些功能,只需将其构建为依赖于的 Spring Boot 应用程序(例如,参见测试用例)。 Maven 配置示例:spring-cloud-vault-configspring-doc.cn

示例 1.pom.xml
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.0.RELEASE</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>

<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-vault-config</artifactId>
        <version>3.1.3</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

<!-- repositories also needed for snapshots and milestones -->

然后,您可以创建一个标准的 Spring Boot 应用程序,例如这个简单的 HTTP 服务器:spring-doc.cn

@SpringBootApplication
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

当它运行时,如果它正在运行,它将从端口上的默认本地 Vault 服务器获取外部配置。 要修改启动行为,可以使用 更改 Vault 服务器的位置,例如8200application.propertiesspring-doc.cn

示例 2.application.yml
spring.cloud.vault:
    host: localhost
    port: 8200
    scheme: https
    uri: https://localhost:8200
    connection-timeout: 5000
    read-timeout: 15000
    config:
spring.config.import: vault://
  • host设置 Vault 主机的主机名。 主机名将用于 SSL 证书验证spring-doc.cn

  • port设置 Vault 端口spring-doc.cn

  • scheme将 scheme 设置为 将使用纯 HTTP。 支持的方案包括 和 。httphttphttpsspring-doc.cn

  • uri使用 URI 配置 Vault 终端节点。优先于主机/端口/方案配置spring-doc.cn

  • connection-timeout设置连接超时(以毫秒为单位)spring-doc.cn

  • read-timeout设置读取超时(以毫秒为单位)spring-doc.cn

  • spring.config.import使用所有已启用的 secret 后端挂载 Vault(默认启用键值)PropertySourcespring-doc.cn

启用更多集成需要额外的依赖项和配置。 根据您设置 Vault 的方式,您可能需要其他配置,例如 SSL身份验证spring-doc.cn

如果应用程序导入项目,则 Vault 服务器的状态将通过端点提供。spring-boot-starter-actuator/healthspring-doc.cn

可以通过属性 (默认为 ) 启用或禁用 Vault 运行状况指示器。management.health.vault.enabledtruespring-doc.cn

在 Spring Cloud Vault 3.0 和 Spring Boot 2.4 中,不推荐使用属性源的引导上下文初始化 (, )。 相反,Spring Cloud Vault 偏爱 Spring Boot 的 Config Data API,它允许从 Vault 导入配置。使用 Spring Boot Config Data 方法,您需要设置属性才能绑定到 Vault。您可以在 Config Data Locations 部分中阅读更多相关信息。 您可以通过设置 configuration 属性或包含 dependency 来启用引导程序上下文。bootstrap.ymlbootstrap.propertiesspring.config.importspring.cloud.bootstrap.enabled=trueorg.springframework.cloud:spring-cloud-starter-bootstrap

3.1. 身份验证

Spring Cloud Vault 支持多种身份验证机制,以使用 Vault 对应用程序进行身份验证。spring-doc.cn

对于快速入门,请使用 Vault 初始化打印的根令牌。spring-doc.cn

例 3.application.yml
spring.cloud.vault:
    token: 19aefa97-cccc-bbbb-aaaa-225940e63d76
spring.config.import: vault://
请仔细考虑您的安全要求。 如果您想快速开始使用 Vault,静态令牌身份验证很好,但静态令牌不再受到保护。 任何向非预期方披露都允许 Vault 与关联的令牌角色一起使用。