Sobre o projeto
# Nirmata Runtime Para Kyverno
Nirmata Runtime é uma ferramenta de segurança em tempo de execução nativa do Kubernetes que usa eBPF para monitorar e impor o comportamento de cargas de trabalho no nível do kernel. Ela opera como um DaemonSet por nó, anexando programas eBPF a pods selecionados por um recurso personalizado `RuntimePolicy` com escopo de cluster.
## Capacidades Principais
O `RuntimePolicy` governa cinco tipos de comportamento de carga de trabalho:
1. **Aberturas de arquivos** – quais arquivos um processo abre
2. **Execução de binários** – quais binários ele executa
3. **Destinos de rede** – para onde ele envia tráfego
4. **Protocolos de aplicação** – quais protocolos ele fala
5. **Resoluções DNS** – quais nomes de domínio ele resolve
As decisões são tomadas no kernel, então operações negadas nunca são concluídas. Isso complementa controladores de admissão como Kyverno, que validam especificações de pods antes da inicialização, impondo o comportamento real em tempo de execução.
## Principais Recursos
- **Modos de impor ou monitorar**: Políticas podem bloquear operações (`mode: enforce`) ou simplesmente relatar descobertas (`mode: monitor`), com configuração por política.
- **Regras com CEL**: Usa a Linguagem de Expressões Comuns (CEL) com as bibliotecas de Kyverno, suportando valores literais, expressões e variáveis reutilizáveis.
- **Negação padrão com listas de permissão**: Defina `deny.values: ["*"]` para inverter um comportamento para negar-tudo-exceto-permitido.
- **Saída nativa do Kubernetes**: Descobertas são escritas como objetos `Report` do OpenReports no namespace do pod, com condições de status por nó e contadores Prometheus.
- **Escopo por seletor**: Políticas podem segmentar pods e namespaces via seletores de rótulo, em todo o cluster.
- **Reavaliação periódica**: `evaluationInterval` reexecuta expressões de política para manter listas de negação de fontes externas atualizadas.
## Início Rápido
Instale via Helm:
```bash
helm install kyverno-runtime oci://ghcr.io/nirmata/charts/kyverno-runtime --namespace kyverno-runtime --create-namespace
```
Exemplo: Bloquear um endereço IP específico para um 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"
```
## Limitações (Pré-1.0)
- Egress é somente IPv4; literais IPv6 não são suportados.
- A imposição de abertura de arquivos e execução requer BPF-LSM ativo no kernel (parâmetro de inicialização `lsm=`).
- Observações de rede, protocolo, abertura e execução são coletadas de contadores eBPF, então descobertas podem atrasar e carregar contagens em vez de ordenação. Perguntas DNS fluem em tempo real.
- Exceções ainda não são suportadas.
## Documentação
Inclui início rápido, conceitos, instalação, suporte de plataformas (EKS, GKE, AKS, Bottlerocket), exemplos, detecção de IA sombra, solução de problemas e documentação de referência para o CRD RuntimePolicy, expressões CEL e métricas.
## Licença
Licença Apache 2.0
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.