我是新的保险库,并试图保护数据根据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" ]}发布于 2020-11-16 11:47:21
TL;DR:
这是因为在授予对秘密的访问权限时,需要在秘密后端之后使用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"]
}更多在官方博士。
https://stackoverflow.com/questions/64575448
复制相似问题