Giter Site home page Giter Site logo

misw4202-grupo-12's Introduction

Integrantes

  • Camilo Ramírez Restrepo
  • Laura Daniela Molina Villar
  • Leidy Viviana Osorio Jiménez
  • Tim Ulf Pambor 

Experimento Seguridad Arquitectura ABC Jobs

Video: Presentación del experimento

Comandos para poder ejecutar el experimento:

  • Ejecutar el experimento
    • Instalar Docker y Docker Compose
    • Ejecuta docker compose up --renew-anon-volumes --abort-on-container-exit --force-recreate dentro de la carpeta ExperimentoSeguridadABCJobs
    • Nota: Se puede configurar el número de peticiones con NUM_PETICIONES=5000 dentro del archivo compose.yaml
  • Analizar los resultados
    • Instalar Python 3
    • Ejecuta python3 analyze.py logs/app_web.csv dentro de la carpeta ExperimentoABCJobs

Propósito del experimento

El objetivo principal de este experimento es evaluar la seguridad del microservicio AdminContrato mediante un sistema de autenticación y autorización implementado a través de un API Gateway y un microservicio Autorizador. Específicamente, se busca verificar si el sistema puede validar correctamente las solicitudes de los usuarios, emitir tokens de acceso solo a usuarios autorizados y controlar el acceso a un microservicio AdminContrato que gestiona (ver/editar) contratos.

Resultados esperados

  • Verificación exitosa de autenticación: Los usuarios que proporcionen credenciales válidas deben recibir un token de acceso. 
  • Control de acceso efectivo: Solo los usuarios autorizados deberían poder acceder a contratos y realizar operaciones de escritura. 
  • Respuestas adecuadas:
    1. Si las credenciales son correctas se envía el token, si no un mensaje de error.
    2. Si el Autorizador verifica el rol del usuario y además que el token esté activo, envía a AdminContrato por medio de API Gateway la información del usuario (rol, id usuario). De lo contrario envía un código de acceso denegado
    3. Si AdminContrato verifica que el usuario que intenta hacer la edición del contrato fue la que creó el mismo, envía un mensaje de confirmación a AppWeb, por medio del API Gateway. De lo contrario envía un código de acceso denegado.

Recursos requeridos

  • Cuatro computadores personales con Docker y Docker compose instalados, además deben contar con una licencia de un IDE para programación en Python.
  • Framework: Flask.

Elementos de arquitectura involucrados

  • ASR: En una operación normal el componente Autorizador junto con AdminContrato deben garantizar que la edición de un contrato solo sea realizada por usuarios autorizados, esto el 100% de las veces.
  • Elementos de la arquitectura afectados: Microservicio AdminContrato, Microservicio Autorizador, ApiGateway, y AppWeb.
  • Vistas donde se encuentran elementos: Vista funcional, de despliegue, de información y de concurrencia.
  • Punto de sensibilidad que se desean probar: El microservicio Autorizador, ya que será el encargado de generar los tokens, y verificar roles. 

Esfuerzo estimado

Se estima que el experimento requerirá alrededor de 48 horas (12 horas/hombre) con un sprint de una semana, para la configuración, desarrollo, pruebas y análisis de resultados. 

Experimento Disponibilidad Arquitectura ABC Jobs

Video: Presentación del experimento

Comandos para poder ejecutar el experimento:

  • Ejecutar el experimento
    • Instalar Docker y Docker Compose
    • Ejecuta docker compose up --renew-anon-volumes --abort-on-container-exit --force-recreate dentro de la carpeta ExperimentoABCJobs
    • Nota: Se puede configurar el número de peticiones con NUM_MESSAGES=1000 dentro del archivo compose.yaml
  • Analizar los resultados
    • Instalar Python 3
    • Ejecuta python3 analyze.py dentro de la carpeta ExperimentoABCJobs

Propósito del experimento

Evaluar la implementación de las tácticas Voting y Redundancia Pasiva en el microservicio Motor de Emparejamiento para la detección de errores y recuperación de dicho servicio.

Resultados esperados

Se espera que el microservicio Voting pueda detectar de 9 de 10 fallos y devolver el cálculo correcto de los mejores candidatos a EmpresaProyecto.

Recursos requeridos

Cuatro computadores personales con Docker y Docker compose instalados, además deben contar con una licencia de un IDE para programación en Python. Framework: Flask. Librerías: Celery, Redis, SQLAlchemy.

Elementos de arquitectura involucrados

ASR: En operación normal, al ser creada una vacante, si MotorEmparejamiento falla al calcular los mejores candidatos para dicha vacante, el fallo debe ser detectado 9 de 10 veces. Elementos de la arquitectura afectados: Microservicio MotorEmparejamiento, Microservicio Voting, Microservicio EmpresaProyecto, y Cola de mensajes. Vistas donde se encuentran elementos: Vista funcional, de despliegue, de información y de concurrencia. Punto de sensibilidad que se desean probar: Uso de Cola de mensajes para la comunicación entre EmpresaProyecto y Voting, además la implementación de la táctica Voting para detectar fallos en MotorEmparejamiento.

