Hashicorp保险库-有关“个人保险库”政策的问题

时间:2019-08-30 11:38:37

标签: hashicorp-vault

我正在尝试设置一个名为“个人”的kv2坐骑,其中每个用户将拥有自己的小房间...不会过期。假设公司有100名员工-他们在公司范围内拥有机密信息,例如secrets /,secrets / general,secrets / general / dept等,但是我希望他们每个人都能对个人/用户,而其他用户则无法在那里阅读。我如何获得这个?我认为这样的政策就足够了:

path "personal/data/user/*" {
  capabilities = ["create", "read", "delete", "update", "list", "sudo"]
}
path "personal/user/*" {
  capabilities = ["create", "read", "delete", "update", "list", "sudo"]
}
path "personal/+" {
  capabilities = ["list"]
}

但是,这并不像我想要的那样。我的意思是,我可以从cli中获得秘密:

    master* ± vault kv get personal/user/ipam |head 
    ====== Metadata ======
    Key              Value
    ---              -----
    created_time     2019-08-27T14:01:10.156868866Z
    deletion_time    n/a
    destroyed        false
    version          3

    ====== Data ======
    Key         Value

但是vault-ui不允许我访问“个人/”空间:

master* 2 ± vault kv list personal/
Error listing personal/metadata: Error making API request.

URL: GET https://...:8200/v1/personal/metadata?list=true
Code: 403. Errors:

* 1 error occurred:
    * permission denied

如果我将最后一个路径更新为“ personal / *”,则用户可以读取其他人的路径(不是秘密,而是路径),这是我要避免的。

有人有什么主意吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

您需要ACL templating

政策看起来像这样

path "personal/{{identity.entity.name}}/*" {
  capabilities = ["create", "read", "update", "delete", "list"]
}

根据您的身份验证方法(例如LDAP),您可能需要将模板化路径更改为identity.entity.aliases.<<mount accessor>>.name