hashicorp-vault - Hashicorp 保险库 - “个人保险库”政策问题
问题描述
我正在尝试设置一个名为“个人”的 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
如果我将最后一条路径更新为“个人/*”,用户可以读取其他所有人的路径(不是秘密,而是路径),这是我想要避免的。
有人有什么想法吗?
谢谢你。
解决方案
您需要ACL 模板
该政策看起来像这样
path "personal/{{identity.entity.name}}/*" {
capabilities = ["create", "read", "update", "delete", "list"]
}
根据您的身份验证方法(例如 LDAP),您可能需要将模板路径更改为类似identity.entity.aliases.<<mount accessor>>.name
推荐阅读
- rally - 如何在 Rally 工具中查找所有“孤立”用户故事
- vba - 如何在所有新的和现有的 Microsoft Word 文档中加载 VBA 脚本?
- java - 将配置文件添加到现有的 springBoot 应用程序
- json - 在 Python 中从 Json 数据中获取值
- solr - 在正在运行的系统上升级 solr 模式的正确方法是什么?
- javascript - HTML5 拖放。检测元素被抓取的位置
- android - Android:从服务器上的 JSON 文件中获取没有键的数组中的值
- tensorflow - 如何使用 amd radeon r4/r5 显卡在 ubuntu 上安装 tensorflow-gpu
- javascript - 如何编写正则表达式以在 javascript 中查找 :smile:?
- mysql - 错误:'用户'root'@'localhost'的访问被拒绝(使用密码:YES)'和NO两者在Windows 10上。如何进行root登录?