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

Rego多属性规则编写:客户端账号端点权限校验实现

问题原因
  • 层级访问错误:你当前的规则直接在clientaccount_endpoints数组的第一层元素上取Action、Resource字段,但参考数据结构里这两个字段嵌套在每个账号对象的Endpoints子数组中,直接访问会拿到undefined,永远无法匹配成功。
  • 大小写不匹配:参考数据中存储的ClientId为首字母大写的Bob,输入参数传入的clientaccount为全小写的bob,直接做等值比较会判定为不相等。
正确规则代码
clientaccount_entitled {
    some i, j
    # 匹配目标客户端账号,统一转小写消除大小写差异影响
    lower(data.clientaccount_endpoints[i].ClientId) == lower(input.clientaccount)
    # 遍历该账号下的端点列表,匹配权限
    target_endpoint := data.clientaccount_endpoints[i].Endpoints[j]
    target_endpoint.Action == input.action
    target_endpoint.Resource == input.resource
}
逻辑说明
  • 声明两个索引i、j,分别用于遍历外层的客户端账号数组、内层的端点权限数组
  • 若业务侧保证账号ID大小写严格一致,可以去掉lower()函数,直接做等值匹配即可
  • 规则只要找到任意一条同时满足账号匹配、Action匹配、Resource匹配的记录,就会返回true,符合权限校验的预期逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:01:04