Esfuerzo estimado

Se estima que el experimento requerirá alrededor de 48 horas (12 horas/hombre) con un sprint de una semana, para la configuración, desarrollo, pruebas y análisis de resultados. 

misw4202-grupo-12's People

Contributors

tpambor avatar vivianaoj avatar camiloramirezr avatar molvilada avatar

Watchers

 avatar  avatar

Forkers

vivianaoj

misw4202-grupo-12's Issues

Preguntas en función de las respuestas anteriores

Como candidato,
Cuando realizo una prueba adaptativa,
Quiero tener preguntas que se adapten a mis respuestas anteriores
Para evaluar mi conocimiento
Esto debe suceder en menos de 0.5 segundos por pregunta.

Integridad: actividad sospechosa

Como empleado de RRHH en ABC Jobs,
cuando detecto actividad sospechosa en el sistema,
dado que quiero proteger la disponibilidad de los servicios de ABC Jobs,
quiero que el sistema tenga detección ataques de denegación de servicio,
para evitar solicitudes falsas y afecte su funcionamiento normal.
Esto debe suceder el 100% de las veces.

Integridad: Datos personales aspirante

Como aspirante
cuando me registro en la plataforma ABC Jobs
dado que el sistema se encuentra en operación normal
quiero que solo yo pueda editar dichos datos
para garantizar la validez de dichos datos
esto debe suceder el 100% de las veces

Integridad: Administración de contratos

Como empleado de RRHH,
cuando cree un contrato,
dado que el sistema se encuentra en operación normal.
quiero que solamente yo pueda modificar los términos del contrato
para mantener su integridad durante todo el proceso de contratación de un candidato.
Esto debe suceder el 100% de las veces.

Confidencialidad: Datos bancarios

Como aspirante
cuando envio mis datos bancarios
dado que el sistema opera normalmente
quiero que solo las personas autorizadas puedan consultarlos
para conservar su privacidad.
Esto debe suceder 100% de las veces.

Detección: Pruebas programadas en la nube

Como administrador del sistema ABC,
cuando se presenta un error en la generación de la infraestructura requerida (los depósitos de código, el ambiente de desarrollo y los permisos requeridos) en la presentación de una prueba,
dado a que el sistema se encuentra en operación normal,
quiero que el sistema detecte el fallo
para que puedan actuar las estrategias de recuperación del sistema.
Esto debe suceder en 9 de 10 veces

Integridad: Respuestas de prueba técnica

Como empleado de RRHH
cuando un aspirante realiza una prueba técnica
dado que el sistema opera normalmente
quiero que se registren las respuestas del aspirante
para utilizarlo como evidencia si el aspirante niega haber realizado la prueba
Esto debe suceder 100% de las veces.

Confidencialidad: Datos personales aspirante

Como aspirante
cuando me registro en la plataforma ABC Jobs
dado que el sistema se encuentra en operación normal
quiero que solo yo pueda ver dichos datos
para respetar mi privacidad
esto debe suceder el 100% de las veces

Recuperación: Motor de emparejamiento

Como empleado RRHH,
cuando se detecta un error en el motor de emparejamiento al crear una vacante,
dado que el sistema está en operación normal
quiero que el motor de emparejamiento se recupere
para poder encontrar candidatos que cumplan de mejor forma los requisitos
Esto debe suceder en 9 de 10 casos.

Intento de suplantación

Como administrador,
Cuando se detecta un intento de suplantación durante una prueba técnica,
Quiero medidas de seguridad automáticas durante las pruebas como mediante patrones de tecleado y lectura de textos aleatorios
Para poder prevenir suplantaciones
Esto debe suceder cuando se intente acceder al sistema 2 veces incorrectamente

Detección: Registro aspirante

Como aspirante
cuando se produce un fallo durante el registro
dado que el sistema está en operación normal,
quiero que se detecte el error
para saber que no he sido registrado.
Esto debe suceder en 19 de 20 casos.

Detección: caída del servicio

Como usuario administrador,
cuando se detecte una caída del servicio en un componente crítico,
dado que se necesita minimizar el tiempo de inactividad y restaurar el servicio rápidamente,
quiero recibir notificaciones en tiempo real con detalles sobre la falla y acciones sugeridas para la recuperación,
para poder tomar medidas inmediatas y reducir el impacto en los usuarios.
Esto debe suceder en menos de 1 minuto.

Detección: Crear Vacante

Como empleado de Recursos Humanos (RRH)
Cuando el componente de crear vacantes falle,
Dado que el sistema opera con normalidad,
Quiero detectar el error
Para identificar rápidamente las razones por las cuales alguna vacante no se crea correctamente
Esto debe suceder 99%

