对于给定令牌,如何确定可以使用 hashicorp 保险库中的哪些功能访问哪些路径?
How to identify what paths can be accessed with what capabilities in hashicorp vault for a given token?
我知道我们可以选择查看我们对给定令牌的特定路径具有哪些功能
示例 - 使用命令 - vault token capabilities secret/foo
但是有没有一种方法可以识别我可以访问给定令牌的所有路径,并像任何功能一样读取、写入或更新。
我尝试通过保险库令牌查找来查找附加到我的令牌的策略。但我无法阅读该政策以了解我可以访问哪些路径。
vault token create -policy=read-policy -no-default-policy
Key Value
--- -----
token XXXXXXXXXXXXXXXXXXXXXXXX
token_accessor R3uPmiu30Hw8HgSbFcS3wkDJ
token_duration 768h
token_renewable true
token_policies ["read-policy"] ++++++++++++++++++++++++++++++++++++++++
identity_policies []
policies ["read-policy"]
使用令牌登录后,如果我尝试阅读该政策
vault policy read read-policy
Error reading policy named read-policy: Error making API request.
URL: GET http://127.0.0.1:8200/v1/sys/policies/acl/read-policy
Code: 403. Errors:
* 1 error occurred:
* permission denied
所以我们是否必须在创建读取策略 hcl 文件时包含 sys/policies/acl/read-policy 的读取功能?(即使我试过了,但此路径中的功能被拒绝。似乎只有 root 可以读取)
或者根据保险库设计,我们看不到我们可以访问哪些路径?除非金库管理员另有说明?或者我们有任何命令来获取该信息?
如有错误请指正
进一步深入挖掘 vault,我发现 this.We 的解决方案必须 运行 下面的命令会告诉我们什么路径我们有什么能力
vault read sys/internal/ui/resultant-acl --format=json|jq -r .data
{
"exact_paths": {
"auth/token/lookup-self": {
"capabilities": [
"read"
]
},
"sys/internal/ui/resultant-acl": {
"capabilities": [
"read"
]
},
"sys/mounts": {
"capabilities": [
"list"
]
}
},
"glob_paths": {
"sys/mounts/": {
"capabilities": [
"create",
"delete",
"list",
"read",
"sudo",
"update"
]
}
},
"root": false
}
因此,如果我们希望我们的令牌用户知道 path/capabilities 他们拥有什么,那么当我们创建策略时,我们必须包含对路径 sys/internal/ui/resultant-acl
的读取能力。例如,我已经创建了这个策略来管理秘密引擎,并且我已经包含了那个功能,以便将要使用映射到该策略的令牌的用户可以阅读他或她拥有的path/capability
cat /tmp/secrets-mgmt.hcl
path "sys/mounts/*" {
capabilities = ["create","read","update","delete","list","sudo"]
}
path "sys/mounts" {
capabilities = ["list"]
}
# Allow tokens to look up their own properties
path "auth/token/lookup-self" {
capabilities = ["read"]
}
# based on how the internal ACL features and capabilities change.
path "sys/internal/ui/resultant-acl" {
capabilities = ["read"]
}
我知道我们可以选择查看我们对给定令牌的特定路径具有哪些功能
示例 - 使用命令 - vault token capabilities secret/foo
但是有没有一种方法可以识别我可以访问给定令牌的所有路径,并像任何功能一样读取、写入或更新。
我尝试通过保险库令牌查找来查找附加到我的令牌的策略。但我无法阅读该政策以了解我可以访问哪些路径。
vault token create -policy=read-policy -no-default-policy
Key Value
--- -----
token XXXXXXXXXXXXXXXXXXXXXXXX
token_accessor R3uPmiu30Hw8HgSbFcS3wkDJ
token_duration 768h
token_renewable true
token_policies ["read-policy"] ++++++++++++++++++++++++++++++++++++++++
identity_policies []
policies ["read-policy"]
使用令牌登录后,如果我尝试阅读该政策
vault policy read read-policy
Error reading policy named read-policy: Error making API request.
URL: GET http://127.0.0.1:8200/v1/sys/policies/acl/read-policy
Code: 403. Errors:
* 1 error occurred:
* permission denied
所以我们是否必须在创建读取策略 hcl 文件时包含 sys/policies/acl/read-policy 的读取功能?(即使我试过了,但此路径中的功能被拒绝。似乎只有 root 可以读取) 或者根据保险库设计,我们看不到我们可以访问哪些路径?除非金库管理员另有说明?或者我们有任何命令来获取该信息?
如有错误请指正
进一步深入挖掘 vault,我发现 this.We 的解决方案必须 运行 下面的命令会告诉我们什么路径我们有什么能力
vault read sys/internal/ui/resultant-acl --format=json|jq -r .data
{
"exact_paths": {
"auth/token/lookup-self": {
"capabilities": [
"read"
]
},
"sys/internal/ui/resultant-acl": {
"capabilities": [
"read"
]
},
"sys/mounts": {
"capabilities": [
"list"
]
}
},
"glob_paths": {
"sys/mounts/": {
"capabilities": [
"create",
"delete",
"list",
"read",
"sudo",
"update"
]
}
},
"root": false
}
因此,如果我们希望我们的令牌用户知道 path/capabilities 他们拥有什么,那么当我们创建策略时,我们必须包含对路径 sys/internal/ui/resultant-acl
的读取能力。例如,我已经创建了这个策略来管理秘密引擎,并且我已经包含了那个功能,以便将要使用映射到该策略的令牌的用户可以阅读他或她拥有的path/capability
cat /tmp/secrets-mgmt.hcl
path "sys/mounts/*" {
capabilities = ["create","read","update","delete","list","sudo"]
}
path "sys/mounts" {
capabilities = ["list"]
}
# Allow tokens to look up their own properties
path "auth/token/lookup-self" {
capabilities = ["read"]
}
# based on how the internal ACL features and capabilities change.
path "sys/internal/ui/resultant-acl" {
capabilities = ["read"]
}