Об этом проекте
# Nirmata Runtime для Kyverno
Nirmata Runtime — это инструмент безопасности на уровне ядра Kubernetes, который использует eBPF для мониторинга и принудительного применения поведения рабочих нагрузок на уровне ядра. Он работает как DaemonSet на каждом узле, подключая eBPF-программы к подам, выбранным кластерным пользовательским ресурсом `RuntimePolicy`.
## Основные возможности
`RuntimePolicy` управляет пятью типами поведения рабочих нагрузок:
1. **Открытие файлов** — какие файлы открывает процесс
2. **Выполнение бинарных файлов** — какие бинарники он выполняет
3. **Сетевые назначения** — куда отправляется трафик
4. **Прикладные протоколы** — какие протоколы используются
5. **DNS-резолвинг** — какие доменные имена разрешаются
Решения принимаются в ядре, поэтому запрещенные операции никогда не завершаются. Это дополняет контроллеры допуска, такие как Kyverno, которые проверяют спецификации подов до запуска, обеспечивая фактическое поведение во время выполнения.
## Ключевые особенности
- **Режимы принуждения или мониторинга**: Политики могут блокировать операции (`mode: enforce`) или просто сообщать о находках (`mode: monitor`), с настройкой на уровне политики.
- **Правила на основе CEL**: Использует Common Expressions Language (CEL) с библиотеками Kyverno, поддерживая литеральные значения, выражения и переиспользуемые переменные.
- **Запрет по умолчанию с разрешающими списками**: Установите `deny.values: ["*"]`, чтобы переключить поведение на запрет-все-кроме-разрешенного.
- **Нативный вывод в Kubernetes**: Результаты записываются как объекты `Report` OpenReports в пространстве имен пода, с условиями статуса на узле и счетчиками Prometheus.
- **Ограничение по селекторам**: Политики могут нацеливаться на поды и пространства имен через селекторы меток, в масштабе кластера.
- **Периодическая повторная оценка**: `evaluationInterval` повторно запускает выражения политик, чтобы поддерживать актуальность внешних списков запрещенных.
## Быстрый старт
Установка через Helm:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
Пример: блокировка конкретного IP-адреса для пода:
```yaml
apiVersion: runtime.nirmata.io/v1alpha1
kind: RuntimePolicy
metadata:
name: block-address-sample
spec:
mode: enforce
podSelector:
matchLabels:
app: egress-client
behaviors:
- network:
deny:
values:
- "8.8.8.8"
```
## Ограничения (до версии 1.0)
- Исходящий трафик поддерживает только IPv4; литералы IPv6 не поддерживаются.
- Принудительное применение открытия файлов и выполнения требует активного BPF-LSM в ядре (параметр загрузки `lsm=`).
- Наблюдения за сетью, протоколами, открытием и выполнением опрашиваются из счетчиков eBPF, поэтому результаты могут задерживаться и содержать счетчики, а не порядок. DNS-запросы передаются в реальном времени.
- Исключения пока не поддерживаются.
## Документация
Включает краткое руководство, концепции, установку, поддержку платформ (EKS, GKE, AKS, Bottlerocket), примеры, обнаружение скрытого ИИ, устранение неполадок и справочную документацию для CRD RuntimePolicy, CEL-выражений и метрик.
## Лицензия
Apache License 2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.