El objetivo del proyecto es crear un sistema de control de acceso en el Consorcio Portuario Regional de la ciudad de Mar del Plata. Con la mayor disponibilidad de las plataformas en la nube, los usuarios pueden acceder a la infraestructura que necesitan para escalar la capacidad sin tener que administrarlo todo.
Análisis FODA
No existe experiencia previa en el desarrollo de hardware especializado, ni en su integración en un sistema de este calibre. Con experiencia con un sistema anterior, los usuarios pueden mostrarse reacios a adoptar la nueva solución.
Especificaciones a resolver
Descripción El empleado se presenta en uno de los puntos de acceso con sus credenciales y el guardia permite o niega el acceso en base a la información del sistema. Descripción El mecanismo de vigilancia registra todos los eventos importantes en un historial que no se puede editar.
Modalidad de trabajo
La principal herramienta utilizada para versionar el código fue Git, y para sincronizar el repositorio creado a través de Internet se utilizó GitHub. Entre estas extensiones cabe destacar la extensión Live Share, que permite a dos o más personas editar en tiempo real archivos alojados en un único ordenador a través de la red.
Diseño de arquitectura
Archivo: el nombre del archivo que contiene la información de las tarjetas incluidas en el rango especificado. Para estas situaciones se crea un archivo de noticias, en el que cada línea representa una tarjeta, con el mismo formato explicado anteriormente. Al leer una tarjeta, el primer paso es buscar en el archivo de noticias, que contiene la actualización más reciente para ese número de tarjeta.
Finalmente, el dispositivo genera una nueva línea en el archivo de registro con el resultado de la lectura. Por ejemplo, con el tema "a/+/c" el cliente se suscribirá a todos los temas que comiencen con "a" en el primer nivel y tengan "c" en el tercer nivel. Por otro lado, tanto los clientes web como el servidor se suscriben al canal que termina en "/s" y publican en el canal que termina en "/r".
El mensaje de registro de envío le indica al dispositivo que cargue los archivos del historial de lectura de su tarjeta en el servidor.
Implementación
Al desarrollar las interfaces de usuario de los clientes web, se decidió utilizar la biblioteca Vue.js, que se basa en JavaScript, HTML y CSS. La entidad que representa a un trabajador en el sistema es la Persona, la cual cuenta con un número CUIL o DNI para indicar su carácter único y otros datos personales. La tarea de los usuarios es mantener actualizada la información intrínseca de los trabajadores en las bases de datos del sistema.
Si el Ingreso cuenta con Contenedor, deberá contar con un Vehículo autorizado para transportar contenedores. La entidad más importante es la Entrada, que almacena toda la información relacionada con la entrada (o salida) de un empleado por un área restringida del puerto. Todo acceso se realiza mediante una Tarjeta, la cual debe estar activada en el momento de su uso.
La entidad principal es Guest Entry, que almacena toda la información relacionada con la entrada (o salida) de un huésped a través de un área portuaria restringida.
Seguridad
Además, ofrece una funcionalidad conocida como Política, que permite agrupar una serie de validaciones de seguridad que los usuarios deben cumplir para un dispositivo en particular para poder acceder a sus datos. En primer lugar, existe un middleware de autenticación que descalifica a aquellos que no han iniciado sesión para realizar acciones en el sistema. Luego, gracias a la flexibilidad que ofrece el framework para generar nuevas políticas y el sistema de roles de cuentas de usuario, se construyeron una serie de políticas para garantizar que solo los usuarios autorizados puedan acceder y/o modificar los recursos proporcionados por la aplicación del servidor.
Dos de los ataques maliciosos más extendidos contra sistemas web son los conocidos como SQL Inyección, que ataca a bases de datos, y CSRF (Cross-site request forgery), que ataca a la autenticación del sistema. Este token se envía con cada solicitud que realiza el usuario, validando su autenticidad en el sistema. El sistema está destinado únicamente para su uso dentro del consorcio portuario y no es accesible fuera de él.
Gracias a esto, se proporciona otra capa de seguridad, ya que los datos que viajan a través de esta red no pueden ser interceptados por personas ajenas a la red, ni tampoco se envían a través de Internet.
Puesta en marcha
Al momento de instalar los dispositivos de hardware, fue necesario integrarlos al sistema conectando cada uno de ellos al área limitada en la que trabaja. Con el fin de capacitar al personal en el uso del sistema, se realizaron demostraciones en diferentes puestos de trabajo sobre las funcionalidades destinadas a cada tipo de usuario. Dado que no había documentación ni soporte de ningún responsable del sistema anterior, fue necesario realizar ingeniería inversa en las bases de datos originales para obtener los datos y las relaciones necesarias para migrar.
Esta base de datos fue desarrollada sobre el motor Microsoft SQL Server, por lo que fue necesario crear un script para transferir estos datos a nuestro sistema de base de datos MySQL. En primer lugar, era necesario reconocer las tablas y columnas del sistema anterior, ya que no tenía la misma estructura de datos que el nuevo sistema. Uno de los principales inconvenientes de la estructura de datos de la base de datos original fue la replicación de la información.
Otro desafío surgió cuando vimos que, debido a que el sistema anterior no contaba con validaciones de datos, muchas veces había información en los campos diferente a lo que se pretendía originalmente.
Consideraciones de licencia e innovación
Gracias a la creación de una aplicación SPA (Single Page Application), los tiempos de respuesta de la interfaz de usuario son muy inferiores a los de un sitio web convencional, porque se recarga la información deseada y no toda la página. También utiliza columnas JSON, lo que implica la posibilidad de contener datos de diferente naturaleza, ofreciendo cierta flexibilidad propia de una base de datos NoSQL.
Métricas
Laravel, el framework elegido, utiliza PHP para el backend, que es donde se encuentra la mayor cantidad de código, como se muestra en la Figura 12.3. Utilizando el sistema de registro incluido en el broker MQTT Mosquitto, con 11 dispositivos de hardware conectados en todo momento, a. El gráfico 12.4 muestra cómo se distribuyen las consultas a lo largo de las 24 horas de un día laborable, mostrando una serie de picos.
El gráfico 12.5 muestra la distribución de las búsquedas a lo largo de una semana. En los datos correspondientes entre lunes y viernes se observa un comportamiento similar al observado en el Gráfico 12.4. Cuando el sistema dijo que su entrada estaba bloqueada y el guardia no le dejó entrar.
Cuando el sistema decía que tenía el acceso habilitado y el guardia no le dejaba pasar.
Conclusiones
Al querer escuchar al gran número de usuarios individualmente y satisfacer a todos ellos en cuanto a sus necesidades, encontramos que muchos de ellos no tenían los mismos intereses hacia el sistema. Esto se puede evitar definiendo junto con el cliente una referencia funcional que conozca el flujo de trabajo en su totalidad. Esto se mejoró a lo largo del proyecto por lo que puede considerarse una habilidad adquirida.
Todos estos aspectos, que en cierto modo son negativos, porque retrasaron lo que se estimaba que era el tiempo del proyecto, fueron aspectos personalmente positivos, porque son lecciones aprendidas que permiten a uno hacerlo mejor en el futuro para tomar decisiones. En cuanto al sistema en sí, se puede decir que tras un tiempo en funcionamiento cumple su función correctamente, aparte de algunos aspectos mejorables. La redacción del informe se retrasó porque durante el desarrollo del sistema continuamos con el trabajo de curso, exámenes y otros trabajos, lo que antes no nos permitía ejecutar el informe en paralelo con el sistema.
Pero por otro lado, como ya se mencionó, el sistema se modificó mucho durante el proyecto, por lo que el informe se redactó cuando ya estaba estable.
Trabajos Futuros
Finalmente, el sistema de control de acceso aquí mencionado está enfocado al acceso por puerta, ya que para eso está pensado.
Glosario
Aprendizaje automático: un subcampo de la informática y una rama de la inteligencia artificial dedicada al estudio de algoritmos informáticos que mejoran automáticamente con la experiencia. Nube: una vasta red de servidores remotos en todo el mundo conectados para actuar como un ecosistema único. ORM: Técnica de programación que consiste en convertir tablas de bases de datos en un conjunto de entidades utilizando un lenguaje de programación orientado a objetos.
Esto crea efectivamente una base de datos virtual que se puede usar en el lenguaje de programación para facilitar las consultas a la base de datos.
Bibliografía
La primera pestaña (Figura 17.2) en la creación de persona está destinada a cargar datos personales, así como una imagen de perfil que se utiliza para imprimir en la tarjeta de acceso. El cuadro de la derecha muestra los datos a cumplimentar por el guardia, con referencia a la entrada. Si no desea seleccionar todos los datos de la tabla, puede especificar las columnas requeridas.
Laravel facilita la validación de los datos que los usuarios envían a través de varios formularios de solicitud. De esta manera, se puede garantizar la coherencia e integridad de la información en las distintas tablas de la base de datos. La gestión de la protección en las zonas portuarias es un problema difícil de gestionar en todo el mundo.
Tolerancia a fallos, que garantiza el funcionamiento del sistema incluso cuando la red local no está disponible. En cuanto a la documentación física, el sistema cuenta con un módulo que posibilita su digitalización. Además como en el caso de imprimir desde la interfaz podrás elegir el escáner.