我正在尝试设置一个名为“个人”的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 / *”,则用户可以读取其他人的路径(不是秘密,而是路径),这是我要避免的。
有人有什么主意吗?
谢谢。
答案 0 :(得分:0)
政策看起来像这样
path "personal/{{identity.entity.name}}/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
根据您的身份验证方法(例如LDAP),您可能需要将模板化路径更改为identity.entity.aliases.<<mount accessor>>.name