【问题标题】:How to use AppRole authentication for Vault using Spring Boot?如何使用 Spring Boot 对 Vault 使用 AppRole 身份验证?
【发布时间】:2021-01-22 08:14:04
【问题描述】:

在我的应用程序中,我们从我的应用程序发出两个调用以从 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": "", “可再生”:错误, “租约期限”:0, “数据”: { “数据”: { “名称”:“ABC” }, “元数据”:{ "created_time": "...", “删除时间”:“”, “销毁”:错误, “版本”:1 } }

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

【问题讨论】:

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


    【解决方案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 路径中。

    现在您应该可以使用@Value("${&lt;name-of-property&gt;} 注入存储在路径secret/data/abc/dev 上的秘密

    【讨论】:

    • 是我还是在版本控制中存储角色 ID 和机密 ID 不被认为是正确的做法?通过环境变量注入这些不是更好的主意吗?
    • 不,不是你。将其存储在版本控制中是一种不好的做法。
    猜你喜欢
    • 2022-09-28
    • 2022-08-11
    • 2022-08-13
    • 2019-11-22
    • 2022-01-20
    • 2015-11-22
    • 2021-06-24
    • 2017-11-02
    • 2018-11-17
    相关资源
    最近更新 更多