Reglas JSON
Las reglas JSON proporcionan la misma funcionalidad que las reglas YAML pero en formato serializado, ideales para generación programática.
Estructura Básica
json
{
"rules": {
"config": {
"no_default_password": {
"description": "Detecta uso de la contraseña por defecto 'admin'",
"severity": "HIGH",
"query": {
"type": "yaml",
"path": "database.password",
"value": "admin",
"message": "Default password 'admin' used",
"remediation": "Define una contraseña segura"
}
}
}
}
}
Campos
Campo | Descripción |
---|---|
description | Descripción de la regla |
severity | Nivel: CRITICAL, HIGH, MEDIUM, LOW |
query.type | Tipo de archivo (yaml, json) |
query.path | Ruta JSONPath en el archivo |
query.value | Valor exacto a buscar |
query.message | Mensaje mostrado al usuario |
query.remediation | Sugerencia de corrección |
Ejemplo Real
json
{
"rules": {
"config": {
"no_default_password": {
"description": "Detecta uso de la contraseña por defecto 'admin' en configuraciones YAML",
"severity": "HIGH",
"query": {
"type": "yaml",
"path": "database.password",
"value": "admin",
"message": "Default password 'admin' used",
"remediation": "Define una contraseña segura en lugar del valor por defecto"
}
}
}
}
}
Casos de Uso
Configuraciones de Base de Datos
json
{
"rules": {
"config": {
"insecure_db_config": {
"description": "Detecta configuraciones inseguras de base de datos",
"severity": "HIGH",
"query": {
"type": "yaml",
"path": "database.ssl",
"value": false,
"message": "Database connection not using SSL",
"remediation": "Enable SSL for database connections"
}
}
}
}
}
Variables de Entorno
json
{
"rules": {
"config": {
"debug_mode_production": {
"description": "Detecta modo debug en producción",
"severity": "MEDIUM",
"query": {
"type": "yaml",
"path": "app.debug",
"value": true,
"message": "Debug mode enabled in production",
"remediation": "Disable debug mode in production"
}
}
}
}
}
Ventajas
✅ Perfecto para:
- Generación programática
- Integración con herramientas CI/CD
- Validación de configuraciones
- Verificación de valores específicos
❌ Limitaciones:
- Solo valores exactos (no patrones complejos)
- Sin lógica condicional
- Solo archivos estructurados (JSON/YAML)
Diferencias con YAML
Aspecto | YAML | JSON |
---|---|---|
Legibilidad | ✅ Más legible | ❌ Menos legible |
Generación | ❌ Manual | ✅ Programática |
Comentarios | ✅ Soportados | ❌ No soportados |
Herramientas | ❌ Limitadas | ✅ Amplio ecosistema |
Próximos Pasos
- Reglas YAML - Formato más legible
- Reglas Semgrep - Para patrones complejos
- Reglas OPA - Para lógica avanzada