Recuperación: Selección candidatos

Como Administrador,
cuando se detecte una falla en el componente de selección de candidatos en el portal Web
dado que el sistema opera normalmente,
quiero que el componente se recupere
para minimizar el impacto en la operación.
Esto debe suceder el 99.0% de las veces

Detección: Motor de emparejamiento

Como empleado de RRHH,
cuando se presente un error en el motor de emparejamiento al publicar una vacante,
dado a que el sistema se encuentra en operación normal,
quiero que se detecte este error
para conocer el error exacto que no permitió terminar la operación.
Esto debe suceder en 9 de 10 veces.

Detección: Selección de candidatos

Como administrador,
Cuando el componente de selección de candidatos falle,
Dado que el sistema opera con normalidad,
Quiero detectar el error,
Para poder realizar un evento
Esto debe suceder el 99% de las veces.

Recuperación: Pruebas aspirantes

Como aspirante,
cuando se detecta un error en el componente de pruebas,
dado que el sistema se encuentra en operación normal,
quiero que este componente se recupere
para que pueda terminar de presentar mi prueba.
Esto debe suceder en un minuto.

Recuperación: Pagos automáticos

Como componente voting
cuando el componente de facturación responda incorrectamente
dado que el sistema opera normalmente
quiero que el componente sea reemplazado por uno de respaldo
para que las facturaciones sigan funcionando correctamente
esto debe suceder en menos de 5s

Confidencialidad: Acceder a perfiles de candidatos

Como empleado de RRHH de una empresa asociada,
cuando accedo a la información de candidatos y realizo validaciones de procesos,
dado que el sistema opera normalmente,
quiero ver unicamente la información necesaria para mi función,
para no divulgar datos innecesarios o sensibles.
Esto debe suceder el 90% de las veces.

Integridad: Pruebas a aspirantes

Como empleado de RRHH,
cuando creo las pruebas técnicas necesarias para optar a una vacante,
dado que el sistema se encuentra en operación normal,
quiero que solo yo pueda modificar o eliminar dichas pruebas
para conservar su integridad.
Esto debe suceder el 100% de las veces.

Confidencialidad: Administración contratos

Como empleado de RRHH
cuando contrato un talento
dado que el sistema opera normalmente
quiero que solo el contratado y los empleados de RRHH de mi empresa pueden revisar los detalles del contrato
para prevenir que empleados de otras empresas se hagan con nuestros talentos.
Esto debe suceder 100% de las veces.

Recuperación: Generación contratos

Como empleado RRHH
cuando la creación de un contrato genere un error
dado que el sistema opera normalmente
quiero que el componente de administración se recupere
para crear el contrato satisfactoriamente
esto debe suceder el 99.0% de las veces

Recuperación: Registro de candidatos

Como administrador
cuando se detecta un fallo durante el registro de un aspirante
dado que el sistema está en operación normal,
quiero que el componente de registro se recupere
para que profesionales interesados puedan registrarse.
Esto debe suceder en 5 minutos.

Integridad: Creación grupo de trabajo

Como empleado RRHH de una empresa asociada
cuando cree un grupo de trabajo relacionado con un proyecto
dado que el sistema opera normalmente
quiero que solo yo pueda editar dicho grupo de trabajo
para asegurar la integridad de la composición del equipo de trabajo
esto debe suceder el 100% de las veces

Confidencialidad: Intento fallido de inicio session

Como empleado de RRHH,
cuando hay un intento fallido de inicio con mi cuenta
dado que el sistema opera normalmente
quiero ser notificado para garantizar la seguridad de mi cuenta.
Esto debe suceder el 9 de 10 veces.

Detección: Pagos automáticos

Como componente de facturación
cuando la pasarela de pagos genere error
dado que el sistema opera normalmente
quiero detectar el fallo
para notificar el fallo a las empresas y trabajadores involucrados
esto debe suceder 9/10 casos (la detección del fallo)

Integridad: Modificar Contratos

Como Aspirante
cuando se modifique mi contrato,
dado que el sistema opera normalmente,
quiero que se registre quién ha realizado el cambio
para utilizarlo como evidencia si se niega haber realizado el cambio
Esto debe suceder el 90% de las veces para garantizar la confidencialidad y la integridad de los registros de contrato.

Confidencialidad: Pruebas a aspirantes

Como empleado de RRHH,
cuando creo las pruebas técnicas necesarias para optar a una vacante,
dado que el sistema se encuentra en operación normal,
quiero que solo yo pueda ver las respuestas de dichas pruebas
para conservar su confidencialidad.
Esto debe suceder el 100% de las veces.

Detección: Generación contratos

Como empleado RRHH
cuando la creación de un contrato genere un error
dado que el sistema opera normalmente
quiero que el error sea detectado
para saber que el contrato no pudo ser generado y conocer la razón
esto debe suceder 9 de cada 10 veces

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.