Proteger los servicios: el caso de BICI_MAD

En los últimos días ha sido interesante ver como en la ciudad donde vivo se ha puesto en marcha una interesante iniciativa para el alquiler de bicicletas, BICI_MAD.

Independientemente de los muchos comentarios que ha habido, me ha llamado poderosamente la atención el hecho de que un servicio expuesto a potencialmente una gran cantidad de usuarios no haya estado operativo durante días solamente porque ha muerto de éxito.

¿Qué podríamos haber hecho diferente?
El hecho de que una cierta campaña pueda convertirse en viral no debería afectar a la infraestructura tecnológica hasta dejarla fuera de combate. Y es aquí donde entiendo que el consumo de los servicios web expuestos debe contenerse de forma que no se rompan aquellos límites que hayamos establecido en las pruebas de carga.
Si hemos establecido un número máximo de peticiones por unidad de tiempo (segundos, minutos, horas incluso), debemos reforzar la capacidad de la infraestructura existente controlando estas peticiones y añadiendo los controles necesarios para que no se superen. Es lo que en la lengua de Shakespeare se denomina “Throttling control”.
Dentro de API Gateway (http://www.axway.com/products-solutions/api-management/api-gateway) podemos establecer el mecanismo oportuno para el “Throttling control” de forma que no se superen los límites de la infraestructura, se bloqueen aquellas peticiones en exceso, y se permita que los usuarios que puedan acceder al sistema puedan cumplimentar sus peticiones adecuadamente, y así progresivamente dar servicio a todo el conjunto de usuarios que están pretendiendo realizar una acción.
Como se puede ver en la captura de pantalla de este componente, sólo es necesario configurar unas pocas propiedades para poder disfrutar de las capacidades comentadas.
throttling
De esta forma protegemos los servicios expuestos ante un fenómeno viral.
¿Qué ocurre cuando un atacante intenta efectuar un ataque del tipo DOS (Denegación de servicio) o DDOS (Denegación de servicio distribuida)?

Principalmente lo mismo, intenta realizar tantas llamadas como sean posibles contra el servicio expuesto y de esta forma saturar el sistema hasta que caiga y permanezca fuera de servicio por el mayor tiempo posible. En este caso, vamos a utilizar un mecanismo de protección similar utilizando el “Throttling control” para gestionar el uso del servicio.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s