lunes, 22 de mayo de 2023

Edward Snowden: el legado. ¿Lo que hizo fue bueno o malo?

 Lo que hizo Edward Snowden

En el 2013, el experto en computación y previo administrador de sistemas de la CIA Edward Snowden reveló documentos confidenciales del gobierno a la prensa sobre la existencia de programas de vigilancia gubernamentales. Según expertos legales y el gobierno estadounidense, las acciones de Snowden violaron el Decreto de Espionaje de 1917, el cual identifica la divulgación de secretos de estado como un acto de traición. A pesar de haber violado la ley, Snowden argumentó que tenía una obligación moral para actuar. Justificó sus acciones como “soplón” declarando que tenía el deber de “informar al público sobre aquello que se hace en su nombre y aquello que se hace en su contra.” De acuerdo a Snowden, las violaciones de privacidad hechas por el gobierno tenían que ser expuestas sin importar la legalidad.

Muchos estuvieron de acuerdo con Snowden. Jesselyn Radack del Proyecto de Responsabilidad Gubernamental defendió las acciones de Snowden como éticas, argumentando que él actuó con un sentido de bienestar para el público: “Es posible que Snowden haya violado un acuerdo de confidencialidad, el cual no es un juramento de lealtad sino un contrato, el cual es menos importante que el contrato social que una democracia tiene con sus ciudadanos.” Otros argumentaron que aunque Snowden fuera legalmente culpable, no era éticamente culpable porque la ley misma era injusta y anticonstitucional.

El fiscal general de los Estado Unidos, Eric Holder, no encontró la justificación de Snowden convincente. Holder declaró, “El violó la ley. Causo daño a nuestra seguridad nacional y pienso que debe hacerse responsable por sus acciones.”

Periodistas tenían sentimientos encontrados en cuanto a las implicaciones éticas de las acciones de Snowden. La junta editorial del New York Times declaró, “Es posible que el haya cometido un crimen… pero ha hecho un gran servicio a su país.” En una pieza editorial del mismo periódico, Ed Morrissey argumentó que Snowden no era un héroe sino un criminal: “al divulgar información sobre el comportamiento en lugar de reportarlo por vías legales, Snowden optó por violar la ley.” De acuerdo a Morrissey, Snowden debe ser juzgado legalmente por sus acciones, argumentando que sus acciones violaron una ley “que tiene como fin salvaguardar datos e información legitima de seguridad nacional de nuestros enemigos; está diseñada para proteger a los estadounidenses.”

