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