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

ash*_*das 1 spring-boot hashicorp-vault spring-vault

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

  1. 登录 Vault :对 https::/v1/auth/approle/login 进行 POST 调用——它将以 role_id 和 Secret_id 作为负载,响应将是 client_token。

  2. 获取机密:对 https::/v1/secret/data/abc/dev/xyz.json 进行 GET 调用 - 它将采用 X-Vault-Token 和 X-Vault-Namespace 标头,并给出如下响应:

    { "request_id": "......", "lease_id": "", "renewable": false, "lease_duration": 0, "data": { "data": { "name": "ABC" }, "元数据": { "created_time": "...", "deletion_time": "", "destroyed": false, "version": 1 } }

现在我想使用 Spring Cloud Vault Dependency 来使事情通过它进行。请为我提供适当的插图来完成这项工作?

jok*_*rls 5

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

添加 Spring CloudVault Maven 依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-vault-config</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

将保管库配置添加到 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>
Run Code Online (Sandbox Code Playgroud)

如果您使用 spring 配置文件(例如dev )运行应用程序,它将被拾取并添加到保管库路径中。

现在您应该能够注入存储在路径上的secret/data/abc/dev秘密@Value("${<name-of-property>}

  • 不,不是你。将其存储在版本控制中是一个不好的做法。 (4认同)
  • 是我还是在版本控制中存储角色 ID 和秘密 ID 不被认为是正确的做法?通过环境变量注入这些不是更好的主意吗? (2认同)