Hashicorp Vault-限制路径中一个特定子节点的策略

Hashicorp Vault-限制路径中一个特定子节点的策略

我配置了一个 Hashicorp Vault 服务器,除了我的“拒绝”策略之外,一切运行良好。

我对大多数秘密进行了两级分组,因此它们遵循以下结构:

secret/client/environment/*

并非所有秘密都遵循客户端/环境结构,但对于那些遵循的秘密,我有一个“受限”节点,我不希望此策略的用户能够访问。

根据上述要求,我最终制定了如下政策:

# Allow access to non client / environment secrets
path "secret/"
{
  capabilities = ["create", "read", "update", "list"]
}

path "secret/+/"
{
  capabilities = ["create", "read", "update", "list"]
}

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

# No access to restricted secrets
path "secret/+/+/restricted"
{
  capabilities = ["deny"]
}

path "secret/+/+/restricted/*"
{
  capabilities = ["deny"]
}

如果我使用该策略创建一个令牌并在“vault token capabilities”命令中使用该令牌,它将返回我期望的内容:

$vault token capabilities $(cat token.txt) secret/client/environment/blah
create, list, read, update

$vault token capabilities $(cat token.txt) secret/client/environment/restricted
deny

$vault token capabilities $(cat token.txt) secret/client/environment/restricted/blah
deny

问题在于,当我使用该令牌登录时,我不仅可以列出受限节点的内容,还可以获取其中任何密钥的详细信息(在下面的所有级别)。通过 CLI 和 Web UI 都是如此。

我确实尝试了一个更简单的策略,即允许 secret/* 然后拒绝 secret/+/+/restricted/*,但这甚至无法与“vault token capabilities”命令正确配合使用。

当我使用令牌登录时,它显示正确的策略(以及默认策略,但默认策略没有对 secret/ 的权限)。

secret/ 设置为 kv 存储,因此我使用“vault kv list|get ...”通过 CLI 访问它们

我是否需要采取其他步骤来对登录用户“强制”执行策略规则?

答案1

事实证明,由于我使用 KV v2 后端进行秘密存储,因此策略结构略有不同。

我最终不得不指定秘密/元数据/ 列出权限和机密 /数据/ 用于创建/更新/读取

例如:

# Allow listing of all secret branches
path "secret/metadata/"
{
  capabilities = ["list"]
}
path "secret/metadata/+/"
{
  capabilities = ["list"]
}

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

# Allow management of all keys under secret/<client>/<environment> structure
path "secret/data/+/+/+"
{
  capabilities = ["create", "read", "update"]
}

并且,不是在受限节点上放置“拒绝”,因为该级别的唯一其他节点(目前)是“不受限制”节点,因此我添加了:

path "secret/metadata/+/+/unrestricted/"
{
  capabilities = ["list"]
}

path "secret/data/+/+/unrestricted/*"
{
  capabilities = ["create", "read", "update"]
}

由于 Vault 策略默认是拒绝的,因此这产生了预期的效果。

我在以下位置找到了 KV2 策略设置的详细信息:https://www.vaultproject.io/docs/secrets/kv/kv-v2.html#acl-rules

相关内容