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

如何在Open Policy Agent(OPA)查询中返回自定义数值而非布尔值

OPA返回自定义数值的策略定义方案

OPA的Rego规则本身支持返回任意类型的结果,不局限于鉴权场景的布尔值,你可以按以下方式定义策略返回连接数、带宽额度等数值:

  • 放弃传统鉴权场景下的allow布尔规则写法,直接将需要返回的数值作为规则的输出值即可。你可以针对每个指标单独定义规则,也可以打包成对象统一返回,示例策略如下:
package resource_limit

# 定义每秒允许的连接数规则
connection_per_second := 50 {
    input.user.tier == "basic"
}
connection_per_second := 500 {
    input.user.tier == "enterprise"
}

# 定义带宽额度规则(单位Mbps)
bandwidth_quota := 100 {
    input.user.tier == "basic"
}
bandwidth_quota := 2000 {
    input.user.tier == "enterprise"
}

# 也可以将所有指标打包成一个对象统一返回
limit_config := {
    "connection_per_second": connection_per_second,
    "bandwidth_quota": bandwidth_quota
}

# 兜底默认值配置:未匹配到任何规则时返回的数值
default connection_per_second := 10
default bandwidth_quota := 20
  • 调用OPA查询时,指定对应的规则路径即可拿到数值结果,比如查询data.resource_limit.limit_config,OPA会直接返回包含两个数值的JSON对象,不会返回布尔结果。

提示:如果同一条规则存在多个赋值条件,OPA会自动匹配所有满足input参数的条件返回对应数值,不需要额外写分支判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 16:15:04