我正在使用Spring Cloud Vault Library从Vault服务器访问我的秘密。
当前,我正在将所有参数(例如role-id
,secret-id
,host
,port
等)存储为<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-Id
和Secret-Id
的行业最佳实践是什么?我们已经集思广益,例如 storing-in-config-server , storing-in-environment-variable , storing-in-cloudfoundry-UPS 。
尽管如此,我们还是希望了解有关此问题的最佳实践。
答案 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用户或应用程序用户权限,否则这可以保护您的秘密免遭未经授权的访问。