对于给定令牌,如何确定可以使用 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"]
}