0

在我的应用程序中,我们从我的应用程序中进行了两次调用,以从 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 来完成它。请为我提供适当的插图来完成这项工作?

4

1 回答 1

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>

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

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

于 2020-10-14T08:53:53.800 回答