Skip to content

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

CampoDescripción
descriptionDescripción de la regla
severityNivel: CRITICAL, HIGH, MEDIUM, LOW
query.typeTipo de archivo (yaml, json)
query.pathRuta JSONPath en el archivo
query.valueValor exacto a buscar
query.messageMensaje mostrado al usuario
query.remediationSugerencia 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

AspectoYAMLJSON
Legibilidad✅ Más legible❌ Menos legible
Generación❌ Manual✅ Programática
Comentarios✅ Soportados❌ No soportados
Herramientas❌ Limitadas✅ Amplio ecosistema

Próximos Pasos

RootCause - Modular Static Analysis Engine