Какой ключ `location` в выражении набора результатов opa rego? Могу ли я получить во входном json местоположения, которые привели к нарушению политики?
Я использую пакет go rego, и rego.ResultSet при сортировке дает следующее:
[
{
"expressions": [
{
"value": {...},
"text": "data",
"location": { "row": 1, "col": 1 }
}
]
}
]
Я намерен вывести местоположение (я) во входном JSON, где ключи были ответственны за сбои, чтобы я мог использовать это при построении контекста для ошибок. Ранее мы использовали схему JSON для проверки JSON, и она использовалась для возврата ключей из входных данных, которые мы может отображать с ошибками. https://www.jsonschemavalidator.net/
Я полагаю, что поскольку rego может поддерживать принятие гораздо более сложных решений, когда за окончательный результат будет отвечать более одного ключа, это может быть причиной того, что он не будет указывать на место во входных данных для контекста сбоя. если я ничего не упускаю?
1 ответ
Чтобы ответить на первый вопрос:
Каждое значение, проанализированное OPA, сохраняет информацию о "местоположении", определяющую его происхождение в исходной строке / файле. Местоположение в ResultSet - это местоположение выражения в запросе, которое было передано при созданииrego.Rego
объект.
В вашем случае запрос был "data"
, т.е. вы сослались на ВСЕ документы в OPA (как базовые документы, которые могли быть загружены извне, так и виртуальные документы, сгенерированные любыми правилами, которые вы загрузили в OPA). Расположение выражения в этом случае не очень интересно: строка 1, столбец 1.
Чтобы ответить на ваш второй вопрос:
OPA в настоящее время не имеет надежного способа возврата местоположения значений JSON во входных данных, однако это то, что было бы ценным и могло бы быть добавлено в будущем.