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

时间:2020-10-07 11:16:17

标签: spring-boot hashicorp-vault spring-vault

在我的应用程序中,我们正在从我的应用程序中拨打两个电话,以从保险柜中获取机密,如下所示:

  1. 登录到保管箱:POST调用https :: // v1 / auth / approle / login -将使用role_id和secret_id作为有效负载,响应将是client_token。

  2. 获取机密:GET调用https :: / v1 / secret / data / abc / dev / xyz.json-将标头作为X-Vault-Token和X-Vault-Namespace并将给您以下答复:

    { “ request_id”:“ ......”, “ lease_id”:“”, “可更新”:否, “ lease_duration”:0, “数据”:{ “数据”:{ “名称”:“ ABC” }, “元数据”:{ “ created_time”:“ ...”, “ deletion_time”:“”, “销毁”:false, “版本”:1 } }

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

1 个答案:

答案 0 :(得分:1)

假设您正在运行Spring Boot,并为您的应用配置了可运行的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>

如果您使用弹簧配置文件(例如 dev )运行应用程序,则会将其拾取并添加到保管库路径。

现在您应该可以使用secret/data/abc/dev注入路径@Value("${<name-of-property>}中存储的机密了