对于给定的令牌,如何识别可以使用 hashcorp vault 中的哪些功能访问哪些路径?

Posted

技术标签:

【中文标题】对于给定的令牌,如何识别可以使用 hashcorp vault 中的哪些功能访问哪些路径?【英文标题】:How to identify what paths can be accessed with what capabilities in hashicorp vault for a given token? 【发布时间】:2022-01-10 23:58:28 【问题描述】:

我知道我们可以选择查看对于给定令牌的特定路径我们拥有哪些功能

示例 - 使用命令 - 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 可以读取) 或者根据保险库设计,我们看不到我们可以访问哪些路径?除非保险库管理员另有说明?或者我们有什么命令可以获取这些信息?

如果我错了,请纠正我

【问题讨论】:

【参考方案1】:

进一步深入了解保险库,我找到了解决方案。我们必须运行以下命令,这将为我们提供哪些路径我们有哪些功能

保管库读取 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
    

因此,如果我们希望我们的令牌用户知道他们拥有什么路径/能力,那么当我们创建策略时,我们必须将读取能力包括到路径 sys/internal/ui/resultant-acl。示例我创建了此策略仅用于管理机密引擎,并且我已包含该功能,以便将使用映射到该策略的令牌的用户可以读取他或她拥有的路径/能力

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"]

【讨论】:

以上是关于对于给定的令牌,如何识别可以使用 hashcorp vault 中的哪些功能访问哪些路径?的主要内容,如果未能解决你的问题,请参考以下文章

如何识别 OAuth 令牌是不是已过期?

Terraform:无法删除已弃用的 hashcorp/azure 提供程序

如何识别OAuth令牌是否已过期?

如何识别刷新令牌 API 的完整响应体?

如何使用访问和刷新令牌返回自定义数据以识别 Django Rest Framework 简单 JWT 中的用户?

JSON Web 令牌 - 如何识别用户?