Holograma del ENS para proveedores de software: escudo azul de cinco capas sobre un servidor con sellos plateados
Software / APIs

ENS para Proveedores de Software: Categorías y Certificación

Codezone
Codezone Empresa de Desarrollo Web y Software a Medida

El Esquema Nacional de Seguridad (ENS), regulado por el Real Decreto 311/2022, obliga también a los proveedores de software del sector público, incluidas las empresas de Madrid que desarrollan para ayuntamientos o consejerías. Su sistema necesita una categoría asignada y las medidas del anexo II aplicadas, acreditadas con una declaración o certificación de conformidad. Forma parte de cualquier desarrollo de software a medida para el sector público en Madrid.

El artículo 2.3 obliga a que los pliegos de los contratos públicos pidan esa declaración o certificación al contratista. La exigencia alcanza a su cadena de suministro cuando el análisis de riesgos lo requiere: si subcontratas el desarrollo o el alojamiento, tu proveedor también entra.

Al terminar sabrás qué categoría tiene tu sistema y qué medidas tocan a tu código, que parten de la seguridad de aplicaciones web con OWASP.

Qué es el Esquema Nacional de Seguridad para proveedores de software

El Esquema Nacional de Seguridad es el marco del Real Decreto 311/2022 que fija los principios básicos y los requisitos mínimos de seguridad de los sistemas de información del sector público. Se aplica también a las empresas privadas cuyos sistemas sustentan servicios contratados por una administración, que deben contar con una política de seguridad aprobada por su máximo órgano ejecutivo.

El Real Decreto 311/2022 consolidado en el BOE entró en vigor el 5 de mayo de 2022 y derogó el Real Decreto 3/2010.

Escudo holográfico azul formado por cinco anillos concéntricos que protege un núcleo de datos sobre un suelo reflectante
Cinco dimensiones protegen cada sistema que trabaja para una administración.

Cómo se calcula la categoría ENS de un sistema

La categoría de un sistema la fija la dimensión de seguridad con el nivel de impacto más alto, según el anexo I del Real Decreto 311/2022. Las dimensiones son confidencialidad, integridad, trazabilidad, autenticidad y disponibilidad. Cada una se valora como BAJO (perjuicio limitado), MEDIO (grave) o ALTO (muy grave), o queda sin nivel si no se ve afectada.

Imagina un portal hipotético de citas para un ayuntamiento: si la confidencialidad sale MEDIO y el resto BAJO, el sistema es de categoría MEDIA. Valoran los responsables de la información y del servicio, y la categoría la decide el responsable de seguridad (artículo 41). Se revisa cada año.

Qué medidas del anexo II afectan a tu código

El anexo II del Real Decreto 311/2022 recoge 73 medidas repartidas en marco organizativo (org), marco operacional (op) y medidas de protección (mp), con refuerzos que se suman al subir de categoría. Las que más tocan al desarrollo son estas:

Tres torres holográficas cian de distinta altura conectadas por haces de luz plateada en una sala oscura
Cada medida crece con refuerzos a medida que sube la categoría.

Si el sistema trata datos personales, mp.info.1 remite a la guía técnica del RGPD para equipos de desarrollo.

Declaración o certificación: qué necesita un proveedor de Madrid

La forma de acreditar la conformidad depende de la categoría, según el artículo 38 del Real Decreto 311/2022 y la Instrucción Técnica de Seguridad de conformidad (Resolución de 13 de octubre de 2016):

  • Categoría BÁSICA: autoevaluación y declaración de conformidad emitida por tu empresa. La auditoría formal es voluntaria.
  • Categoría MEDIA o ALTA: auditoría formal y certificado de una entidad acreditada por ENAC conforme a la norma UNE-EN ISO/IEC 17065:2012.
  • Periodicidad: auditoría al menos cada dos años y extraordinaria tras cambios sustanciales (artículo 31).
  • Publicidad: un distintivo en tu web enlaza a la declaración o al certificado, con los modelos de la guía CCN-STIC 809 que recogen los distintivos de conformidad del CCN.

Los incidentes que afecten a esos sistemas los notificas al INCIBE-CERT, que los traslada al CCN-CERT (artículo 33.7).

Columna holográfica de anillos azules apilados que registra destellos plateados mientras un haz rojo marca uno de ellos
Cada evento queda registrado con quién, cuándo y con qué resultado.
CodeZone Pro Tip: calcula la categoría ENS a partir de la valoración de las cinco dimensiones y genera registros de actividad con los campos mínimos de op.exp.8.
import json
from datetime import datetime, timezone

# Niveles y categorías del anexo I del Real Decreto 311/2022
NIVELES = {"BAJO": 1, "MEDIO": 2, "ALTO": 3}
CATEGORIA = {1: "BÁSICA", 2: "MEDIA", 3: "ALTA"}
DIMENSIONES = ("confidencialidad", "integridad", "trazabilidad", "autenticidad", "disponibilidad")

def categoria_ens(valoracion: dict) -> str:
    """La categoría la fija la dimensión con el nivel más alto."""
    faltan = [d for d in DIMENSIONES if d not in valoracion]
    if faltan:
        # Exigimos las cinco dimensiones: None significa "no afectada", nunca "se nos olvidó"
        raise ValueError(f"Dimensiones sin valorar: {faltan}")
    niveles = [NIVELES[v] for v in valoracion.values() if v is not None]
    if not niveles:
        raise ValueError("Ninguna dimensión afectada: revisa el alcance del sistema")
    return CATEGORIA[max(niveles)]

def registro_actividad(usuario: str, objeto: str, evento: str, exito: bool) -> str:
    # Campos mínimos de op.exp.8.1: quién, cuándo, sobre qué, tipo de evento y resultado
    return json.dumps({
        "usuario": usuario,
        "fecha_hora": datetime.now(timezone.utc).isoformat(timespec="seconds"),
        "objeto": objeto,
        "evento": evento,
        "resultado": "exito" if exito else "fallo",
    }, ensure_ascii=False)

if __name__ == "__main__":
    # Valoración hipotética de un portal de citas para un ayuntamiento
    portal = {"confidencialidad": "MEDIO", "integridad": "BAJO", "trazabilidad": "MEDIO",
              "autenticidad": "BAJO", "disponibilidad": None}
    print(categoria_ens(portal))  # MEDIA: pide auditoría de certificación
    print(registro_actividad("u-1042", "cita/8812", "modificacion", True))

Con la valoración versionada en el repositorio, respondes con un documento cuando el auditor pregunta por qué el sistema es MEDIA y no BÁSICA. Y el formato del registro queda fijado desde el primer sprint, sin reescribir logs a pocas semanas de la auditoría.

El Riesgo de Llegar al Contrato Público Sin Conformidad ENS

Sin declaración ni certificación no puedes presentar lo que los pliegos exigen según el artículo 2.3. Adaptar el sistema con margen te deja auditar antes de la entrega y documentar en la declaración de aplicabilidad qué medidas aplican.

Sello holográfico circular azul y plateado que desciende sobre un bloque de cristal con un borde rojo de alerta
La certificación llega después de la auditoría, nunca antes.

En Codezone diseñamos el software con las medidas del ENS desde la arquitectura y dejamos la documentación técnica lista para el auditor. Cuéntanos qué contrato público tienes delante y revisamos tu categoría.