Описание тега rego

Rego - это язык запросов. Чтобы принять политическое решение в Rego, вы пишете логические тесты для данных, которые поступают в качестве входных (таких как данные API или SSH из последнего раздела).
1 ответ

Как запретить просмотр / получение операции в openshift с помощью открытой политики?

Мы хотим отключить oc get/describe за secrets чтобы предотвратить вход по токену Текущая политика запрещает создание, обновление, удаление, но не просмотр секретов package admission import data.k8s.matches # Deny all user for doing secret ops except…
14 дек '19 в 06:21
2 ответа

Используйте rego для сравнения значений до и после из списка входов

Когда я запускаю следующее, я могу сравнить значения параметра instance_class и подсчитать количество расхождений: modifies_instance_class[resource_type] = num { some resource_type resource_types[resource_type] all := resources[resource_type] modifi…
03 янв '20 в 16:20
1 ответ

Rego: как указать отсутствие любого из нескольких условий

Как я могу подтвердить наличие двух отдельных ключей в Rego для OPA? В настоящее время я используюnot оператор так: deny["Containers must specify readiness and liveness probes"] { not container.readinessProbe not container.livenessProbe } Однако это…
28 янв '20 в 21:14
1 ответ

Какой ключ `location` в выражении набора результатов opa rego? Могу ли я получить во входном json местоположения, которые привели к нарушению политики?

Я использую пакет go rego, и rego.ResultSet при сортировке дает следующее: [ { "expressions": [ { "value": {...}, "text": "data", "location": { "row": 1, "col": 1 } } ] } ] Я намерен вывести местоположение (я) во входном JSON, где ключи были ответст…
28 апр '20 в 09:47
1 ответ

Порядок оценки оператора функции OPA Rego

package play exists(obj, a) { obj[a] } hello { exists(input, "department") contains(input["location"], "London") } world { contains(input["location"], "London") exists(input, "department") } input = { "Department": "Eng", "location": "London" } Прив…
10 фев '20 в 12:44
1 ответ

Агент открытой политики определяет динамическую глобальную переменную

Мне было интересно, есть ли способ приукрасить мой код, поскольку он выглядит ужасно неэффективным и совершенно не СУХИМ. Я пытаюсь вытащить определенный ресурс из списка ресурсов (ресурс с именем "aks" из плана терраформирования) и запустить для не…
14 июн '20 в 13:01
0 ответов

Поддержка символов UTF-8 в политиках / правилах Rego

Я новичок в OPA и Rego, оцениваю OPA для одного из своих приложений. Мое приложение поддерживает локализацию и несколько языков. Один из них - простой китайский. Когда я попытался оценить простое правило Rego, состоящее из нескольких простых китайск…
10 июл '20 в 20:21
1 ответ

Как сделать HTTP-запрос GET в Rego

Я хочу сделать запрос на получение URL в rego. Но он вызывает Invalid parameter: unallowed built-in function call in rego module: http.send error Вот мой код. package play default hello = false hello { response := http.send({ "method" : "GET", "url"…
16 дек '19 в 14:39
2 ответа

Продукт массива с динамическим числом аргументов

У меня есть функция, которая выполняет массив: arrayProduct(l1,l2,l3) = [[a, b, c] | a := l1[_] b := l2[_] c := l3[_] ] Если у меня есть три массива, определенные следующим образом: animals1 = ["hippo", "giraffe"] animals2 = ["lion", "zebra"] animal…
30 апр '20 в 01:02
3 ответа

Сравните два массива на языке Rego

violation[{"msg": msg}] { required:= ["red", "green", "blue"] input := ["orange", "purple"] msg := sprintf("") } Я хочу сравнить каждое значение из входного массива в требуемом массиве. В других языках это делают два обычных цикла. но на языке Rego …
16 июн '20 в 13:28
1 ответ

Время OPA PrepareForEval увеличивается экспоненциально

Мне нужно, чтобы мое приложение могло загружать политики (rego), а затем оценивать входной JSON на основе определенных политик. Я по ошибке использовал PrepareForEvalв моем оценочном API вместо API политики загрузки. Результат меня удивил, поскольку…
22 июн '20 в 12:33
1 ответ

агент открытой политики - false vs none

Пытаюсь понять концепцию лжи в OPA. Моя ситуация такова - мне нужно проверить, все ли облачные ресурсы находятся в разрешенных регионах AWS. Что у меня сейчас есть: allowed_locations := ["eastus", "westus"] exists(array, value) {…
14 июл '20 в 12:21
1 ответ

helm доступ к файлам rego внутри шаблонов

Я следующий пример, упомянутый в https://helm.sh/docs/chart_template_guide/accessing_files/. Я могу загружать файлы toml в configmap, но когда я использую файлы rego, я получаю сообщение об ошибке: cat multiple_config.yaml apiVersion: v1 kind: Confi…
31 июл '20 в 23:35
1 ответ

Оценка нескольких файлов из папки с помощью команды opa eval

Я видел это на веб-сайте OPA и мог бы использовать следующее: Оценить политику в командной строке../opa eval -i input.json -d example.rego В моем случае у меня есть несколько входных файлов, и я изменил его на ./opa eval -i /tmp/tfplan.json -d /tmp/…
17 авг '20 в 18:38
1 ответ

Rego testing: как проверить "не отрицать"?

Я изучаю возможность тестирования своих политик Rego, используя opa test начиная с этого тривиального правила: deny["Must be allowed"] { input.allowed == "no" } Я могу успешно проверить это в случае, когда это отрицается: test_denied_example { deny …
05 фев '20 в 23:40
1 ответ

Rego object.get с многоуровневым ключом

Есть ли способ использовать object.get с многоуровневым ключом..? Мой ввод выглядит так:{ "pipelineParameters" : { "k8" : { "NODES" : "1" }, "ec2": { "NODES" : "0" } } мои данные выглядят как { "key": "pipelineParameters.k8.NODES" } Как получить зна…
07 мар '20 в 00:40
1 ответ

Создайте набор из цепочки элементов в Rego

Как создать набор из строки на языке Rego Open Policy Agent? У меня есть строка таких элементов, как "values": "pvc-volume,emptydir-volume,hostPath,ConfigMaps" какие элементы необходимо проверить на соответствие заданному набору допустимых значений …
02 май '20 в 13:44
1 ответ

Параметры в правилах Rego [Open Policy Agent]

Как использовать параметры в правилах Rego? У меня было бы что-то вроде этого: deny[reason] { input.request.kind.kind == "Route" not valid_route_request[label] reason := sprintf("missing or wrong router selector label: %v", [label]) } valid_route_re…
03 май '20 в 20:15
1 ответ

Агент открытой политики удовлетворяет условию для всех элементов массива

Пытаюсь на время осмыслить эту проблему - у меня есть вход JSON, содержащий массив, скажем что-то вроде этого: { "array" : [ {"foo": "bar"}, {"foo": "buzz"}, {"misbehaving": "object"} ] } Моя цель - убедиться, что все объекты в массиве удовлетворяют…
19 май '20 в 18:18
1 ответ

Агент открытой политики - явное логическое И в конвейере CI

Я пытаюсь написать политику, которая регулирует совместимость имени пользователя администратора, которая состоит из трех правил: буквенно-цифрового значения, а не части запрещенных имен (администратор, администратор и т. Д.) И длиннее 5 символов. Я …