Pasar al contenido principal

Seguridad en tus APIs: cómo evitar ataques

Diseñar e implementar una API es una tarea muy habitual en proyectos de programación. Mediante su uso tienes la oportunidad de conectar una aplicación con cualquier otra. También de realizar test y, en general, de desacoplar componentes de las aplicaciones. Esto es especialmente importante en arquitecturas basadas en servicios o microservicios. Pero exige prestar una atención especial a la seguridad de las APIs.

Sin embargo, una de las contrapartidas de esta tecnología reside, precisamente, en su gran flexibilidad a la hora de permitir la conexión de diferentes fuentes. Por su naturaleza, un atacante que cumpla con los requisitos necesarios para acceder a la API podrá trabajar con ella como una aplicación legítima. Por ese motivo, es importante controlar la seguridad en APIs para evitar que un uso poco controlado de ellas se convierta en un indeseable agujero de seguridad. Descubre cómo puedes conseguirlo.

Mejora la seguridad de las APIs mediante el control de la red

Este método, o conjunto de métodos, es muy útil cuando los clientes de la compañía que accederán a la APIs se conocen de antemano. Esto sucede cuando se sabe exactamente qué clientes de la empresa van a acceder a las APIs, y cuáles de ellas van a utilizar. En general, puede mejorar la seguridad de tus APIs. Se trata de permitir que estas estén accesibles solo desde determinadas ubicaciones. De esta manera dejarás fuera a posibles atacantes.

Hay muchos mecanismos para implementar esta mejora en la seguridad. Estos van desde la creación de listas blancas de direcciones IP que tienen permitido el acceso, hasta la limitación del acceso a una subred privada. Tienes que tener en cuenta que no puede ser el único mecanismo de control de acceso a la API: en caso de que el atacante consiga lanzar su ataque desde una IP autorizada, el resultado será catastrófico porque tendrá acceso ilimitado.

Por ese motivo, es muy importante limitar el acceso a la API solo a aplicaciones y usuarios debidamente autenticados, tal y como te explicamos en los siguientes apartados.

Utiliza un sistema de API Key para garantizar la seguridad de tus APIs

Hay diferentes métodos de autenticación que puedes utilizar para mejorar la seguridad de las APIs. Entre ellos, el más habitual, y posiblemente el más seguro, es generar tokens mediante una API Key única para cada cliente. El cliente se autentica con esta clave propia. A continuación recibe un token temporal que puede usar para sus operaciones durante un periodo de tiempo. Este periodo puede variar entre unos minutos y varias horas.

La mayoría de lenguajes y frameworks disponen de algún sistema para generar este tipo de claves. Su uso es prácticamente imprescindible para garantizar la seguridad de las APIs. En este sentido, es mejor no reinventar la rueda, porque los mecanismos más habituales son también los más probados. También son los que los programadores que accedan a tu API conocerán mejor. Además, en caso de que se produzca algún problema de seguridad con uno de estos mecanismos, su detección y las medidas a tomar para resolverlo las aportará la comunidad de desarrolladores en su conjunto. En materia de seguridad, casi siempre, la unión hace la fuerza.

Control de acceso ACL, vital para la seguridad en APIs

Aunque se trate de una API sencilla, es mejor implementar seguridad basada en listas de control de acceso para ella desde el primer momento. Esto permite que la aplicación crezca, o que la API se abra a un público más amplio. Y que lo haga sin riesgos de que la información de unos clientes se filtre a otros.

Los sistemas de listas de control de acceso (ACL) son muy útiles porque permiten establecer permisos sobre grupos de objetos. Por ejemplo, un usuario con rol de administrador puede ser administrador solo sobre los datos de su compañía. Mientras tanto, un superusuario tendría acceso ilimitado, con independencia del propietario de los datos. Su implementación es relativamente sencilla y, aunque no se utiliza mucho en los primeros momentos de uso de las APIs, puede evitar muchos quebraderos de cabeza en el futuro. Es muy útil para mejorar la seguridad de una API.

Tecnología de contenedores para mejorar la seguridad de las APIs

Disponer de un entorno aislado de ejecución para tus servicios siempre es una buena idea. En el caso de la seguridad de las APIs, con este tipo de entornos no solo mantendrás aislado cada servicio de los demás. También te aportará más facilidades para separar la máquina que ejecuta estos servicios de información sensible con datos del acceso a otros servidores, bases de datos, etc.

Además, el uso de contenedores tiene otras ventajas adicionales. Entre ellas, la facilidad para escalar el servicio tanto como sea necesario. Tanto mediante la asignación de más recursos en la misma máquina (o en una nueva máquina) como a través del agregado de nodos si el diseño de la aplicación lo permite. Conocer estas tecnologías es, hoy día, casi imprescindible para prestar servicios en la nube.

Una de las tecnologías más utilizadas para desplegar clusters de contenedores es Kubernetes. Está entre las tecnologías y lenguajes más demandados del mercado, y dispone de multitud de técnicas para asegurar el acceso a los contenedores que también es necesario tener en cuenta para aumentar la seguridad en APIs.

Monitoriza el uso para detectar problemas de seguridad en las APIs

Incluso después de tomar todas las precauciones, es posible que un atacante logre acceder a datos a los que no está autorizado. Por ese motivo, la seguridad debe de ser siempre proactiva.

Una buena forma de tener este tipo de control es determinar qué indicadores nos pueden alertar de un uso ilegítimo. Entre ellos, la frecuencia de las consultas, que puede o no limitarse mediante sistemas de throttling, También el acceso secuencial a datos, que muchos atacantes utilizan para descargarse datos de forma masiva. No hay que olvidar tampoco que los intentos de borrado masivos pueden ser señales de alarma, y aunque pueden tratarse de un uso legítimo, no está de más comprobarlos.

Para llevar a cabo este tipo de monitorización, es importante que la API esté diseñada para capturar métricas por usuarios. Una vez que se obtienen estas métricas, puedes definir qué es un “uso normal” de la API y generar las alertas necesarias en caso de detectar anomalías.

Si sigues estos consejos, podrás disponer de mayor seguridad en las APIs que desarrolles. Eso sí, no son los únicos criterios a tener en cuenta y, en todo caso, depende de la naturaleza de la API en concreto qué otras medidas serán necesarias. Pero estas medidas son un buen punto de partida para iniciar un desarrollo de APIs más seguras, así que, ¡no dudes en ponerlas en marcha!

Share this post

Comments (0)