You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在HCL模板中限制Vault策略名称:Kubernetes角色权限拒绝报错

Vault策略限制K8s认证角色关联指定策略时的权限拒绝问题修复

问题场景

要创建一条Vault策略,允许指定实体创建Kubernetes认证角色,且角色仅能关联kubernetes/default策略。使用的HCL策略如下:

path "auth/kubernetes/role/{{identity.entity.aliases.auth_jwt_lll.metadata.project_id}}" {
  capabilities = ["read","delete", "list", "patch", "update","create"]
  
  allowed_parameters = {
    policies = ["kubernetes/default"]
    bound_service_account_names = []
    bound_service_account_namespaces = []
    ttl = []
  }
}

该策略语法无问题,但保留policies = ["kubernetes/default"]配置时,调用创建K8s角色接口会触发权限拒绝错误:

File "/usr/local/lib/python3.11/site-packages/hvac/adapters.py", line 294, in _raise_for_error
    utils.raise_for_error(
File "/usr/local/lib/python3.11/site-packages/hvac/utils.py", line 41, in raise_for_error
    raise exceptions.VaultError.from_status(
hvac.exceptions.Forbidden: 1 error occurred:
    * permission denied
, on post https://my.local:443/v1/auth/kubernetes/role/2751

移除"kubernetes/default"配置后策略可正常工作,认证方式为GitLab CI生成的JWT令牌,已完成Vault OIDC/JWT集成。

原因分析

当在Kubernetes认证角色中指定关联策略(如kubernetes/default)时,Vault会验证执行操作的令牌是否拥有对该策略的读取权限。当前策略仅授权了K8s角色路径的操作权限,未包含对目标策略的读取权限,因此触发权限拒绝。

另外需注意:allowed_parameters中policies的配置要求传入的参数格式严格匹配——如果创建角色时传入的是字符串形式的单策略(如policies="kubernetes/default"),需将策略中的配置改为policies = "kubernetes/default";如果传入的是数组形式(如policies=["kubernetes/default"]),则保持数组配置即可。

修复后的策略

添加对kubernetes/default策略路径的读取权限,并确保allowed_parameters的格式匹配实际传入参数:

# 新增:允许读取指定策略
path "sys/policies/acl/kubernetes/default" {
  capabilities = ["read"]
}

path "auth/kubernetes/role/{{identity.entity.aliases.auth_jwt_lll.metadata.project_id}}" {
  capabilities = ["read","delete", "list", "patch", "update","create"]
  
  allowed_parameters = {
    # 根据实际传入格式调整:数组或字符串
    policies = ["kubernetes/default"]
    bound_service_account_names = []
    bound_service_account_namespaces = []
    ttl = []
  }
}

验证步骤

  1. 更新Vault策略并应用
  2. 使用对应令牌调用创建K8s角色接口,传入policies=["kubernetes/default"](或匹配配置的格式)
  3. 确认接口成功执行,无权限拒绝错误

内容的提问来源于stack exchange,提问作者winter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 22:04:55