Sobre el proyecto
# Nirmata Runtime para Kyverno
Nirmata Runtime es una herramienta de seguridad en tiempo de ejecución nativa de Kubernetes que utiliza eBPF para monitorear y aplicar el comportamiento de las cargas de trabajo a nivel del kernel. Opera como un DaemonSet por nodo, adjuntando programas eBPF a pods seleccionados por un recurso personalizado `RuntimePolicy` con alcance de clúster.
## Capacidades principales
El `RuntimePolicy` gobierna cinco tipos de comportamiento de las cargas de trabajo:
1. **Aperturas de archivos** – qué archivos abre un proceso
2. **Ejecución de binarios** – qué binarios ejecuta
3. **Destinos de red** – a dónde envía tráfico
4. **Protocolos de aplicación** – qué protocolos utiliza
5. **Resoluciones DNS** – qué nombres de dominio resuelve
Las decisiones se toman en el kernel, por lo que las operaciones denegadas nunca se completan. Esto complementa a los controladores de admisión como Kyverno, que validan las especificaciones de los pods antes del inicio, aplicando el comportamiento real en tiempo de ejecución.
## Características clave
- **Modos de aplicación o monitoreo**: Las políticas pueden bloquear operaciones (`mode: enforce`) o simplemente reportar hallazgos (`mode: monitor`), con configuración por política.
- **Reglas impulsadas por CEL**: Utiliza el Lenguaje de Expresiones Comunes (CEL) con las bibliotecas de Kyverno, admitiendo valores literales, expresiones y variables reutilizables.
- **Denegación predeterminada con listas de permitidos**: Establece `deny.values: ["*"]` para cambiar un comportamiento a denegar-todo-excepto-permitido.
- **Salida nativa de Kubernetes**: Los hallazgos se escriben como objetos `Report` de OpenReports en el namespace del pod, con condiciones de estado por nodo y contadores de Prometheus.
- **Alcance mediante selectores**: Las políticas pueden apuntar a pods y namespaces mediante selectores de etiquetas, en todo el clúster.
- **Reevaluación periódica**: `evaluationInterval` re-ejecuta las expresiones de política para mantener actualizadas las listas de denegación de fuentes externas.
## Inicio rápido
Instala mediante Helm:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
Ejemplo: Bloquear una dirección IP específica para un pod:
```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"
```
## Limitaciones (Pre-1.0)
- El tráfico de salida es solo IPv4; no se admiten literales IPv6.
- La aplicación de apertura de archivos y ejecución requiere BPF-LSM activo en el kernel (parámetro de arranque `lsm=`).
- Las observaciones de red, protocolo, apertura y ejecución se consultan desde contadores eBPF, por lo que los hallazgos pueden retrasarse y llevar conteos en lugar de orden. Las consultas DNS se transmiten en tiempo real.
- Las excepciones aún no son compatibles.
## Documentación
Incluye inicio rápido, conceptos, instalación, soporte de plataformas (EKS, GKE, AKS, Bottlerocket), ejemplos, detección de IA en la sombra, solución de problemas y documentos de referencia para el CRD RuntimePolicy, expresiones CEL y métricas.
## Licencia
Licencia Apache 2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.