0

请帮我写一个关于rego的规则,它返回一个转换后的对象。

我的对象:

{
  "read": [
    "server1",
    "server2"
  ],
  "write": [
    "server2",
    "server3"
  ],
  "create": [
    "server1",
    "server2",
    "server3"
  ]
}

预期的:

{
  "server1": [
    "read",
    "create"
  ],
  "server2": [
    "read",
    "write",
    "create"
  ],
  "server3": [
    "write",
    "create"
  ]
}

我知道我需要使用理解,但我不明白如何

4

1 回答 1

1

TLDR;您可以使用推导来执行分组操作。在这种情况下,您希望按服务器对操作进行分组。

operations_by_server := {server: operations | 
  server := input[_][_]
  operations := {op |
    some op
    server == input[op][_]
  }
}

这是一个交互式版本:https ://play.openpolicyagent.org/p/y5ldvjvmfK

有关理解的更多信息:https ://www.openpolicyagent.org/docs/latest/policy-language/#comprehensions

附带说明一下,如果您想了解有关 Rego 的更多信息,请查看在线课程。免责声明:我为制作课程的公司工作。

于 2021-09-17T19:42:46.890 回答