拒绝访问保管库机密

Access Denied on vault secrets

我是 vault 的新手,正在尝试根据 pod 所在的 k8s 命名空间来保护数据。我已经对身份验证部分进行了排序,但我无法创建一个 ACL 让客户端在不泄露的情况下读取机密所有 个秘密

我使用的结构是secret/k8s/<k8s-namespace>/<appname>

例如secret/k8s/bex/app1

我已经尝试过这样的 ACL 策略,但没有 secret/* 我被拒绝访问,并且 secret/* 客户端可以看到所有内容,事件路径与 bex 相邻。

我做错了什么?

# Without this, I cannot access anything
#path "secret/*" { capabilities = [ "read", "list" ]}

path "secret/k8s/bex*" { capabilities = [ "read", "list" ]}
path "secret/k8s/bex/*" { capabilities = [ "read", "list" ]}
path "secret/k8s/bex/app1" { capabilities = [ "read", "list" ]}
path "secret/k8s/bex/app1/*" { capabilities = [ "read", "list" ]}
path "secret/k8s/bex/app1*" { capabilities = [ "read", "list" ]}

长话短说:

这是因为当您向机密授予 访问权 时,您需要在机密后端之后使用 data 路径。在你的情况下:secret/data/k8s/bex/app1

长版:

如果您使用的是旧的(已弃用的)KV1 版本,那么您的政策如下所示:

path "secret/dev/team-1/*" {
  capabilities = ["create", "update", "read"]
}

如果(我假设)您正在使用新的 KV2 秘密引擎(默认),那么阅读版本会以 data/ 路径为前缀。

path "secret/data/dev/team-1/*" {
  capabilities = ["create", "update", "read"]
}

更多内容在 Official Docs