Reglas de RootCause
Las reglas son el núcleo de RootCause. Definen qué problemas buscar en tu código y configuraciones, especificando patrones, condiciones y mensajes de error.
¿Qué tipos de reglas existen?
RootCause soporta diferentes tipos de reglas para cubrir diversos escenarios de análisis:
Reglas YAML
Formato principal para detectar patrones simples de código y configuraciones.
Reglas JSON
Formato serializado ideal para generación programática y validación de configuraciones.
Reglas Semgrep
Para patrones complejos con análisis semántico y combinaciones avanzadas.
Reglas OPA/WASM
Para lógica de políticas complejas usando Rego compilado a WebAssembly.
¿De dónde se cargan las reglas?
RootCause carga las reglas desde múltiples ubicaciones:
Ubicación por defecto
- Linux/macOS:
~/.config/rootcause/rules
- Windows:
%APPDATA%\rootcause\rules
Configuración personalizada
Puedes especificar directorios adicionales en el archivo de configuración config.toml
:
[rules]
rule_dirs = [
"/home/usuario/.config/rootcause/rules",
"./reglas-personalizadas",
"./reglas-del-proyecto"
]
Comando scan
También puedes especificar un directorio de reglas directamente:
rootcause scan . --rules ./mi-directorio-reglas
Gestión de reglas
Ver reglas instaladas
rootcause rules list
Instalar conjunto de reglas
rootcause rules install https://example.com/rules.tar.gz
Verificar reglas
rootcause rules verify ./rules
Inspeccionar regla específica
rootcause rules inspect py.subprocess-shell
Formatos soportados
RootCause soporta múltiples formatos de reglas:
- YAML: Formato principal y más legible
- JSON: Formato alternativo
- Semgrep: Compatible con reglas de Semgrep
- OPA WASM: Módulos WebAssembly para reglas complejas
Estructura básica de una regla
Todas las reglas siguen una estructura común:
rules:
- id: "python.security.no-eval"
severity: "HIGH"
description: "Evitar el uso de eval()"
message: "No uses eval() con entradas no confiables"
category: "python"
# ... configuración específica del tipo de regla
Niveles de severidad
Nivel | Descripción | Uso |
---|---|---|
LOW | Información útil | Funciones deprecadas, sugerencias |
MEDIUM | Posible problema | Configuraciones no óptimas |
HIGH | Problema a corregir | Funciones inseguras, vulnerabilidades |
CRITICAL | Problema grave | Contraseñas en texto plano, fallos críticos |
Organización recomendada
rules/
├── python/
│ ├── security/
│ │ ├── no-eval.yaml
│ │ └── subprocess-shell.yaml
│ └── best-practices/
│ └── no-unused-imports.yaml
├── docker/
│ ├── security/
│ └── best-practices/
└── yaml/
└── security/
Próximos pasos
- Inicio Rápido - Crea tu primera regla
- Ejemplos de Reglas - Colección de reglas útiles
- Testing de Reglas - Prueba y valida tus reglas