cel-go: оценка выражений по сохраненным данным
Я рассматриваю cel-go как кандидата на использование его в качестве механизма политики. Я хочу иметь возможность оценивать выражение по сохраненным данным, например: users.json
{
"идентификатор пользователя": "пользователь1",
"org": "org1",
"роль": "администратор"
}
resources.json
{
"resourceid": "r1",
"org": "org1",
}
и мой запрос на ввод будет: (Пользователь, запрашивающий доступ к ресурсу)
input_request.json
{
"идентификатор пользователя": "пользователь1",
"ресурс": "r1",
"доступ": "читать"
}
Итак, выражение, которое я хочу оценить: (псевдо)
stored_user = getUser [input_user_id] // getUser fromusers.json stored_resource = getResource [input_resource_id] // getResource из resources.json
Если (stored_user.org == stored_resource.org) И stored_user.role=="admin", то "разрешить" иначе "запретить"
Это легко сделать с помощью механизма политик OPA. Как я могу использовать переменные stored_user и stored_resource в выражениях cel?