我正在尝试将打包程序与Vault秘密引擎kv2一起使用,但是到目前为止,我遇到了身份验证/权限错误。我正在尝试从Vault中读取一个秘密,如示例所示。在我的test.json
文件中,我有一个variables
对象,在里面,我有一个access_key
和一个secret_key
键。其中的每一个都包含{{ vault
/秘密/数据/ Foo /测试 access_key
}}
。
"variables": {
"access_key": "{{ vault `/secret/data/Foo/test` `access_key`}}",
"secret_key": "{{ vault `/secret/data/Foo/test` `secret_key`}}"
}
在保管库中,我创建了一个令牌(与打包程序一起使用),并且该令牌具有以下策略:
path "secret/*" {
capabilities = ["list"]
}
path "secret/data/Foo/test" {
capabilities = ["read"]
}
根据文档,这足以使打包程序能够读取机密,但是当我运行打包程序时,我得到了
Error initializing core: error interpolating default value for 'access_key':
template: root:1:3: executing "root" at <vault `/secret/data/...>:
error calling vault: Error reading vault secret: Error making API request.
Permission denied.
URL: GET
https://vault.*******.com/v1/secret/data/Foo/test
Code: 403. Errors:
* 1 error occurred:
* permission denied
如果我理解正确,那么问题的原因是该策略未授予打包程序足够的权限,以使其无法读取我的机密。我对吗?如果是,我应该如何修改我的政策?
答案 0 :(得分:1)
为您的Packer令牌策略尝试类似的操作(别忘了用新策略重新制作令牌,您不能更新已有令牌的策略)
path "secret/*" {
capabilities = ["list"]
}
path "secret/data/Foo/*" {
capabilities = ["read"]
}
我一直在学习Vault,并且发现每当我专门对策略中的任何路径进行硬编码(到特定机密)时,都会遇到相同的错误。希望这可以帮助您。 guide详细介绍了如何对令牌使用AppRole身份验证,可能会有所帮助。