6 soluciones para mitigar riesgos en la seguridad de la cadena de suministro de software

Amenazas a la cadena de suministros de software

La cadena de suministros del software abarca a todo aquello que cumple una función en el desarrollo de una aplicación, en algún punto de su ciclo de vida de desarrollo (SDLC). Debido a que los elementos que forman una cadena de suministros de software suelen ser muchos y muy variados – éstos incluyen herramientas de desarrollo, código propietario y de terceros, métodos de deploy, interfaces y protocolos, infraestructura, prácticas de desarrollo, por mencionar algunos – los riesgos que amenazan la seguridad de la cadena de suministro de software son altos. Para mitigar esos riesgos se requieren técnicas y herramientas especializadas.

A medida que crecen las tendencias a reutilizar código y a adoptar estrategias nativas de nube, los atacantes cibernéticos encuentran nuevos lugares desde donde lanzar sus ataques. Cualquier debilidad en la seguridad de la cadena de suministro de software permite la entrada a los atacantes, que una vez dentro pueden recorrer toda la cadena, robando información sensible, tomando el control de los sistemas o instalando malware. Por esa razón es que existen herramientas específicas para mantener bajo control a los riesgos que amenazan a la cadena de suministros de software.

Si aún no te decides por Bitbucket o GitHub para usar como repositorio de código fuente, en este artículo te ayudo e elegir el más conveniente para tus necesidades.

Mitigando los riesgos en la cadena de suministros

La solución ideal de seguridad para cadena de suministros debe facilitar la detección de vulnerabilidades, permitiendo escanear imágenes, contenedores, código fuente, bibliotecas, entre otros elementos que componen la cadena de suministros del software. Adicionalmente, es útil que dicha solución pueda también eliminar las amenazas, o por lo menos alertar adecuadamente sobre su existencia y sugerir formas de eliminación.

Leer más

La inteligencia artificial y el mercado del arte

Una obra de arte generada por una IA ganó un concurso de arte

El rol que cumple la IA en el mercado del arte es el de un asesor inteligente y con un amplísimo conocimiento del mercado, de las tendencias, de los artistas y de la cotización de sus obras.

Ya se comprobó que una inteligencia artificial puede ser una gran artista, cuando a principios de septiembre de 2022, una obra generada por una IA (inteligencia artificial) ganó un concurso de arte. También hay IAs que componen música, que escriben cuentos o incluso que crean esculturas, con ayuda de impresoras 3D.

Caspar David Friedrich, Landscape with Mountain Lake, Morning, 1823-1835. Fuente: MutualArt.
Caspar David Friedrich, Landscape with Mountain Lake, Morning, 1823-1835. Fuente: MutualArt.

Pero hay algo que una IA no puede hacer: captar el sentimiento que transmite una obra de arte. No puede emocionarse al contemplar una ópera, ni tampoco sentir las emociones plasmadas por el pintor en un retrato impresionista.

La situación cambia cuando se trata de determinar el valor de una obra de arte, o de clasificar obras y artistas según categorías, o de determinar preferencias por determinados estilos. Cuando no hay emociones o sentimientos involucrados, la IA puede hacer maravillas.

Leer más

¿Bitbucket o GitHub? El mejor repositorio de código fuente para usar en 2022

Bitbucket vs GitHub

A la hora de elegir una solución de repositorios para administración y control de código fuente, Bitbucket y GitHub aparecen inevitablemente como los dos principales contendientes. En esta nota te cuento en qué se parecen y en qué se diferencian, y en qué situaciones conviene elegir uno u otro.

El control de versiones se utiliza en el desarrollo de software para mantener bajo control los cambios en el código fuente. En todo proyecto de desarrollo de software se hace imprescindible utilizar algún mecanismo de control de código fuente y versionado, ya sea para posibilitar el trabajo en equipo sobre proyectos en común, para facilitar el rastreo de bugs o para simplificar la gestión de configuración del software.

Herramientas de control de código fuente

Git es un sistema de control de versiones de código abierto que, desde su creación en el año 2005, ha sido adoptado por millones de desarrolladores en todo el mundo. A pesar de su adopción casi universal, utilizar Git por sí solo es difícil, principalmente por que no cuenta con interfaces de usuario amigables. Por eso han surgido herramientas que se basan en la tecnología Git y le suman servicios y funcionalidades adicionales.

Entre las herramientas que ofrecen un front-end para Git hay dos que se destacan por su popularidad: BitBucket y GitHub. Sigue leyendo para enterarte de las diferencias entre estas dos herramientas, junto con las ventajas y desventajas de cada una.

Leer más

Primeros pasos en ciencias de datos con Anaconda

Anaconda Python download

Tal como lo expresa su sitio web oficial, Anaconda Distribution ofrece una forma sencilla de trabajar en ciencia de datos y aprendizaje automático con los lenguajes de programación Python y R en una única computadora. Puedes descargar e instalar el lenguaje de programación Python para sistemas operativos Windows, MacOS o Linux e iniciar inmediatamente tu carrera trabajando en ciencia de datos.

Kaa, la serpiente pitón (Python) junto a Mowgli, en el Libro de la Selva.
Kaa, la serpiente pitón (Python) junto a Mowgli, en el Libro de la Selva.

¿Qué es Anaconda Python y para qué sirve?

Para decirlo en forma resumida, Anaconda es una distribución y un gestor de paquetes completo, curado, de alta calidad y alto rendimiento para software de código abierto como Python, R y sus muchos paquetes asociados. Ideal para data scientists. Impulsado por la empresa Continuum Analytics (Anaconda Inc.), Anaconda Distribution está pensada para ser utilizada principalmente por científicos de datos. Está disponible para Linux, Windows y MacOS.

Leer más

Primeros pasos con contenedores Docker

Contenedores Docker

La función principal de la plataforma de contenedores de código abierto Docker está explícita en su eslógan: «Build, Ship and Run Any App, Anywhere», lo que significa «construye, distribuye y ejecuta cualquier app en cualquier parte». Concretamente, lo que propone Docker es simplificar las tareas de armar entornos de desarrollo o de prueba que emulen las condiciones de ejecución de una aplicación.

Qué son los contenedores en Docker

El concepto de contenedor en Docker reemplaza al concepto de máquina virtual, ofreciendo una alternativa más fácil de manejar para el desarrollo y testeo de aplicaciones. La principal diferencia entre una máquina virtual y un contenedor Docker es que la máquina virtual contiene todos los elementos que componen una máquina real: sistema operativo completo, BIOS, memoria, disco y demás recursos de hardware virtualizado.

A diferencia de los contenedores de la vida real, los contenedores Docker son livianos e independientes.
A diferencia de los contenedores de la vida real, los contenedores Docker son livianos e independientes.

En cambio, un contenedor Docker es un entorno de ejecuión que empaqueta el código y todas sus dependencias para correr aplicaciones de manera confiable, independientemente del hardware o del sistema operativo en donde se lleva a cabo la ejecución real. Los contenedores Docker son paquetes de software livianos, independientes y ejecutables que incluyen todo lo que puede necesitar una aplicación para ejecutar: código, runtimes, herramientas del sistema, bibliotecas del sistema y configuraciones.

Leer más