martes, 30 de mayo de 2023

Desarrollo seguro: todo empieza en la arquitectura

La arquitectura constituye los cimientos sobre los cuales se erigirán nuestras aplicaciones. 

Desarrollo seguro: todo comienza en la arquitectura

Fuente: open stand

Posibles riesgos

El desarrollo seguro comienza con el diseño y la definición de nuestra arquitectura, teniendo en mente las posibles amenazas que pudieran poner en riesgo nuestro sistema, especialmente aquellas derivadas por el uso de componentes que:

  • no estén identificados.
  • sean antiguos o incompatibles, que estén obsoletos o hayan dejado de ser soportados.
  • posean vulnerabilidades conocidas.
  • tengan puertos abiertos no indispensables.

Mejores prácticas

A continuación se detallan las mejores prácticas a la hora de diseñar, definir y mantener una arquitectura segura:
  • Inventario que identifique cada componente de la arquitectura. Todo componente debe estar identificado, o de lo contrario se incurrirá en riesgos de seguridad.
  • Revisión del bastionado de componentes:
    • Identificación de dependencias internas:
      • Módulos.
      • Librerías.
      • Frameworks.
      • Plugins o complementos.
      • Servicios.
      • Otras.
    • Estado de actualización.
    • Configuraciones:
      • Puertos activados (solo los indispensables).
      • Usuarios y contraseñas personalizados (no por defecto).
      • Modo de depuración desactivado.
      • Otras configuraciones de seguridad (ajustadas a una mayor seguridad).
  • Identificación de vulnerabilidades y sus parches de seguridad. En caso de no existir parche:
    • analizar el riesgo y su impacto
    • proponer y adoptar:
      • un plan de vigilancia.
      • un plan de contingencias.
    • realizar un estudio de viabilidad de componentes alternativos.
  • Asegurar la seguridad perimetral lógica mediante la segmentación de red, firewalls, dispositivos IDS, etc.
  • Asegurar la protección de datos mediante:
    • autorización entre entornos.
    • copias de seguridad.
  • Proporcionar un entorno virtual como zona de trabajo, a ser posible, por lenguaje de programación.
  • Mantener las actualizaciones más recientes de:
    • lenguajes de programación
    • paquetes instalados
    • frameworks y librerías
    • herramientas de análisis y seguridad de los IDEs
  • En caso de trabajar con DevSecOps, dotar de herramientas de análisis de seguridad a lo largo del ciclo de vida del software, antes del despliegue en cada entorno.

Referencias