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

时间:2018-09-05 06:09:41

标签: spring-boot spring-cloud spring-cloud-vault-config

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

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

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

我遇到的困难是管理保险柜的角色ID和秘密ID 。显然,如果人们可以轻松地掌握这两条信息,那么Vault并不能很好地保护我们的秘密。 –实际上,它们本身就是秘密。

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

尽管如此,我们还是希望了解有关此问题的最佳实践。

1 个答案:

答案 0 :(得分:1)

我也遇到了同样的问题,这是您可以做的。首先,应用程序应定义自己的系统用户,并以该用户身份启动。然后,在与jar / war文件相同的目录中,可以创建包含以下内容的 bootstrap.properties 文件:

console.log(OriginalClass.call);

// it will result is here.
// console.log test/vue/plugins/swaggerClient.spec.js:46
//       [AsyncFunction: call]

OriginalClass.call = jest.fn().mockReturnValue(`test`);
OriginalClass.call.mockRestore();

console.log(OriginalClass.call);

// it will result is here.
// console.log test/vue/plugins/swaggerClient.spec.js:62
//       { [Function: mockConstructor]
//         _isMockFunction: true,
//         getMockImplementation: [Function],
//         mock: [Getter/Setter],
//         mockClear: [Function],
// ↑ I expect this that is [AsyncFunction: call]

这是ls输出示例:

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

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

相关问题