如何使用从策略创建的令牌访问 Vault 机密?

How can I access a Vault secret using a token created from a policy?

我 运行 Hashicorp Vault v1.1.0 在开发者模式下本地 docker 容器中。我 exec 进入容器以使用 cli,但我无法使用仅允许我访问一个秘密的策略和令牌完成基本概念证明。

以下是我使用秘密引擎 v2 采取的操作的记录。我在这里做错了什么?

/ # VAULT_TOKEN=myroot vault kv enable-versioning secret/
Success! Tuned the secrets engine at: secret/


/ # VAULT_TOKEN=myroot vault kv put secret/message value=mypassword
Key              Value
---              -----
created_time     2019-04-11T20:23:25.0149145Z
deletion_time    n/a
destroyed        false
version          5

/ # cat p.hcl
path "secret/message" {
     capabilities = ["read"]
}

/ # VAULT_TOKEN=myroot vault policy write message-readonly p.hcl
Success! Uploaded policy: message-readonly

/ # VAULT_TOKEN=myroot vault token create -policy="message-readonly"
Key                  Value
---                  -----
token                s.hZNCq7Q5plwA4XjcGAcsd5tg
token_accessor       vpcxkGMbDBswfJPTGzzfY4he
token_duration       768h
token_renewable      true
token_policies       ["default" "message-readonly"]
identity_policies    []
policies             ["default" "message-readonly"]

/ # VAULT_TOKEN=s.hZNCq7Q5plwA4XjcGAcsd5tg vault kv get secret/message
Error reading secret/data/message: Error making API request.

URL: GET http://127.0.0.1:1234/v1/secret/data/message
Code: 403. Errors:

* 1 error occurred:
    * permission denied


/ #

当您为 KV 后端的版本 2 制定策略时,您需要指定 API 路径,而不是 "vault kv" 使用的逻辑路径。您的政策应如下所示:

    path "secret/data/message" {
         capabilities = ["read"]
    }

在制定 KV2 策略时,您还需要注意许多其他问题。有关详细信息,请参阅 https://www.vaultproject.io/docs/secrets/kv/kv-v2.html