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

如何在Rego策略输出中隐藏my_cats对象,仅保留cats结果?

如何隐藏Rego输出中的指定对象

我创建了一个Rego策略,但希望输出中只保留cats结果,隐藏my_cats对象。

示例Rego代码:

package cats

default cats := false

cats{
input.cat == my_cats[_]}

my_cats:= {
"Pumpkin Spice",
"Dr Meow"
}

输入内容:

{
    "cat": "Pumpkin Spice"
}

当前输出:

{
    "cats": true,
    "my_cats": [
        "Dr Meow",
        "Pumpkin Spice"
    ]
}

需求:输出仅保留cats字段,隐藏my_cats。试过mask功能但没用,因为它只适用于input内容。


可行解决方法

1. 直接筛选输出路径

在执行OPA评估时,指定只输出data.cats而非整个包的内容。比如用命令行的话:

opa eval -i input.json -d policy.rego 'data.cats'

如果需要结构化的JSON输出,可以改成:

opa eval -i input.json -d policy.rego --format pretty '{"cats": data.cats}'

2. 将my_cats设为私有规则

Rego中以下划线开头的规则属于私有规则,不会被包含在输出的data对象里。修改代码如下:

package cats

default cats := false

cats{
input.cat == _my_cats[_]}

_my_cats:= {
"Pumpkin Spice",
"Dr Meow"
}

这样再评估整个包时,输出就只会有cats字段,_my_cats不会出现在结果中。

3. 用输出过滤配置

如果是通过OPA API或者集成工具调用,可以通过过滤参数来指定只保留需要的字段。比如API请求添加?filter=data.cats参数,或者在配置里设置输出白名单,只允许cats字段输出。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:55:02