UMS
El User managemente system es la aplicación central para manejo de identidad de todos los usuarios de Explorax. Toda aplicación que tenga un manejo de usuario dependera del UMS en algún punto. Sus funcionalidades principales son:
- Registro y manejo de usuarios.
- Administrar los permisos, roles.
- Control de acceso que tiene cada usuario a las aplicaciones de Explorax.
Backend
El backend de la aplicación es una REST API, compuesta por 2 partes principales :
API Gateway:Funciona como enrutador al exponer la ruta de cada endpoint.Lambdas:Se tiene una lambda por cada enpoint para ejecutar el codigo necesario para dicho endpoint.
A partir de ahora el backend sera representado como el simbolo a la izquierda.

Redes
Los servicios del UMS viven dentro de una VPC dedicada (Virtual private cloud). La VPC esta dividida en subredes públicas y privadas, para proteger los recursos sensibles como las bases de datos, de tal manera que solo pueden ser accedidos a través de una VPN. Servicios externos como MongoDB, o manejados por AWS son conectado por PrivateLink endpoints.

Arquitectura
Después de todo ese contexto, a continuación se encuentra la arquitectura del UMS.
-
Los desarrolladores pueden interactuar con los recursos de la VPC por 3 canales principales:
a.
IAM Identity Center: Los devs pueden tener acceso a la consola de AWS y la AWS CLI al contar con su propio usuario manejado IAM identity center. Todos los usuarios deben tener 2FA. Permitiendo a los devs, sesiones cortas para interactuar directamente con AWS.b.
VPN: Para recursos que viven en redes privadas (como bases de datos), la única manera de acceder a ellos es a travéz de un recurso público (o. ej un servidor) que tiene permisos para comunicarse con el recurso privado. Para ello se utiliza la VPN Tailscale para conectarse a un servidor que sirve como proxy para los recursos privados.c.
Github Actions: Al publicar código a las ramas principales del repositorio, las Github Actions despliegan los cambios a AWS a utilizando Cloudformation. -
Una jumpbox es simplemente una EC2 en una red pública que permite a usuarios autenticados y autorizados acceder a recursos en redes privadas.
-
La información de usuarios se almacena en una instancia de RDS en una subred privada.
-
Servicios externos se acceden a partir de PrivateLink endpoints.
-
Los usuarios acceden a la web desplegada en AWS amplify.
-
El backend mencionado antes interactua con la base de datos y servicios externos.
