Разработчики Kaspersky Container Security (KCS) сравнили движки политик Rego и CEL для защиты Kubernetes. При выборе учитывались скорость работы и модель угроз, так как движок находится на критическом пути обработки запросов. Rego, будучи декларативным языком, требует собственной виртуальной машины, что на сложных политиках приводит к задержкам в десятки миллисекунд.

Тесты показали, что CEL эффективнее Rego по скорости и потреблению памяти. На крупных объектах CEL выполняет проверку за 24 мкс, тогда как Rego тратит 3,84 мс. Команда KCS пришла к выводу, что для их задач, требующих быстрого ответа true или false, CEL подходит лучше благодаря C-подобному синтаксису и интеграции с Kubernetes API.

Решающим фактором стала безопасность. Rego является Тьюринг-полным языком, что создает риски извлечения секретов с worker-нод при компрометации системы. CEL не является Тьюринг-полным, что ограничивает возможности злоумышленника. Для защиты от посимвольного подбора секретов в KCS заблокированы функции matches, startsWith и endsWith при проверке файлов.

Для предотвращения атак через функцию contains в KCS к искомому значению принудительно добавляется символ конца строки. Это делает невозможным подбор секретов по частям, так как правило срабатывает только при совпадении всей строки целиком. Дополнительно система фиксирует повторные применения правил в SIEM-системе для выявления попыток несанкционированного доступа.