Argumentando la seguridad en la fase de análisis
ARGUMENTANDO LA SEGURIDAD EN LAS
FASES DE DESARROLLO DE SOFTWARE
- Elabore una tabla comparativa entre las fases del ciclo de vida del desarrollo de software (SDLC) con las fases del ciclo de vida del desarrollo de software seguro (S-SDLC)
Modelos del S-SDLC
- Microsoft Security Developmen lifecycle
- Oracle Software Security Assurance
- Comprehesive Lightweight Application Security Process
- Team Software Process Secure
- Software Assurance Maturity Model
- Building Security in Maturity Model
- Agile Developmen
Modelos del SDLC
Existen varios modelos de ciclo de vida de desarrollo de software definidos y diseñados que se siguen durante el proceso de desarrollo de software. Estos modelos también se denominan “Modelos de proceso de desarrollo de software”. Cada modelo de proceso sigue una serie de pasos únicos para su tipo para garantizar el éxito en el proceso de desarrollo de software
- Modelo de cascada
- Modelo iterativo
- Modelo en espiral
- Modelo V
- Modelo Big Bang
|
Fases
del ciclo de vida del desarrollo de software (SDLC) |
Descripción |
Fases
del ciclo del desarrollo del software seguro (S-SDLC) |
Descripción |
|
Fase de planeación |
En esta fase
se Identifica las necesidades del nuevo software para lograr los objetivos
estratégicos de las partes interesadas. Este es un plan preliminar (o un
estudio de viabilidad) para que los interesados adquieran los recursos
necesarios para construir una infraestructura para modificar o mejorar un
servicio. El propósito de este paso es averiguar el alcance del problema y
determinar las soluciones. En esta etapa se deben considerar los recursos,
costos, tiempo, beneficios y otros elementos. |
Fase de análisis seguro |
La fase de planificación
es el espacio apropiado para la definición y el establecimiento de la
seguridad de la fiabilidad de una aplicación de software. Al conocer los
riesgos, se podrán identificar y corregir los errores de seguridad. Se establecen
los objetivos de seguridad y se identifican los activos críticos. |
|
Fase de requerimientos |
Aquí es donde
los equipos consideran los requisitos funcionales y no funcionales del
proyecto. También es donde tiene lugar el análisis del sistema, o el análisis
de las necesidades de los usuarios finales para garantizar que el nuevo
sistema pueda satisfacer su necesidad. El análisis
de sistemas es vital para determinar cuáles son las necesidades de una
empresa, así como cómo pueden satisfacerse, quién será responsable de las
partes individuales del proyecto y qué tipo de cronograma se debe esperar. |
Fase de requerimientos seguro |
En esta fase
se tiende a identificar y abordar los requisitos de seguridad en esta etapa,
se reducen los riesgos y se facilita la creación de un sistema más resistente
a las amenazas cibernéticas. La fase de
requerimientos en el desarrollo de software seguro es fundamental para
establecer una base sólida de seguridad desde el principio |
|
Fase de diseño |
En esta fase
se describe, en detalle, las especificaciones, características y operaciones
necesarias que satisfarán los requisitos funcionales del sistema propuesto
que se implementará. Este es el paso para que los usuarios finales discutan y
determinen sus necesidades específicas de información comercial para el
sistema propuesto. En esta fase
se desarrollan varias actividades, como: Diseño de la
arquitectura. Especificación
abstracta del sistema. Diseño de
interfaces. Diseño de
componentes. Diseño de las
estructuras de datos. Diseño de
algoritmos. |
Fase de
diseño |
Es la etapa del
ciclo de vida para determinar requerimientos de diseño, análisis de los
espacios de ataques, modelos de amenazas y medidas para mitigar el riesgo
utilizando un análisis dinámico. En la etapa
de diseño seguro se puntualiza en la estructura interna del sistema (como la
estructura de las bases de datos, elementos para las transacciones y
comunicaciones) Se
identifican y evalúan los riesgos de seguridad asociados con el diseño y la
arquitectura. |
|
Fase de desarrollo |
En esta fase
del ciclo de vida de un sistema, se genera el código fuente en el lenguaje de
programación escogido. Aquí también puede definirse la parametrización del
software. Para el
desarrollo del código se pueden utilizar herramientas denominadas IDE (entornos
de desarrollo integrado), que sirven para codificar de manera más fácil y
práctica. En esta fase
también pueden realizarse pruebas unitarias que definirán la versatilidad del
sistema y su capacidad de detección de fallos. |
Fase de desarrollo seguro |
Durante esta
fase, se aplican prácticas y controles de seguridad para garantizar que el
software se desarrolle de manera segura desde el principio. -Codificación
segura -Revisión
de código seguro -Pruebas
de seguridad -Integración
y entrega continuas (CI/CD) -Control
de versiones y gestión de cambios -Gestión
de dependencias seguras -Seguridad
en el diseño arquitectónico - Pruebas de
seguridad de componentes de terceros |
|
Fase de integración y pruebas |
Esta fase
implica la integración de sistemas y las pruebas del sistema (de programas y
procedimientos), normalmente realizadas por un profesional de aseguramiento
de la calidad (QA), para determinar si el diseño propuesto cumple con los
objetivos definidos. Las pruebas pueden repetirse, específicamente para
verificar errores e interoperabilidad. Estas pruebas se realizarán hasta que
el usuario final lo considere aceptable. Otra parte de esta fase es la
verificación y validación, las cuales ayudarán a garantizar la finalización
exitosa del programa. |
Fase de integración y pruebas seguro |
La fase de
integración y pruebas en el desarrollo de software seguro es una etapa
crítica en la que se ensamblan todas las partes del software desarrollado y
se realizan pruebas exhaustivas para identificar posibles problemas,
incluyendo vulnerabilidades de seguridad. Esta fase tiene como objetivo
garantizar que el sistema funcione correctamente y que cumpla con los
requisitos de seguridad y calidad. |
|
Fase de implementación o despliegue |
El software
se implementa en un entorno de producción. esta fase implica la instalación
real del sistema recientemente desarrollado. Este paso pone el proyecto en
producción moviendo los datos y componentes del sistema y colocándolos en el
nuevo sistema a través de una transición directa. |
Fase de implementación o despliegue seguro |
Esta es etapa
crítica en la que el software se instala en un entorno de producción y se
pone a disposición de los usuarios finales. Garantizar que esta fase se
realice de manera segura es esencial para proteger el software contra amenazas
y riesgos. |
|
Fase de operación y mantenimiento |
sigue
necesitando una supervisión, actualización y mantenimiento continuos para que
siga funcionando de forma adecuada. Y para satisfacer las crecientes demandas
de los usuarios y los riesgos de seguridad, necesita desarrollar
funcionalidades y características nuevas y mejoradas junto con
actualizaciones de seguridad para seguir cumpliendo a los usuarios finales. |
Fase de operación y mantenimiento seguro |
La fase de
operación y mantenimiento seguro en el desarrollo de software es una etapa
continua y crítica en la que el software se ejecuta en un entorno de
producción y se gestiona a lo largo de su ciclo de vida para mantenerlo
seguro y eficiente. Durante esta fase, se enfatiza la seguridad y la
disponibilidad del software. |
2. Resuma mediante una tabla, las principales
características de las metodologías de
desarrollo de software seguro.
|
CARACTERISTICAS DE LAS METODOLOGIAS S-SDLC |
|
|
las
metodologías de desarrollo de software seguro se caracterizan por su enfoque
en la seguridad desde el principio, la integración de actividades de
seguridad en todas las etapas del ciclo de vida del desarrollo y la atención
a la evaluación de riesgos, pruebas de seguridad, revisión de código seguro y
otros aspectos relacionados con la seguridad. Estas metodologías buscan construir
software más seguro y resistente a las amenazas cibernéticas. |
|
|
CARACTERISTICA |
DESCRIPCION |
|
Enfoque en la seguridad desde el principio |
Una característica fundamental es que la seguridad se
considera una preocupación desde el inicio del proyecto. Esto implica que se
identifican y abordan los riesgos de seguridad desde las primeras etapas del
ciclo de vida del desarrollo. |
|
Integración de seguridad en cada etapa |
Estas metodologías enfatizan la integración de
actividades de seguridad en todas las fases del desarrollo, desde la concepción
y el diseño hasta la implementación, las pruebas y el mantenimiento. |
|
Evaluación de riesgos |
Se lleva a cabo una evaluación de riesgos en la fase
inicial para identificar y priorizar las amenazas y los activos críticos.
Esto guía la planificación de las medidas de seguridad adecuadas. |
|
Pruebas de seguridad |
Incluyen la realización de pruebas específicas de
seguridad para identificar vulnerabilidades y debilidades en el software.
Esto abarca pruebas de penetración, análisis de código, análisis de seguridad
estático y dinámico |
|
Revisión de código seguro |
Las metodologías de desarrollo seguro fomentan la
revisión de código con un enfoque en la identificación de problemas de
seguridad. Esto ayuda a eliminar errores de seguridad antes de que lleguen a
producción |
|
Desarrollo de documentación segura |
Se enfatiza la documentación de las medidas de seguridad
implementadas, así como las políticas y procedimientos relacionados con la
seguridad del software |
|
Gestión de vulnerabilidades |
Se establecen procesos para gestionar y remediar las
vulnerabilidades de seguridad de manera eficiente y oportuna |
|
Cumplimiento normativo |
Estas metodologías permiten cumplir con estándares y
regulaciones de seguridad específicos, como ISO 27001, HIPAA, PCI DSS y GDPR |
|
Gestión de configuración segura |
Se presta atención a la gestión segura de la
configuración del software y los sistemas en producción para evitar
configuraciones no seguras. |
|
Seguimiento y registro de incidentes de seguridad |
Se establecen procedimientos para el seguimiento y el
registro de incidentes de seguridad durante el desarrollo y la operación del
software. |
|
Capacitación en seguridad |
Se proporciona formación en seguridad a los
desarrolladores y otros profesionales involucrados para promover las mejores
prácticas de seguridad. |
|
Revisión continua |
La seguridad es una preocupación continua, y las
metodologías de desarrollo seguro incluyen revisiones y mejoras continuas en
las medidas de seguridad y en el proceso de desarrollo. |
3. De todas las metodologías estudiadas cuál de ellas
seleccionaría para el desarrollo de software seguro. Especifique los criterios
que tendría en cuenta para seleccionar dicha metodología. Una vez desarrollado este ítem, capture la pantalla
de la diapositiva y publíquela en el blog portafolio.
De las metodologías estudiadas utilizaría
la metodología Agile Secure Development (Desarrollo Ágil Seguro) ya que esta metodología
es una gran opción a la hora de realizar proyectos por varios motivos. Esta se
alinea perfectamente con la tendencia cambiante de la industria del software.
En la actualidad, los requisitos y las amenazas de seguridad pueden evolucionar
rápidamente, y Agile permite adaptarse a estos cambios de manera ágil,
reconocer la importancia de la adaptabilidad en un mundo tecnológico en
constante cambio es fundamental. Agile permite una respuesta rápida a los
cambios en los requisitos de seguridad y las prioridades del proyecto, lo que
es esencial para mantener la relevancia y la efectividad del software en un
entorno altamente competitivo y en constante evolución.
Otra razón importante es su
enfoque en la entrega continua de valor al cliente. En un proyecto de
ingeniería de software, el objetivo final es proporcionar software funcional y
seguro que satisfaga las necesidades del cliente. Agile permite la entrega de
incrementos de software en intervalos regulares, lo que significa que el
cliente puede obtener rápidamente características útiles y seguras en lugar de
esperar largos períodos para ver resultados. Esto no solo satisface al cliente,
sino que también mejora la visibilidad y la retroalimentación sobre la
seguridad del software.
Esta metodología pone la
seguridad en el centro del proceso de desarrollo. Como estudiante, esto me
proporcionaría una base sólida en las prácticas de seguridad desde el
principio, lo que es esencial en un entorno donde las amenazas cibernéticas son
una preocupación constante. Aprender a identificar y mitigar riesgos de
seguridad de manera proactiva es una habilidad valiosa en la industria.
4. Consulte y exponga las principales características del
nuevo paradigma de desarrollo “Programación
Orientada a Aspectos (POA)” y qué
aportes hace este paradigma al
desarrollo de software seguro
La Programación Orientada a Aspectos (POA) Aspect-Oriented Programming , es un paradigma de desarrollo de software que se centra en la modularidad y encapsulación de aspectos transversales o preocupaciones que no encajan fácilmente en la Programación Orientada a Objetos (POO). Los aspectos transversales son preocupaciones que afectan a múltiples módulos o componentes de un sistema de software, como la seguridad, la auditoría, el registro, el control de acceso y otros.
Separación de preocupaciones: La POA permite separar las preocupaciones transversales de las preocupaciones principales del negocio. Esto facilita el mantenimiento y la comprensión del código, ya que cada aspecto se encapsula en un módulo independiente llamado "aspecto".Aspectos y puntos de unión: En la
POA, los aspectos se definen como módulos que contienen código que se ejecuta
en "puntos de unión" específicos del programa. Los puntos de unión
son lugares en el código donde se intersecan las preocupaciones principales y
los aspectos transversales.
Modularización: Los aspectos
permiten la modularización de las preocupaciones transversales, lo que facilita
la reutilización y la gestión de la lógica relacionada con la seguridad, la
autenticación, la autorización, entre otros.
Mejora de la legibilidad y
mantenibilidad: Al separar las preocupaciones, el código principal del negocio
se vuelve más limpio y legible, lo que facilita el mantenimiento y la
colaboración en el desarrollo de software.
Gestión de políticas de
seguridad: La POA facilita la gestión de políticas de seguridad en un solo
lugar. Los aspectos de seguridad pueden definir y aplicar políticas de
seguridad en puntos de unión específicos, lo que simplifica el mantenimiento y
la adaptación de políticas de seguridad a medida que cambian los requisitos.
Auditoría y registro: Los
aspectos pueden utilizarse para gestionar la auditoría y el registro de eventos
de seguridad de manera centralizada. Esto garantiza que se registren
adecuadamente las actividades relacionadas con la seguridad y se cumplan los
requisitos de cumplimiento normativo.
Flexibilidad en la adaptación de
seguridad: La POA permite una mayor flexibilidad en la adaptación de las
preocupaciones de seguridad a medida que evolucionan los requisitos y las
amenazas. Los cambios en las políticas de seguridad o la adición de nuevas
capas de seguridad se pueden implementar de manera más eficiente utilizando
aspectos.
Referencias
https://web.fdi.ucm.es/posgrado/conferencias/AndresCaroLindo-slides.pdf
https://platzi.com/blog/desarollo-software-seguro/
https://geekflare.com/es/software-development-life-cycle-sdlc-guide/
file:///D:/Seguridad%20en%20el%20ciclo%20de%20vida%20del%20desarrollo%20de%20software.pdf




Comentarios
Publicar un comentario