将Hashicorp Packer与Vault Secret Engine KV2结合使用

时间:2019-01-16 11:44:00

标签: policy packer hashicorp-vault

我正在尝试将打包程序与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

如果我理解正确,那么问题的原因是该策略未授予打包程序足够的权限,以使其无法读取我的机密。我对吗?如果是,我应该如何修改我的政策?

1 个答案:

答案 0 :(得分:1)

为您的Packer令牌策略尝试类似的操作(别忘了用新策略重新制作令牌,您不能更新已有令牌的策略)

path "secret/*" {
    capabilities = ["list"]
}
path "secret/data/Foo/*" {
    capabilities = ["read"]
}

我一直在学习Vault,并且发现每当我专门对策略中的任何路径进行硬编码(到特定机密)时,都会遇到相同的错误。希望这可以帮助您。 guide详细介绍了如何对令牌使用AppRole身份验证,可能会有所帮助。