【问题标题】:How to get HashiCorp Vault policy right?如何正确获取 HashiCorp Vault 政策?
【发布时间】:2020-08-13 23:02:27
【问题描述】:

情况如下:我创建了一个用户

vault write auth/userpass/users/'username' password='password' policies=default

带有默认策略添加路径

"secret/db_pass/*" {
  capabilities = ["create","read","delete","update","list"]
} 

默认政策中。但是,当我尝试访问 secret/ 时,我 收到错误 'You don't have access to secret/, 尽管我已在策略文件中添加了权限。

我做错了吗?可以请一些温柔的灵魂帮忙吗?如果需要任何其他信息,请告诉我。

【问题讨论】:

  • 尝试阅读策略(保险库策略读取 xxx)并确保您更新了正确的功能
  • 是的。 “保险库策略读取默认值”它具有正确的功能。路径 "secret/db_pass/*" { 能力 = ["create", "read", "delete", "update", "list"] }
  • 也许尝试添加新策略并将其添加给用户。尝试为用户获取令牌并执行令牌查找以确保您具有正确的功能
  • 似乎策略结构已更改。这就是我现在实现它的方式: path "secret/*" { capabilities = ["list"] } path "secret/data/db_pass" { capabilities = ["create", "read", "delete", "update ", "列表"] }
  • 如果你猜对了,请写一个答案并设置为正确的答案:)

标签: hashicorp-vault


【解决方案1】:

在 KV v2 中,您需要在第二个策略中的 secret/ 之后添加 data/

您还需要在第一个策略中的secret/ 之后添加*

所以 Ashit 的解决方案是:

path "secret/*" {
capabilities = ["list"]
}

path "secret/data/db_pass/*" 
{ 
 capabilities = ["create","read","delete","update","list"] 
}   

【讨论】:

  • 似乎 secret/data/db_pass/* 删除策略提供了删除密钥中的密钥而不是密钥本身的功能。因此,为了能够删除机密,您必须在第二个策略的路径中使用元数据添加两次相同的策略: * path "secret/metadata/db_pass/*" { capabilities = ["create","re​​ad","delete", "更新","列表"] } *
【解决方案2】:

不确定,但似乎政策结构已更改。为了访问“secret/db_pass/”,您应该有权访问 secret/ 本身。所以,我通过 2 个策略来实现它。一个可以访问 secret/,另一个可以访问 secret/db_pass/

path "secret/" {
  capabilities = ["list"]
}

path "secret/db_pass/*" 
    { capabilities = ["create","read","delete","update","list"] 
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2020-01-29
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多