首页 > 解决方案 > 从开放策略代理 (OPA) 查询中传回一个值

问题描述

我不想查看谁可以访问什么,而是想设置策略来返回每秒允许多少个连接,或者允许多少带宽。如何定义我的策略以返回值而不是 true/false?

标签: policyopen-policy-agentrego

解决方案


完整的规则只是将 VALUE 分配给 VARIABLE 的 if-then 语句。当 VALUE 被省略时,它是隐式的true

allow { input.method == "GET" }

相当于:

allow = true { input.method == "GET" }

没有什么特别allowtrue。您可以类似地定义一个设置每秒连接数限制的规则:

connections_per_second = 7 { input.tier == "gold" }

如果您有多个定义,请注意只有一个可以成功(否则 OPA 将引发冲突错误)。您需要解决政策内部的冲突。有不同的处理方式,例如default,、、else否定等。


推荐阅读