Diseno experimento para el requisito Seguridad S4 - JohannPaezU/MISW4501-MediSupply GitHub Wiki

Experimento de Seguridad

Título del experimento Experimento de Seguridad
Propósito del experimento El objetivo del experimento es confirmar que nuestra arquitectura promueve la confidencialidad e integridad de la información, asegurando que solo las personas autorizadas puedan acceder y modificar los datos del inventario de productos médicos.
Resultados esperados Se espera que solo las personas autorizadas puedan ver y modificar la información del inventario, garantizando así la confidencialidad e integridad de los datos. De esta forma, se validará que la arquitectura implementada cumple con las medidas de seguridad necesarias para proteger la información del inventario.
Recursos requeridos Python, FastAPI, SQLAlchemy, Pydantic, Uvicorn, Git, GitHub.
Elementos de arquitectura involucrados • ASR involucrado:
https://proyecto-final-grupo-009.atlassian.net/browse/SCRUM-49
• Modelo de componentes:
https://github.com/JohannPaezU/MISW4501-MediSupply/wiki/Modelo-de-componentes-S4
• Modelo de datos:
https://github.com/JohannPaezU/MISW4501-MediSupply/wiki/Modelo-de-datos-S4
Esfuerzo estimado Se espera realizar el experimento en 6 días con 2.5 horas/hombre por día.

Hipótesis de diseño

Punto de sensibilidad La decisión crítica que se implementará es el uso de un autorizador para permitir que solo los usuarios o servicios con los permisos adecuados accedan o soliciten recursos mediante el API Gateway para asegurar la confidencialidad e integridad de la información.
Historia de arquitectura asociada https://proyecto-final-grupo-009.atlassian.net/browse/SCRUM-49
Nivel de incertidumbre El nivel de incertidumbre es medio ya que podríamos necesitar más mecanismos de control como revocar el acceso o manejo de log de eventos para poder garantizar aún más la confidencialidad e integridad de la información.

Estilos de Arquitectura asociados al experimento

Estilos de Arquitectura asociados al experimento Análisis (Atributos de calidad que favorece y desfavorece)
Estilo de arquitectura de microservicios. Favorece:
✓ Desacoplamiento
✓ Alta cohesión
✓ Confidencialidad
✓ Integridad
Desfavorece:
✓ Latencia

Tácticas de Arquitectura asociadas al experimento

Tácticas de Arquitectura asociadas al experimento Descripción
Resistir ataques: Autenticación (Autenticar actores) Tendremos un componente de Registro para que los usuarios puedan registrarse en el sistema, mientras que, el inicio de sesión, el código OTP y el token JWT estarán a cargo de un componente Autorizador. Finalmente tendremos un componente Gestor de Inventario que ofrecerá la información confidencial del inventario de productos a la que se quiere acceder siempre y cuando se envíe un token JWT válido generado por el Autorizador en cada petición.

Listado de componentes (Microservicios) involucrados en el experimento

Microservicio Propósito y comportamiento esperado Tecnología Asociada
Registro El propósito de este componente es ofrecer dos endpoints: el primero para que el usuario pueda registrarse y el segundo para poder obtener la contraseña encriptada necesaria para el endpoint de inicio de sesión. Además, se encargará de almacenar la información del registro de los usuarios. • Python
• FastAPI
• SQLAlchemy
• Pydantic
Autorizador El propósito de este componente es ofrecer tres endpoints: el primero para que el usuario pueda iniciar sesión y obtener un código OTP, el segundo para validar el código OTP y de ser válido obtener un token JWT de sesión y el tercero para verificar la validez del token JWT de sesión. • Python
• FastAPI
• Pydantic
Gestor de Inventario El propósito de este componente es ofrecer los endpoints necesarios para acceder a la información del inventario de productos médicos siempre y cuando el usuario esté autenticado con un token JWT. • Python
• FastAPI
• SQLAlchemy
• Pydantic

Listado de conectores involucrados en el experimento

Conector Comportamiento deseado en el experimento Tecnología Asociada
Registro – almacenamiento de usuarios El componente de registro se comunicará con el almacenamiento para guardar la información de los usuarios registrados. Python
FastAPI
Inicio de sesión - Autenticador Al iniciar sesión, se utilizará el componente autenticador para generar un código OTP y posteriormente un token JWT que servirá para hacer peticiones al componente Gestor de Inventario. Python
FastAPI
Gestor de Inventario - Autenticador Al hacer una consulta de información del inventario, se utilizará el componente Autenticador para verificar que el token JWT enviado en la petición sea válido y no haya expirado. Python
FastAPI

Tecnología asociada con el experimento

Tecnología asociada con el experimento Justificación
Lenguajes de programación: Python Es un lenguaje de programación conocido por su simplicidad y legibilidad. Es ideal para desarrollar prototipos rápidos y mantener un código limpio y estructurado.
Plataforma de despliegue Equipo local (localhost).
Bases de datos: SQLite Es una base de datos ligera y fácil de integrar, perfecta para proyectos pequeños o experimentos. Permite trabajar con bases de datos relacionales sin necesidad de un servidor de base de datos separado.
Herramientas de análisis • Excel
• Archivos de logs de ejecución de la consola.
Librerías: FastAPI, SQLAlchemy, Pydantic FastAPI: Es un framework web moderno y de alto rendimiento para crear APIs con Python. Proporciona validación automática de datos, documentación interactiva automática (Swagger), y es ideal para desarrollar APIs REST de manera rápida y eficiente.

SQLAlchemy: Es una biblioteca de mapeo objeto-relacional (ORM) para Python que facilita la interacción con bases de datos relacionales desde Python de una manera más orientada a objetos. Simplifica el manejo de consultas SQL y la manipulación de datos en la base de datos.

Pydantic: Es una biblioteca de validación de datos que utiliza type hints de Python. Se integra perfectamente con FastAPI para la validación automática de datos de entrada y salida.
Frameworks de desarrollo FastAPI: Es un framework web moderno, rápido y de alto rendimiento para crear APIs con Python. Incluye características como validación automática de datos, documentación interactiva automática, soporte nativo para async/await, y es ideal para desarrollar microservicios y APIs REST de manera eficiente.

Distribución de actividades por integrante

Integrante Tareas a realizar Esfuerzo Estimado
Miguel Padilla Análisis, desarrollo y pruebas. 2.5 horas/día.
Johann Paez Análisis, desarrollo y pruebas. 2.5 horas/día.
Julián Oliveros Análisis, desarrollo y documentación. 2.5 horas/día.
Juan Cervantes Análisis, desarrollo y documentación. 2.5 horas/día.
⚠️ **GitHub.com Fallback** ⚠️