金库机密访问被拒绝

问题描述 投票:0回答:1

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

我使用的结构是

secret/k8s/<k8s-namespace>/<appname>

例如

secret/k8s/bex/app1

enter image description here

我已经尝试过这样的 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" ]}
kubernetes hashicorp-vault
1个回答
2
投票

TL;博士:

这是因为当您向秘密授予 access 时,您需要在秘密后端之后使用

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

更多内容请参见官方文档

© www.soinside.com 2019 - 2024. All rights reserved.