3

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

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

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

我被困的地方是管理保险柜的 Role-Id 和 Secret-Id显然,如果人们可以轻松获得这两条信息,Vault 就无法保护我们的秘密——它们本身就是秘密。

Role-Id拥有和Secret-Id保护的行业最佳实践是什么?我们已经集思广益,例如storage-in-config-serverstorage-in-environment-variablestorage-in-cloudfoundry-UPS ..

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

4

1 回答 1

1

我遇到了同样的问题,这就是你可以做的。首先,应用程序应该已经定义了自己的系统用户,并且应该以该用户身份启动。然后在与 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 或应用程序用户权限。

于 2019-08-08T10:26:36.637 回答