Controla el acceso a tu plataforma con Scheduled Blocking

Aprende a controlar el acceso a tus aplicaciones con Azion Edge Function Scheduled Blocking. Optimiza horarios de acceso y mejora la seguridad.

Pablo Diehl - Serverless Software Developer
Vivian Seixas - Technical Researcher
Controla el acceso a tu plataforma con Scheduled Blocking

¿Alguna vez has querido controlar el acceso a tu aplicación para que los usuarios solo puedan acceder a ella durante un período específico del día? Digamos que somos los responsables por hacer la transmisión en vivo de un campeonato de videojuegos, toda la semana, entre las 6 y las 9 de la noche. Obviamente, podríamos crear una respuesta fija en nuestro servidor durante los períodos en que la transmisión está fuera de línea, sin embargo, en ese caso recibiríamos muchas solicitudes y consumiríamos los recursos de nuestro servidor con solicitudes no deseadas.

Pues bien, Azion tiene una nueva función que puede ayudarte a resolver este problema: Edge function Scheduled Blocking.

Edge function Scheduled Blocking permite controlar el acceso a tus aplicaciones de acuerdo a ventanas de tiempo, directamente desde nuestras edge locations. De esa forma, los usuarios solo tendrán acceso a tu infraestructura cuando realmente la necesiten.

En este artículo, te enseñaremos cómo usar esta nueva función.

Primero, obtengamos la función en el Azion Marketplace

Como se trata de una función gratuita, todo lo que necesitas hacer es buscar y adquirir la función en nuestro Marketplace.

Imagen con tarjeta de la solución Scheduled Blocking del Marketplace de Azion

Imagen con tarjeta de la solución Scheduled Blocking del Marketplace de Azion

En seguida, vamos a usarla

Una vez que hayamos adquirido la edge function, podemos usarla en nuestros Edge Firewalls (cualquiera que tenga el módulo Edge Functions activado). Luego, nuestro siguiente paso es acceder a la sección de funciones de Edge Firewall responsable de proteger nuestro Edge Application (o crear un nuevo Edge Firewall, en caso de que nuestra aplicación no cuente con un Edge Firewall vinculado) y crear una nueva Function Instance (instancia de función) de la función Scheduled Blocking.

Los JSON Args básicos de nuestra nueva instancia de función se verían así:

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

En un breve resumen sobre nuestros JSON Args, tenemos dos horarios, ya que nuestra regla es ligeramente diferente durante los días entre semana y los fines de semana.

En el primer horario, que como puedes ver arriba en el campo “week_days” (días de la semana) está activo de lunes a viernes, ejecutaremos la “action” (acción) “deny_‘_(denegar); es decir, que bloquearemos la solicitud cuando la función se ejecute fuera del intervalo, por lo que “execute_action_when” (cuando ejecutar la acción) se establece en “not_in_interval” (sin intervalo) de 21:00 a 23:59. Y recuerda que la función siempre se basa en la hora UTC, en formato de 24 horas.

El segundo horario se utiliza los fines de semana. Como en estos dos días no queremos recibir ningún tipo de acceso, utilizamos un intervalo que va desde las 00:00 hasta las 23:59; es decir, todo el día.

Una vez creada nuestra Function Instance, el siguiente paso es agregarla a una Rule Engine (motor de reglas). En este ejemplo, queremos ejecutar la función para todas las rutas de nuestra aplicación, por lo que la regla se vería así:

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Una vez que se propagan los cambios, siempre que intentemos acceder a nuestra aplicación durante el final de semana o antes de las 21:00 UTC, de lunes a viernes, recibiremos una respuesta de código de estado 403 de las edge locations de Azion.

Imagen con mensaje de la función scheduled blocking: Error 403 forbidden

Personalicemos un poco nuestra respuesta

Aunque nuestra función ya impide el acceso no autorizado a nuestra aplicación, podemos personalizarla para responder con un mensaje más significativo a los usuarios. Para eso, volvamos a JSON Args de nuestra Function Instance y hagamos algunos cambios. Al cambiar la “action” de nuestra Function Instance de “deny” a “static_response” (respuesta fija), también podemos definir un código de estado y un mensaje para usarlo en la respuesta de bloqueo enviada por la edge function.

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Cuando hagamos este cambio, la edge function devolverá esta respuesta:

Imagen con mensaje de la función scheduled blocking: the streaming is offline, come back later

Aún más personalizaciones

Bien, nuestra edge function ya ofrece una respuesta a los usuarios más fácil de usar, pero todavía disponemos de un nivel más de personalización. En lugar de usar la clave “static_response_data.message” (mensaje de datos de respuesta fija), podemos reemplazarla con “static_response_data.html” (datos de respuesta estáticos html), lo que nos permite agregar un HTML personalizado que la función podrá mostrar los períodos de bloqueo.

Por lo tanto, si cambiamos JSON Args a algo como:

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Nuestra respuesta sería la siguiente:

Imagen con mensaje de la función scheduled blocking: The service is offline! See you at 6pm!

Como Edge Function nos permite insertar una página HTML completa, también podemos agregar estilos CSS para que nuestra respuesta sea más estética para el usuario. Así, si usamos el siguiente contenido en JSON Args:

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Tendremos el siguiente resultado:

Imagen con mensaje de la función scheduled blocking: our stream starts at 6pmExcelente, ¿no?

Agregar otras funcionalidades

Ahora tenemos una agenda que nos permite bloquear el acceso de los usuarios durante los períodos en que nuestra transmisión en vivo está fuera de línea. Pero, ¿y si resulta que nuestro contrato con el campeonato de videojuegos solo nos permite transmitir la competición en Brasil, Estados Unidos y México? ¡No hay problema, basta con agregar una nueva regla a nuestro Edge Firewall!

En este momento, nuestras reglas de Edge Firewall deberían verse así:

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Entonces, primero deberás habilitar el módulo Network Layer Protection en Main Settings (Configuración principal) en Edge Firewall (si aún no lo has hecho) y después crear una nueva Network List del tipo “Country” (país) en los que estén incluidos los países Brasil, Estados Unidos y México.

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

De vuelta a Edge Firewall podemos crear una nueva regla donde “descartaremos” la conexión de cualquier solicitud realizada desde fuera de los países que queramos.

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Después de eso, vamos a reordenar nuestras reglas para que la verificación de geolocalización se realice antes de nuestra edge function de programación de bloqueos, de modo que la función solo se use cuando sea necesario.

Imagen que muestra cómo controlar el acceso a las aplicaciones en función de las ventanas de tiempo

Como resultado, si intentamos realizar una solicitud desde Chile, por ejemplo, recibiremos una respuesta vacía de las edge locations de Azion.

Imagen con mensaje de la función scheduled blocking: The connection was reset

¡Y voilá! ¡Nuestra aplicación estará protegida contra accesos en horarios y ubicaciones no deseados!

¿Aún no tienes acceso a la función Schedule Blocking?

ACCEDE AQUÍ

O crea una cuenta en Azion

Gana 300 USD en créditos a utilizar en nuestra plataforma en hasta 12 meses.

CREAR CUENTA AHORA

Azion

Creada para empresas, amada por desarrolladores.

mantente actualizado

Suscríbete a nuestro boletín informativo

Recibe las últimas actualizaciones de productos, destacados de eventos y conocimientos de la industria tecnológica directamente en tu bandeja de entrada.