Spring Cloud Vault - 存储 Secret-Id 和 Role-Id 的最佳位置

Spring Cloud Vault - Best place to store the Secret-Id and Role-Id

我正在使用 Spring Cloud Vault Library 从 Vault 服务器访问我的 Secrets。

目前我正在存储所有参数,例如role-idsecret-idhostport等...,如环境变量,然后将其注入到我的 Spring-boot App 的 bootstrap.yml 中。下面是我的 YAML 文件

spring:
 cloud:
    vault:
      authentication: APPROLE
      app-role:
        role-id: ${role-id}
        secret-id: ${secret-id}
      host: ${host}
      port: ${port}
      scheme: ${scheme}

我被卡住的地方是管理 Vault 的 Role-Id 和 Secret-Id。显然,如果人们可以轻松获得这 2 条信息,那么 Vault 并不擅长保护我们的秘密 ——它们本身确实是秘密。

保护 Role-IdSecret-Id 的行业最佳实践是什么?我们已经集思广益,例如 storing-in-config-serverstoring-in-environment-variablestoring-in- cloudfoundry-UPS ..

尽管如此,我们想了解这方面的最佳实践..

我遇到了同样的问题,这是您可以采取的措施。首先,应用程序应该定义自己的系统用户,并且应该以该用户身份启动。然后在与 jar/war 文件相同的目录中,您可以制作 bootstrap.properties 文件,其中包含:

spring.cloud.vault.app-role.secret-id=*your-secret-for-role-id*

这是 ls 输出示例:

-rw-------. 1 app app bootstrap.properties
-rwxr--r--. 1 app app app.jar

应用程序用户必须是该属性文件的所有者,并且只允许他读取 bootstrap.properties。除非您拥有 root 或应用程序用户权限,否则这会保护您的秘密免受未经授权的访问。