如何使用 Spring Boot 对 Vault 使用 AppRole 身份验证?

How to use AppRole authentication for Vault using Spring Boot?

在我的应用程序中,我们从我的应用程序进行两次调用以从 Vault 获取机密,如下所示:

  1. 登录 Vault : POST 调用 https::/v1/auth/approle/login -- 它将使用 role_id 和 secret_id 作为有效负载和响应是 client_token.

  2. 获取机密:GET 调用 https::/v1/secret/data/abc/dev/xyz.json -- 它将 headers 作为 X-Vault-Token 和 X-Vault-Namespace 它会给你如下的回应:

    { "request_id": "......", "lease_id": "", “可再生”:假的, "lease_duration": 0, “数据”: { “数据”: { “名称”:“ABC” }, “元数据”:{ "created_time": "...", "deletion_time": "", “销毁”:假的, “版本”:1 } }

现在我想使用 Spring Cloud Vault Dependency 来解决问题。请给我提供正确的插图来完成这项工作?

假设您正在 运行 正在 spring 启动并为您的应用程序配置了一个工作的 Vault 服务器。

添加spring Cloud Vault Maven 依赖项

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-vault-config</artifactId>
    </dependency>

将保管库配置添加到 bootstrap.yaml

spring:
  application:
    name: abc
  cloud:
    vault:
      host: <vault-server-hostname>
      port: <vault-server-port>
      scheme: HTTPS
      namespace: <name-of-vault-namespace>
      authentication: APPROLE
      app-role:
        role-id: <your-application-role-id>
        secret-id: <your-application-secret-id>
        role: <your-application-role>

如果您 运行 您的应用具有 spring 个配置文件,例如 dev,它将被拾取并添加到保险库路径。

现在您应该能够使用 @Value("${<name-of-property>}

注入存储在路径 secret/data/abc/dev 上的秘密