OPA Rego规则中sprintf函数不生效,求问具体错误原因
问题排查结果
错误原因
- Rego的
sprintf函数要求第二个入参必须是数组类型,用来按顺序匹配格式化字符串中的所有占位符。你当前直接将input.spec.user字符串作为第二个参数传入,没有用数组包裹,触发了参数类型不匹配的报错。
修正后的Rego策略代码
package cs deny[reason] { input.spec.resourceAttributes.namespace == "sveltos" # 第二个参数改为数组类型,包裹要填充的变量 reason := sprintf("OPA: User (%v) must belong to valid group", [input.spec.user]) }
运行结果
使用你提供的输入参数运行修正后的规则,会正常生成deny原因:OPA: User (jane) must belong to valid group,符合预期逻辑。
内容的提问来源于stack exchange,提问作者Satish Burnwal
相关产品推荐
相关产品推荐

