从 Open Policy Agent (OPA) 查询传回一个值

Pass back a value from Open Policy Agent (OPA) query

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

Complete rules 只是将 VALUE 分配给 VARIABLE 的 if-then 语句。当省略 VALUE 时,它隐式为 true:

allow { input.method == "GET" }

相当于:

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

虽然 allowtrue 没有什么特别之处;您可以类似地定义一个规则来设置每秒连接数限制:

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

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