Según The University of Texas at Austin (https://ethicsunwrapped.utexas.edu/case-study/edward-snowden-traidor-o-heroe?lang=es)


Opinión personal

Esta acción me parece extremadamente buena. Gracias a él existe la posibilidad de que surjan nuevos movimientos en pro de la confidencialidad y privacidad de nuestros datos en la red, claramente los actos de la USA es una ofensa grave tanto a lo ético como moral hacia los internautas ya que sin el consentimiento de nosotros estaban almacenando y recolectando información que ni sabemos que se hizo o hacen con la información de nosotros que en cualquier momento nos podemos ver afectados por los actos de ellos. 

También tengo que decir que la acción de Edward hubiera sido más potente y eficaz si hubiera acudido a las autoridades u otra forma legal de denunciar los hechos, además al él divulgar los hechos también se puede crear una fuga y aumentar las probabilidades de que la información caiga en manos de delincuentes.

En conclusión, el acto estuvo bueno pero la forma de ejecución no fue la más adecuada ni la más eficaz 


Los 3 principales tipos de ataque utilizados por los hackers a nivel mundial

Broken Acces Control (Control de Acceso Roto):


El control de acceso aplica una política tal que los usuarios no pueden actuar fuera de sus permisos previstos. Las fallas generalmente conducen a la divulgación, modificación o destrucción no autorizada de todos los datos oa la realización de una función comercial fuera de los límites del usuario. Las vulnerabilidades comunes de control de acceso incluyen:

  • Violación del principio de privilegio mínimo o denegación por defecto, donde el acceso solo debe otorgarse para capacidades, roles o usuarios particulares, pero está disponible para cualquiera.

  • Omitir las comprobaciones de control de acceso mediante la modificación de la URL (alteración de parámetros o navegación forzada), el estado interno de la aplicación o la página HTML, o mediante el uso de una herramienta de ataque que modifica las solicitudes de API.

  • Permitir ver o editar la cuenta de otra persona, al proporcionar su identificador único (referencias de objetos directos inseguros)

  • Acceso a la API sin controles de acceso para POST, PUT y DELETE.

  • Elevación de privilegio. Actuar como usuario sin haber iniciado sesión o actuar como administrador cuando se ha iniciado sesión como usuario.

  • Manipulación de metadatos, como la reproducción o manipulación de un token de control de acceso JSON Web Token (JWT), o una cookie o un campo oculto manipulado para elevar los privilegios o abusar de la invalidación de JWT.

  • La configuración incorrecta de CORS permite el acceso a la API desde orígenes no autorizados/no confiables.

  • Forzar la navegación a páginas autenticadas como usuario no autenticado o a páginas privilegiadas como usuario estándar.


Como prevenir

El control de acceso solo es efectivo en el código del lado del servidor confiable o API sin servidor, donde el atacante no puede modificar la verificación de control de acceso o los metadatos.

  • Excepto para los recursos públicos, denegar por defecto.

  • Implemente mecanismos de control de acceso una vez y reutilícelos en toda la aplicación, incluida la minimización del uso compartido de recursos de origen cruzado (CORS).

  • Los controles de acceso al modelo deben imponer la propiedad de los registros en lugar de aceptar que el usuario pueda crear, leer, actualizar o eliminar cualquier registro.

  • Los modelos de dominio deben hacer cumplir los requisitos de límite comercial de aplicaciones únicas.

  • Deshabilite la lista de directorios del servidor web y asegúrese de que los metadatos del archivo (p. ej., .git) y los archivos de copia de seguridad no estén presentes en las raíces web.

  • Registrar fallas de control de acceso, alertar a los administradores cuando corresponda (por ejemplo, fallas repetidas).

  • Tasa de límite API y acceso al controlador para minimizar el daño de las herramientas de ataque automatizado.

  • Los identificadores de sesión con estado deben invalidarse en el servidor después de cerrar la sesión. Los tokens JWT sin estado deberían ser de corta duración para minimizar la ventana de oportunidad para un atacante. Para los JWT de mayor duración, se recomienda encarecidamente seguir los estándares de OAuth para revocar el acceso.

Los desarrolladores y el personal de control de calidad deben incluir una unidad de control de acceso funcional y pruebas de integración.







Opinión personal

Este ataque lo entiendo como una violación de permisos, es decir, suponiendo el caso de que yo soy trabajador de una compañía o usuario de los servicios de esa compañía y tengo un rol asignado con ciertos permisos y actividades entonces un ataque de este tipo (Broken Acces Control) lo que conlleva es que mis privilegios y permisos asciendan o descender los de las otras personas, esto con el fin de obtener información confidencial, actos delictivos como extorsión, divulgación de información, personas activistas, etc. 


Afortunadamente existen recomendaciones y controles para bajar la probabilidad de que este tipo de ataques sucedan y evitar acciones imprevistas en nuestro sistema 


Cryptographic Failures (Fallas Criptográficas):

Lo primero es determinar las necesidades de protección de los datos en tránsito y en reposo. Por ejemplo, las contraseñas, los números de tarjetas de crédito, los registros de salud, la información personal y los secretos comerciales requieren protección adicional, principalmente si esos datos están sujetos a las leyes de privacidad, por ejemplo, el Reglamento General de Protección de Datos (GDPR) de la UE, o regulaciones, por ejemplo, la protección de datos financieros. como el estándar de seguridad de datos PCI (PCI DSS). Para todos estos datos:

  • ¿Se transmite algún dato en texto claro? Esto se refiere a protocolos como HTTP, SMTP, FTP que también usan actualizaciones de TLS como STARTTLS. El tráfico de Internet externo es peligroso. Verifique todo el tráfico interno, por ejemplo, entre balanceadores de carga, servidores web o sistemas back-end.

  • ¿Se utilizan protocolos o algoritmos criptográficos antiguos o débiles de forma predeterminada o en código antiguo?

  • ¿Están en uso las claves criptográficas predeterminadas, se generan o reutilizan claves criptográficas débiles, o falta una gestión o rotación de claves adecuada? ¿Se registran las claves criptográficas en los repositorios de código fuente?

  • ¿No se aplica el cifrado, por ejemplo, faltan directivas de seguridad o encabezados de encabezados HTTP (navegador)?

  • ¿El certificado del servidor recibido y la cadena de confianza están debidamente validados?

  • ¿Se ignoran, reutilizan o no se generan los vectores de inicialización lo suficientemente seguros para el modo criptográfico de operación? ¿Se está utilizando un modo de operación inseguro como ECB? ¿Se usa el cifrado cuando el cifrado autenticado es más apropiado?

  • ¿Se utilizan contraseñas como claves criptográficas en ausencia de una función de derivación de clave base de contraseña?

  • ¿Se utiliza la aleatoriedad con fines criptográficos que no fueron diseñados para cumplir con los requisitos criptográficos? Incluso si se elige la función correcta, ¿debe ser sembrada por el desarrollador y, de no ser así, el desarrollador ha sobrescrito la funcionalidad de siembra fuerte integrada con una semilla que carece de suficiente entropía/imprevisibilidad?

  • ¿Se utilizan funciones hash en desuso, como MD5 o SHA1, o se utilizan funciones hash no criptográficas cuando se necesitan funciones hash criptográficas?

  • ¿Están en uso métodos de relleno criptográfico en desuso, como PKCS número 1 v1.5?

  • ¿Son explotables los mensajes de error criptográficos o la información del canal lateral, por ejemplo, en forma de ataques de oráculo de relleno?


Como prevenir

  • Clasificar los datos procesados, almacenados o transmitidos por una aplicación. Identifique qué datos son confidenciales de acuerdo con las leyes de privacidad, los requisitos reglamentarios o las necesidades comerciales.

  • No almacene datos confidenciales innecesariamente. Deséchelo lo antes posible o use tokenización compatible con PCI DSS o incluso truncamiento. Los datos que no se retienen no se pueden robar.

  • Asegúrese de cifrar todos los datos confidenciales en reposo.

  • Asegúrese de que se implementen algoritmos, protocolos y claves estándar sólidos y actualizados; utilizar una gestión de claves adecuada.

  • Cifre todos los datos en tránsito con protocolos seguros como TLS con cifrado de confidencialidad directa (FS), priorización de cifrado por parte del servidor y parámetros seguros. Aplique el cifrado mediante directivas como HTTP Strict Transport Security (HSTS).

  • Deshabilite el almacenamiento en caché para las respuestas que contienen datos confidenciales.

  • Aplicar los controles de seguridad requeridos según la clasificación de datos.

  • No utilice protocolos heredados como FTP y SMTP para transportar datos confidenciales.

  • Almacene contraseñas utilizando funciones de hashing saladas y adaptables sólidas con un factor de trabajo (factor de demora), como Argon2, scrypt, bcrypt o PBKDF2.

  • Los vectores de inicialización deben elegirse de forma adecuada para el modo de operación. Para muchos modos, esto significa usar un CSPRNG (generador de números pseudoaleatorios criptográficamente seguro). Para los modos que requieren un nonce, el vector de inicialización (IV) no necesita un CSPRNG. En todos los casos, el IV nunca debe usarse dos veces para una clave fija.

  • Utilice siempre cifrado autenticado en lugar de solo cifrado.

  • Las claves deben generarse criptográficamente al azar y almacenarse en la memoria como matrices de bytes. Si se utiliza una contraseña, debe convertirse en una clave a través de una función de derivación de clave base de contraseña adecuada.

  • Asegúrese de que se utilice la aleatoriedad criptográfica cuando corresponda y de que no se haya sembrado de forma predecible o con baja entropía. La mayoría de las API modernas no requieren que el desarrollador genere CSPRNG para obtener seguridad.

  • Evite las funciones criptográficas obsoletas y los esquemas de relleno, como MD5, SHA1, PKCS número 1 v1.5.

  • Verifique de forma independiente la eficacia de la configuración y los ajustes.





Opinión personal

Hoy en día se maneja mucha información delicada a través de la web y muchos atacantes están a la espera para revelar esa información, por eso es necesario usar una encriptación (codificar cierta información) y asegurar que única y exclusivamente los sistemas de nuestra organización y usuarios puedan desencriptar la información. Algo importante a tener en cuenta es que es crucial no utilizar técnicas de cifrado antiguas porque posiblemente el nivel de seguridad y confianza sea muy bajo. 

Injection (Inyección)


Una aplicación es vulnerable a un ataque cuando:

  • La aplicación no valida, filtra ni desinfecta los datos proporcionados por el usuario.

  • Las consultas dinámicas o las llamadas no parametrizadas sin escape consciente del contexto se utilizan directamente en el intérprete.

  • Los datos hostiles se utilizan dentro de los parámetros de búsqueda de mapeo relacional de objetos (ORM) para extraer registros confidenciales adicionales.

  • Los datos hostiles se utilizan o concatenan directamente. El comando SQL o contiene la estructura y los datos maliciosos en consultas dinámicas, comandos o procedimientos almacenados.

Algunas de las inyecciones más comunes son SQL, NoSQL, comando OS, asignación relacional de objetos (ORM), LDAP e inyección de lenguaje de expresión (EL) o biblioteca de navegación de gráficos de objetos (OGNL). El concepto es idéntico entre todos los intérpretes. La revisión del código fuente es el mejor método para detectar si las aplicaciones son vulnerables a las inyecciones. Se recomienda encarecidamente la prueba automatizada de todos los parámetros, encabezados, URL, cookies, JSON, SOAP y entradas de datos XML. Las organizaciones pueden incluir herramientas de prueba de seguridad de aplicaciones estáticas (SAST), dinámicas (DAST) e interactivas (IAST) en la canalización de CI/CD para identificar fallas de inyección introducidas antes de la implementación de producción.


Como prevenir

Prevenir la inyección requiere mantener los datos separados de los comandos y consultas:

  • La opción preferida es usar una API segura, que evita usar el intérprete por completo, proporciona una interfaz parametrizada o migra a herramientas de mapeo relacional de objetos (ORM).
    Nota: Incluso cuando están parametrizados, los procedimientos almacenados aún pueden introducir inyección SQL si PL/SQL o T-SQL concatenan consultas y datos o ejecutan datos hostiles con EXECUTE IMMEDIATE o exec().

  • Utilice una validación de entrada positiva del lado del servidor. Esta no es una defensa completa ya que muchas aplicaciones requieren caracteres especiales, como áreas de texto o API para aplicaciones móviles.

  • Para cualquier consulta dinámica residual, escape los caracteres especiales usando la sintaxis de escape específica para ese intérprete.
    Nota: las estructuras SQL, como los nombres de las tablas, los nombres de las columnas, etc., no se pueden escapar y, por lo tanto, los nombres de estructuras proporcionados por el usuario son peligrosos. Este es un problema común en el software de redacción de informes.

  • Utilice LIMIT y otros controles de SQL dentro de las consultas para evitar la divulgación masiva de registros en caso de inyección de SQL.






Opinión personal


A mi parecer, este es un ataque muy común porque es muy común que algunas veces no se implemente un filtro de los datos que el usuario ingreso y si falta esto hay una probabilidad de que lo que se ingresó (código malicioso o ciertas sentencias SQL) pueda interactuar directamente con nuestro código y mostrar información confidencial al atacante sin que halla un aviso para la empresa ni salto de ninguna alarma.

El futuro es: SQL o NoSQL o ambos?

 ¿ Que es SQL (Bases de datos Relacionales)?

SQL es un acrónimo en inglés para Structured Query Language.  Un Lenguaje de Consulta Estructurado. Un tipo de lenguaje de programación que te permite manipular y descargar datos de una base de datos. Tiene capacidad de hacer cálculos avanzados y álgebra. Es utilizado en la mayoría de empresas que almacenan datos en una base de datos. Ha sido y sigue siendo el lenguaje de programación más usado para bases de datos relacionales. 

SQL lleva más de 30 años siendo utilizado y probablemente siga siendo utilizado durante muchos más.




según https://datademia.es/blog/que-es-sql


Historia del SQL

Los orígenes del SQL nos llevan a la década de 1970, cuando en los laboratorios de IBM, se creó el nuevo software de base de datos System R. Y para gestionar los datos almacenados en System R, se creó el lenguaje SQL. En un principio se llamó SEQUEL, un nombre que todavía se utiliza como una pronunciación alternativa para SQL, pero más tarde fue renombrado a sólo SQL.

En 1979, una compañía llamada Relational Software, que luego se convirtió en Oracle, vio el potencial comercial del lenguaje SQL y lanzó su propia versión modificada, denominada Oracle V2.

Ahora en su tercera década de existencia, el lenguaje SQL ofrece una gran flexibilidad a los usuarios soportando bases de datos distribuidas, es decir, bases de datos que se pueden ejecutar en varias redes de ordenadores a la vez. Certificado por ANSI e ISO, el lenguaje SQL se ha convertido en un estándar de lenguaje de consulta de base de datos, siendo la base de una gran variedad de aplicaciones de bases de datos bien establecidos en Internet hoy en día. Sirve tanto para propósitos empresariales como para necesidades académicas y funciona tanto en equipos individuales como en servidores de empresa.

Con el avance en la tecnología de base de datos de aplicaciones basadas en SQL se ha vuelto cada vez más asequible para el usuario normal. Esto se debe a la introducción de diversas soluciones de bases de datos SQL de código abierto como MySQL, PostgreSQL, SQLite, Firebird, y muchos más.



¿ Que es NoSQL (Bases de datos No relacionales)?

NoSQL se refiere a una base de datos no relacional o no SQL. Una base de datos relacional es un formato de bases de datos muy estructurado basado en una tabla, como MySQL u Oracle. Las bases de datos NoSQL están orientadas a los documentos y le permiten almacenar y recuperar datos en formatos que no sean tablas. Algunas de las plataformas NoSQL más conocidas son MongoDB, Elasticsearch® y Redis®.

Las aplicaciones modernas usan y generan tipos de datos complejos y que cambian constantemente, y las bases de datos relacionales no fueron diseñadas para gestionar este tipo de almacenamiento y recuperación de datos. Las bases de datos NoSQL son más flexibles y escalables.

Al trabajar con una base de datos NoSQL, usted puede agregar datos nuevos, sin tener que definirlos previamente en el esquema de la base de datos, lo que le permite procesar rápidamente grandes volúmenes de datos sin estructura, semiestructurados y estructurados.

El esquema dinámico de bases de datos NoSQL permite realizar desarrollos ágiles, que requieren iteraciones rápidas y significativas y durante los que no puede haber tiempo de inactividad.





Historia de NoSQL

Este tipo de bases de datos comenzaron a originarse en el año 1998 y no fueron creadas por una empresa específica, sino que fueron concebidas por distintas empresas y grupos independientes que buscaban soluciones específicas a sus problemas. El auge de este tipo de base de datos se produjo por la necesidad de cubrir las carencias de las RDBMS:

Escalabilidad: a fin de cubrir los requisitos de demanda de la aplicación, en las bases de datos NoSQL no resulta una tarea complicada agregar más nodos o instancias. Esto es posible debido a que las bases de datos NoSQL están diseñadas desde un principio para funcionar en entornos distribuidos.

Flexibilidad: está relacionada con el hecho de que las bases de datos NoSQL no están atadas a un esquema predefinido, con lo cual ofrecen mucha flexibilidad, ya que facilitan la persistencia de datos no estructurados o semiestructurados.

Alta disponibilidad: gracias a la escalabilidad, se garantiza la continuidad del servicio en caso de que se origine un error de software o hardware.

Rendimiento: por su naturaleza distribuida, hacen que el tiempo de respuesta de las consultas sea muy superior con respecto a las RBDMS tradicionales y que se cumplan los requisitos de latencia y rendimiento requeridos por la aplicación.


¿ El futuro es SQL o NoSQL?

Personalmente considero que las 2 técnicas van a seguir siendo vigentes por un gran rato porque ninguna de las 2 es absoluta, osea con ninguna de las 2 se puede hacer de todo, así que dependerá de como siga avanzando nuestra forma de interactuar con la información que generamos mediante el uso de dispositivos y software. Además hay que tener en cuenta que dependiendo de nuestras necesidades y objetivos vamos a utilizar SQL o NoSQL o ambas. 

Así que para dar respuesta a esta pregunta hay que tener en cuenta que tanta información se está generando, como se está generando y que estamos haciendo con ella, que hoy en día existe una gran variedad de respuestas para las preguntas anteriores  y en constante crecimiento y evolución. 

domingo, 14 de mayo de 2023

Hadoop: ¿Qué es? ¿Quién lo utiliza?

 Hadoop 

El software Apache Hadoop es un framework de código abierto que permite usar modelos sencillos de programación para almacenar y procesar de forma distribuida grandes conjuntos de datos de distintos clústeres de ordenadores. Hadoop se ha diseñado para facilitar el escalado vertical de un solo ordenador a miles de ordenadores agrupados en clústeres, cada uno de ellos con funciones locales de computación y almacenamiento. Gracias a ese diseño, Hadoop puede almacenar y procesar conjuntos de datos de muchos gigabytes o incluso petabytes de manera eficiente.

Ventajas de usar Hadoop

  • En el ecosistema de Hadoop, por mucho que los nodos, discos o bastidores fallen al ejecutar tareas en clústeres grandes, los recuperas fácilmente, ya que los datos se replican en otras partes de los clústeres.
  • Para mantener los costes a raya, el precio por terabyte de datos almacenados es menor en Hadoop que en otras plataformas. No malgastes miles ni decenas de miles de dólares en espacio de hardware. Hadoop ofrece las funciones de computación y almacenamiento en un hardware básico estándar más asequible, apenas unos cientos de dólares por terabyte.
  • Hadoop tiene el respaldo de comunidades de todo el mundo cuyo afán común es presentar funciones y conceptos nuevos con más rapidez y eficacia que los equipos internos de las empresas que trabajan en soluciones propias. La ventaja de estas comunidades de software libre es el potencial colectivo para aportar más ideas, desarrollarlas más rápido y solucionar los problemas en cuanto aparecen. Todo ello se traduce en un tiempo de lanzamiento más corto.

Funciones de Apache Hadoop

  • Hadoop permite que empresas y organizaciones de toda clase hagan investigaciones o analíticas y procesen los datos de producción, es decir, tareas que exigen procesar terabytes o petabytes de Big Data, a veces en paralelo, y almacenar conjuntos de datos diversos.
  • Las empresas de innumerables sectores (entre otros, tecnología, educación, sanidad y servicios financieros) confían en Hadoop para ejecutar tareas que tienen en común la gran diversidad, volumen y velocidad de los datos estructurados y sin estructurar que emplean.
  • Los ecosistemas de Hadoop también son fundamentales para facilitar el desarrollo de aplicaciones de inteligencia artificial (IA) y aprendizaje automático.
  • Por lo general, las empresas prefieren ejecutar los clústeres de Hadoop en recursos de nubes públicas, privadas o híbridas antes que en hardware on‑premise porque no solo se benefician de más flexibilidad y disponibilidad, sino que también mantienen los costes bajo control. Muchos proveedores de soluciones en la nube ofrecen servicios totalmente gestionados para Hadoop, como Dataproc de Google Cloud. Gracias a este tipo de servicios empaquetados previamente para Hadoop nativo de la nube, las operaciones que antes llevaban horas o días tardan apenas unos segundos o minutos. Además, las empresas solo pagan por los recursos que se utilizan.




¿Quien utiliza Apache Hadoop?

Según ChatGPT(2023): 

Facebook: 

utiliza Hadoop para almacenar y procesar petabytes de datos generados por sus usuarios.

Yahoo: 

utiliza Hadoop para indexar y analizar su gran cantidad de datos.

Twitter: 

utiliza Hadoop para almacenar y procesar grandes cantidades de datos generados por sus usuarios.

Amazon: 

utiliza Hadoop para analizar y procesar grandes volúmenes de datos de ventas y comportamiento de los clientes.

IBM: 

utiliza Hadoop para ofrecer soluciones de big data a sus clientes.


Opinión personal


Sabemos que el manejo del Big Data hoy en día es una tarea fundamental y de bastante complejidad para llevar a cabo y para solventar algunas problemáticas nacen herramientas como Apache Hadoop. Una herramienta flexible y confiable para el manejo de Big Data garantizando que no habrá perdida de datos. Lo mejor de esto es que es gratis y es mantenida por la comunidad, significa que se puede encontrar mucha ayuda en Internet en foros, páginas, vídeos,  etc. Incluso uno mismo puede hacer ciertas modificaciones necesarias para el trabajo que sea que se esté realizando. Algo que destaca de este programa es su almacenamiento distribuido y el procesamiento distribuido utilizando hardware básico, al utilizar hardware básico significa menos que el precio de uso va a ser más bajo y tener un servicio de alta calidad a precio bajo es una buena noticia. 

En cuanto a su configuración y seguridad, la empresa tras la herramienta presume de ser altamente configurable y cuneta con varios roles de inicio de sesión predeterminados para mantener la integridad de los datos no permitiendo que todo el mundo puede acceder a todos los clústeres o accediendo con ciertos permisos para que no se pueda mover o modificar cierta información sin el consentimiento de altos directivos.

En cuanto a su arquitectura, la podemos ver ilustrada en el siguiente diagrama: 








En el sitio oficial de Apache Hadoop, se hace una advertencia sobre el uso de recursos, 

                https://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html
El Programador es responsable de asignar recursos a las diversas aplicaciones en ejecución sujetas a restricciones familiares de capacidades, colas, etc. El Programador es un programador puro en el sentido de que no realiza monitoreo ni seguimiento del estado de la aplicación. Además, no ofrece garantías sobre el reinicio de tareas fallidas debido a fallas en la aplicación o fallas en el hardware. El Programador realiza su función de programación en función de los requisitos de recursos de las aplicaciones; lo hace basándose en la noción abstracta de un Contenedor de recursos que incorpora elementos como memoria, cpu, disco, red, etc.

El programador tiene una política conectable que es responsable de dividir los recursos del clúster entre las diversas colas, aplicaciones, etc. Los programadores actuales, como CapacityScheduler y FairScheduler , serían algunos ejemplos de complementos.

ApplicationsManager es responsable de aceptar envíos de trabajos, negociar el primer contenedor para ejecutar el ApplicationMaster específico de la aplicación y proporciona el servicio para reiniciar el contenedor ApplicationMaster en caso de falla. El ApplicationMaster por aplicación tiene la responsabilidad de negociar los contenedores de recursos apropiados desde el Programador, rastrear su estado y monitorear el progreso.























Big Data e Internet de las Cosas

 Internet de las cosas

El Internet de las cosas (IoT) es el proceso que permite conectar los elementos físicos cotidianos al Internet: desde los objetos domésticos comunes, como las bombillas de luz, hasta los recursos para la atención de la salud, como los dispositivos médicos; las prendas y los accesorios personales inteligentes; e incluso los sistemas de las ciudades inteligentes.

Los dispositivos del IoT que se encuentran dentro de esos objetos físicos suelen pertenecer a una de estas dos categorías: son interruptores (es decir, envían las instrucciones a un objeto) o son sensores (recopilan los datos y los envían a otro lugar).

Funcionamiento del IoT

El término IoT hace referencia a los sistemas de dispositivos físicos que reciben y transfieren datos a través de las redes inalámbricas, con poca intervención humana. Es posible gracias a la integración de dispositivos informáticos en todo tipo de objetos.

Por ejemplo, un termostato inteligente (es decir, que utiliza el IoT) recibe los datos de la ubicación de su automóvil inteligente, y ambos dispositivos conectados le permiten ajustar la temperatura de su casa a pesar de que no se encuentre allí.

El funcionamiento de los sistemas de IoT tradicionales consiste en enviar, recibir y analizar los datos de forma permanente en un ciclo de retroalimentación. Según el tipo de tecnología de IoT, las personas o los sistemas de inteligencia artificial y aprendizaje automático (IA/ML) pueden analizar estos datos casi de inmediato o durante cierto tiempo.

Por ejemplo, para saber cuándo es ideal controlar el termostato antes de volver a casa, el sistema de IoT puede conectarse a la API de Google Maps y, de este modo, obtener información actual sobre el tráfico en el área. Además, puede utilizar los datos a largo plazo del automóvil para conocer sus hábitos de conducción. Por otra parte, las empresas de servicios públicos tienen la posibilidad de analizar los datos de IoT de los clientes con termostatos inteligentes para optimizar el sistema en general.

IoT Empresarial

Por lo general, el IoT capta la atención de los consumidores, cuyas experiencias con las tecnologías, como los relojes inteligentes, se ven afectadas por las preocupaciones en torno a la seguridad y la privacidad que supone el hecho de estar conectados de forma permanente. Esta perspectiva se aplica a todos los tipos de proyectos de IoT empresarial, especialmente cuando el usuario final es el público en general.

Las soluciones de IoT para las empresas les permiten mejorar los modelos comerciales actuales y entablar nuevas relaciones con los clientes y los partners, pero también implican ciertos desafíos. El volumen de datos que genera un sistema de dispositivos inteligentes (lo cual se conoce como big data) puede ser abrumador. El proceso de integración del big data en los sistemas actuales y la configuración del análisis de los datos para poder utilizar la información puede resultar complicado.

La seguridad es un aspecto muy importante que se debe considerar durante el diseño de los sistemas de IoT. Aun así, para muchas empresas vale la pena hacer el esfuerzo: hay casos prácticos exitosos en casi todos los sectores.





¿Qué es el Big Data?


El término “big data” abarca datos que contienen una mayor variedad y que se presentan en volúmenes crecientes y a una velocidad superior. Esto también se conoce como “las tres V”.

Dicho de otro modo, el big data está formado por conjuntos de datos de mayor tamaño y más complejos, especialmente procedentes de nuevas fuentes de datos. Estos conjuntos de datos son tan voluminosos que el software de procesamiento de datos convencional sencillamente no puede gestionarlos. Sin embargo, estos volúmenes masivos de datos pueden utilizarse para abordar problemas empresariales que antes no hubiera sido posible solucionar.



Comentario personal

Según las definiciones presentadas sobre lo que es el Big Data y el IoT (Internet of Things) extraídas de páginas con renombre en el mundo de la tecnología como lo es Oracle y Red Hat, puedo entender estos 2 términos: 

IoT: 

Es una tendencia que se basa en la recolección de información de ciertos dispositivos a través de internet, con le fin de analizar a la población que hace uso de dispositivos que recolectan la información. Esta tendencia en mi opinión me gusta y me intriga, de hecho hago parte del movimiento ya que en la mayoría de sitios webs, apps, dispositivos, etc. Que se puede recolectar información, yo lo permito y lo consiento (siempre y cuando no sea información MUY personal y delicada) porque confío en que ese tipo de estadísticas serán usadas para el bien común, es decir, en la mejoría de servicios tanto para el cliente como para el dueño, aunque han habido varias pruebas de que hay ciertas empresas que utilizan la información de usuarios de manera ilícita y con fines lucrativos vendiendo dicha información a terceros sin el consentimiento de los usuarios y no hay que perder de vista que esta situación también tiene que ver con la ciberseguridad que claramente es un campo que está intrínsicamente involucrado en el trabajo del manejo y recolección de datos. 

Big Data: 

El Big Data, como su nombre lo indica, es el manejo de gran cantidad de información. Hoy en día los dispositivos tecnológicos que una persona manipula en su día a día recolectan una gran cantidad de información valiosa para las empresas cuando se trata de predecir, analizar o descubrir y a partir de ahí es que decimos que hay big data. Para poder trabajar de manera exitosa con esta gran cantidad de información no lo podemos hacer con las técnicas tradicionales, por eso es que nacen nuevas técnicas y métodos junto con nuevas tecnologías diseñadas específicamente y especialmente para un trabajo de Big Data, que es un proceso ETL (Extracción, Transformación y Carga [Load en inglés]).


Desde mi punto de vista, logro identificar que el Big Data y el Iot van de la mano porque como vimos antes, en los 2 procesos hay grandes cantidades de información, uno las emite (IoT) y el otro se carga de hacer un trabajo con ellos (Big Data). Cabe resaltar que todos estos datos por si mismos no son nada, hay que leerlos, entenderlos, organizarlos y limpiarlos para poder dar una posible respuesta a un problema que se está presentando en nuestra organización. 

sábado, 13 de mayo de 2023

principales diagramas UML

UML (Lenguaje Unificado de Modelado) es un lenguaje de modelado visual que se utiliza para diseñar y documentar sistemas de software. Los principales diagramas UML son:



Diagrama de casos de uso: 

se utiliza para modelar las interacciones entre un sistema y sus actores, mostrando los casos de uso y sus relaciones. Ejemplo: 




Diagrama de clases: 

muestra la estructura estática del sistema, es decir, las clases, sus atributos y relaciones. Ejemplo: 




Diagrama de objetos: 

se utiliza para mostrar una instancia particular de una clase y sus relaciones con otras instancias.Por ejemplo: 




Diagrama de secuencia: 

muestra la interacción entre objetos a lo largo del tiempo, enfatizando la secuencia de los mensajes enviados y recibidos.Ejemplo: 




Diagrama de actividad: 

se utiliza para modelar el comportamiento de un sistema, mostrando las acciones y las decisiones que se toman en un proceso.Ejemplo: 




Diagrama de componentes: 

muestra la estructura física de un sistema, es decir, los componentes que lo componen y sus relaciones. Ejemplo: 




Diagrama de despliegue: 

se utiliza para mostrar cómo se implementa el sistema en la infraestructura de hardware y software. Ejemplo: 



lunes, 8 de mayo de 2023

Dataware House y Data Lake. ¿Para que sirven? ¿Quién los utiliza?

 Data wareHouse


"Un Data warehouse es un repositorio unificado para todos los datos que recogen los diversos sistemas de una empresa. El repositorio puede ser físico o lógico y hace hincapié en la captura de datos de diversas fuentes sobre todo para fines analíticos y de acceso.

Normalmente, un data warehouse se aloja en un servidor corporativo o cada vez más, en la nube. Los datos de diferentes aplicaciones de procesamiento de transacciones Online (OLTP) y otras fuentes se extraen selectivamente para su uso por aplicaciones analíticas y de consultas por usuarios.

Data Warehouse es una arquitectura de almacenamiento de datos que permite a los ejecutivos de negocios organizar, comprender y utilizar sus datos para tomar decisiones estratégicas. Un data warehouse es una arquitectura conocida ya en muchas empresas modernas."

tomado de: powerdata.es







Función: 

Según ChatGPT(2023), 
  1. Análisis de negocios: Un Data Warehouse proporciona una plataforma para realizar análisis complejos y generar informes para respaldar la toma de decisiones estratégicas. Los usuarios pueden realizar consultas ad hoc, análisis de tendencias, segmentación de clientes y pronósticos basados en datos históricos y en tiempo real.

  2. Integración de datos: Los Data Warehouses son capaces de integrar datos de diferentes fuentes y formatos, lo que permite a las organizaciones consolidar información dispersa y obtener una visión unificada de su negocio. Esto facilita la detección de relaciones y patrones ocultos entre los datos.

  3. Rendimiento optimizado: Los Data Warehouses están diseñados para ofrecer un rendimiento optimizado en consultas complejas y de alto volumen. Utilizan técnicas como la indexación, la optimización de consultas y el almacenamiento de datos en un esquema específico para acelerar el acceso a la información.

  4. Datos históricos: A diferencia de las bases de datos operativas, que almacenan principalmente datos transaccionales actuales, un Data Warehouse retiene datos históricos a lo largo del tiempo. Esto permite realizar análisis retrospectivos y comprender la evolución y los patrones a largo plazo.

  5. Apoyo a la toma de decisiones: Los datos almacenados en un Data Warehouse son utilizados por gerentes y analistas para tomar decisiones informadas y basadas en datos. Proporciona una visión holística de la organización y ayuda a identificar oportunidades, evaluar el rendimiento y optimizar las operaciones.

Utilizado por:

Según ChatGPT(2023):
  1. Gerentes y ejecutivos: Los altos directivos y gerentes utilizan el Data Warehouse para obtener una visión integral de la organización y respaldar la toma de decisiones estratégicas. Pueden acceder a informes y análisis que les ayuden a evaluar el rendimiento, identificar tendencias y oportunidades, y planificar el futuro.

  2. Analistas de negocios: Los analistas de negocios utilizan el Data Warehouse para realizar análisis detallados y generar informes especializados. Pueden explorar los datos, realizar consultas ad hoc, identificar patrones y tendencias, y crear modelos predictivos. Su objetivo es proporcionar información valiosa para mejorar la eficiencia operativa y la toma de decisiones.

  3. Analistas de datos: Los analistas de datos se encargan de extraer, transformar y cargar (ETL) los datos en el Data Warehouse. También son responsables de mantener la calidad y la integridad de los datos, asegurándose de que estén disponibles y sean confiables para su uso posterior.

  4. Equipos de inteligencia de negocios: Los equipos de inteligencia de negocios utilizan el Data Warehouse para desarrollar paneles de control, cuadros de mando y visualizaciones interactivas. Estas herramientas les permiten monitorear el rendimiento en tiempo real y comunicar los resultados de manera clara y comprensible.

  5. Departamentos de ventas y marketing: Los profesionales de ventas y marketing utilizan el Data Warehouse para comprender mejor a los clientes, identificar segmentos de mercado, realizar análisis de comportamiento y evaluar el éxito de las campañas. Pueden acceder a datos históricos y en tiempo real para tomar decisiones más informadas y personalizar sus estrategias.

  6. Departamentos de finanzas y contabilidad: Los equipos financieros utilizan el Data Warehouse para realizar análisis financiero, presupuestario y de rentabilidad. Pueden rastrear los ingresos y gastos, realizar pronósticos financieros y evaluar el desempeño general de la organización.


Data Lake

"Un data lake es un repositorio centralizado diseñado para almacenar, procesar y proteger grandes cantidades de datos estructurados, semiestructurados o no estructurados. Puede almacenar datos en su formato nativo y procesar cualquier variedad de datos, ignorando los límites de tamaño."






Función: 

Según ChatGPT(2023): 
  1. Almacenamiento de datos sin procesar: Un Data Lake es capaz de almacenar datos de diferentes formatos, como archivos de texto, imágenes, videos, registros de eventos, datos de sensores, datos de redes sociales, entre otros. No impone restricciones en cuanto a la estructura o el esquema de los datos, lo que permite guardar todo tipo de información sin necesidad de una transformación previa.

  2. Integración de datos heterogéneos: Los Data Lakes permiten la integración de datos de diversas fuentes, como bases de datos, aplicaciones, servicios en la nube y sistemas de almacenamiento distribuido. Esto facilita la consolidación de datos de diferentes departamentos y sistemas en un solo repositorio, proporcionando una vista unificada y completa.

  3. Escalabilidad y flexibilidad: Los Data Lakes están diseñados para escalar horizontalmente y manejar grandes volúmenes de datos. Pueden almacenar tanto datos estructurados como no estructurados, y su flexibilidad les permite adaptarse a cambios y actualizaciones en los tipos y fuentes de datos sin interrupciones.

  4. Exploración y análisis de datos: Los Data Lakes proporcionan un entorno flexible y de bajo costo para explorar y analizar datos. Los usuarios pueden aplicar técnicas de análisis avanzado, como el procesamiento de lenguaje natural, el aprendizaje automático (machine learning) y la minería de datos, para descubrir patrones, tendencias y relaciones ocultas en los datos almacenados.

  5. Almacenamiento de datos históricos: Al igual que un Data Warehouse, un Data Lake puede retener datos históricos a largo plazo. Esto permite realizar análisis retrospectivos y realizar estudios comparativos a lo largo del tiempo.

  6. Preparación de datos para análisis posteriores: Los datos almacenados en un Data Lake pueden ser refinados, transformados y preparados para análisis posteriores. Esto implica aplicar procesos de extracción, transformación y carga (ETL) para estructurar los datos según las necesidades específicas del análisis o para alimentar un Data Warehouse u otras plataformas analíticas.

Utilizado por:

Según ChatGPT(2023): 
  1. Analistas de datos: Los analistas de datos aprovechan un Data Lake para realizar exploración y análisis avanzado de datos. Pueden descubrir patrones, tendencias y relaciones ocultas en grandes volúmenes de datos sin procesar. Utilizan herramientas de análisis, minería de datos y aprendizaje automático para extraer información valiosa y obtener ideas útiles.

  2. Científicos de datos: Los científicos de datos utilizan un Data Lake como fuente de datos para desarrollar modelos predictivos y realizar investigaciones en profundidad. Pueden acceder a datos sin procesar y utilizar técnicas avanzadas de análisis y aprendizaje automático para construir modelos y realizar experimentos.

  3. Departamento de TI: El departamento de Tecnología de la Información (TI) puede utilizar un Data Lake para almacenar y gestionar datos de diferentes fuentes. Son responsables de garantizar la integridad, seguridad y disponibilidad de los datos en el Data Lake. También pueden implementar herramientas y tecnologías para administrar y acceder a los datos de manera eficiente.

  4. Departamento de analítica y inteligencia de negocios: Los equipos de analítica y inteligencia de negocios utilizan un Data Lake como una fuente de datos para realizar análisis y generar informes. Pueden extraer datos relevantes, transformarlos y prepararlos para su uso en cuadros de mando, paneles de control y visualizaciones interactivas.

  5. Desarrolladores de aplicaciones: Los desarrolladores de aplicaciones pueden utilizar un Data Lake para obtener datos necesarios para el desarrollo y la mejora de aplicaciones. Pueden acceder a datos sin procesar y utilizar APIs o consultas para extraer información específica para sus aplicaciones.

  6. Departamento de seguridad: El departamento de seguridad puede utilizar un Data Lake para almacenar y analizar grandes volúmenes de datos relacionados con la seguridad de la organización. Pueden realizar análisis de registros de eventos, detección de anomalías y monitoreo de amenazas utilizando datos almacenados en el Data Lake.


Opinión personal:

Teniendo en cuenta las definiciones y comentarios anteriores, dicho en palabras mas sencillas por mi persona puedo definir los 2 tipos de estructura de almacenamiento de la siguiente manera:

Data Warehouse:

Es un repositorio con datos recopilados de diferentes fuentes pero con un esquema o estructura definidos.

Data Lake:

Es un repositorio con datos recopilados desde distintas fuentes y formatos almacenados en bruto y pueden ser estructurados, semiestructurados o sin estructura.

Función:

Las funciones de las 2 estructuras son muy similares, básicamente las 2 funcionan para almacenar datos y tener una fuente fiable e integra de la información para posteriormente, las personas encargadas hagan su trabajo de análisis. Un aspecto importante de estas estructuras es que permiten agrupar mucha información proveniente de distintas fuentes, es mucho mejor tener toda la información necesario o de interés en un solo lugar que estar recurriendo a diferentes lugares, de esta manera podemos ahorrar tiempo, recursos, y personal. También hay que tener en cuenta que manejar este tipo de almacenamiento también llevara una demanda monetaria extra pero el papel que desempeña vale la pena.

Quienes lo utilizan:

Los 2 tipos de estructuras de almacenamiento son usadas por todos aquellos roles en los que su trabajo tenga que ver con el análisis de información, recolección de información y carga de información. Estas personas el trabajo que realizan con la información es el de ver mas a allá de lo que a simple vista se ve en el día a día de las empresas ya que gracias a la cantidad de datos se pueden descubrir patrones, datos atípicos, prever problemas o posibles situaciones y tomar medidas correctivas antes de que pase dicho evento. Todo esto se hace con el fin de poder tomar buenas acciones en pro del bienestar de la institución y en base a algunos resultados y análisis saber si se están haciendo bien las cosas o saber que se debe corregir y cuando

Ejemplos: 

Data warehouse: 

Según ChatGPT(2023)
  1. Fuente de datos: La empresa de comercio minorista recopila datos de diversas fuentes, como transacciones de ventas, inventario, clientes y proveedores. Estas fuentes pueden incluir sistemas de punto de venta (POS), sistemas de gestión de inventario, sistemas de gestión de relaciones con los clientes (CRM) y sistemas de gestión de proveedores.

  2. Extracción, Transformación y Carga (ETL): Los datos se extraen de las fuentes de origen y se transforman para asegurar la consistencia y calidad. Durante la transformación, los datos pueden ser limpiados, normalizados y enriquecidos con información adicional. Luego, los datos transformados se cargan en el Data Warehouse.

  3. Almacenamiento: El Data Warehouse utiliza una estructura de almacenamiento específica, como un esquema en estrella o en copo de nieve, para organizar y almacenar los datos de manera eficiente. Esto implica la creación de tablas dimensionales (por ejemplo, dimensión de productos, dimensión de tiempo, dimensión de ubicación) y tablas de hechos (que contienen medidas cuantitativas, como ventas, inventario).

  4. Procesamiento y análisis: Una vez que los datos se encuentran en el Data Warehouse, los analistas y usuarios pueden realizar consultas y análisis para obtener información relevante. Se pueden utilizar herramientas de análisis y visualización de datos para explorar los datos, generar informes y realizar análisis de tendencias, segmentación de clientes, análisis de rentabilidad, entre otros.

  5. Actualización periódica: El Data Warehouse se actualiza periódicamente para garantizar que los datos estén actualizados y reflejen la información más reciente. Esto implica la ejecución regular del proceso de ETL para extraer datos de las fuentes, transformarlos y cargarlos en el Data Warehouse.

  6. Acceso y seguridad: El acceso al Data Warehouse está controlado y se definen niveles de seguridad para garantizar que los usuarios solo puedan acceder a la información relevante para sus roles y responsabilidades. Se pueden establecer permisos y roles de usuario para proteger la confidencialidad y privacidad de los datos.


Data Lake:

Según ChatGPT(2023):
  1. Almacenamiento de datos sin procesar: El Data Lake recopila y almacena datos sin procesar de diversas fuentes, como transmisiones en tiempo real, archivos de video, imágenes, registros de eventos, datos de redes sociales y registros de clics en el sitio web. Estos datos se mantienen en su forma original, sin transformación previa.

  2. Integración de datos heterogéneos: El Data Lake puede aceptar datos de diferentes formatos y fuentes, incluyendo archivos estructurados (como CSV o JSON), archivos no estructurados (como archivos de video o imágenes) y transmisiones en tiempo real (como feeds de Twitter o registros de eventos). Esto permite la integración de datos heterogéneos y su almacenamiento en un único repositorio.

  3. Escalabilidad y flexibilidad: El Data Lake está diseñado para manejar grandes volúmenes de datos y puede escalar horizontalmente para adaptarse a futuros crecimientos en la cantidad de datos. Puede almacenar datos estructurados y no estructurados de manera flexible, sin imponer una estructura predefinida.

  4. Catálogo de datos: Un catálogo de datos es una parte integral de un Data Lake. Proporciona metadatos y descripciones de los datos almacenados, como la fuente de origen, la fecha de adquisición, el formato y la descripción del contenido. Esto facilita la búsqueda y el descubrimiento de datos dentro del Data Lake.

  5. Preparación y procesamiento de datos: Antes de realizar análisis o consultas en el Data Lake, los datos pueden ser preparados y transformados según sea necesario. Esto puede implicar la limpieza de datos, la agregación, la normalización y la estructuración para su uso posterior. Las herramientas de procesamiento de datos, como Apache Spark o Hadoop, pueden utilizarse para realizar estas tareas.

  6. Análisis y exploración de datos: Una vez que los datos están en el Data Lake y han sido preparados, los analistas pueden utilizar herramientas y técnicas de análisis de datos, como análisis estadístico, aprendizaje automático (machine learning) y minería de datos, para descubrir patrones, tendencias y relaciones ocultas en los datos. Esto puede ayudar a obtener información valiosa y tomar decisiones basadas en datos.





















Cronograma y presupuesto del proyecto

 https://docs.google.com/document/d/1iQG-5w2r5v4mHhCO_-dgGm4z94WS28GjiwvgJw5pygk/edit