1 of 20
2 of 20
3 of 20
4 of 20
5 of 20
6 of 20
7 of 20
8 of 20
9 of 20
10 of 20
11 of 20
12 of 20
13 of 20
14 of 20
15 of 20
16 of 20
17 of 20
18 of 20
19 of 20
20 of 20

site

doc

blog

success stories

Blog

Controle os acessos à sua plataforma com a função Scheduled Blocking

Você já quis controlar os acessos à sua aplicação de modo que os usuários só possam acessá-la durante um determinado período do dia? Digamos que estamos encarregados de entregar a transmissão ao vivo de um campeonato de videogame, todos os dias da semana, entre as 18h e 21h no horário de Brasília (BRT).

Obviamente, poderíamos criar uma resposta estática em nosso servidor durante os períodos em que a transmissão estivesse offline, porém, nesse caso estaríamos recebendo muitas requisições e consumindo os recursos do nosso servidor com requisições indesejadas.

Pois bem, a Azion tem um novo recurso que pode te ajudar a resolver esse problema: a edge function Scheduled Blocking.

A edge function Scheduled Blocking permite controlar o acesso às suas aplicações com base em janelas de tempo, diretamente de nossas edge locations. Dessa forma, os usuários somente terão acesso à sua infraestrutura quando realmente for necessário.

E neste post, você vai aprender a usar esse novo recurso.

Primeiramente, vamos adquirir a função no Marketplace

Como se trata de uma função gratuita, tudo o que você precisa fazer é procurar e adquirir a função em nosso Marketplace.

azion scheduled blocking

azion scheduled blocking

Em seguida, vamos usá-la

Uma vez que adquirimos a edge function, podemos usá-la em nossos Edge Firewalls (qualquer um que tenha o módulo Edge Functions ativado). Assim, nosso próximo passo é acessar a seção de funções do Edge Firewall responsável por proteger nosso Edge Application (ou criar um novo Edge Firewall, caso nossa aplicação não tenha um Edge Firewall vinculado) e criar uma nova Function Instance da função Scheduled Blocking.

O JSON Args básico de nossa nova instância de função ficaria assim:

scheduled blocking

scheduled blocking

Em um breve resumo sobre nosso JSON Args, temos duas agendas, pois nossa regra é ligeiramente diferente durante os dias da semana e nos fins de semana.

Na primeira agenda, que está ativa de segunda à sexta, como pode ser visto no campo “week_days” acima, vamos executar a “action” deny (ou seja, vamos bloquear a requisição) quando a função for executada fora do intervalo (portanto o “execute_action_when” é configurado como “not_in_interval”) das 21:00 às 23:59 horas – e lembre-se que a function sempre usa como base o horário UTC, em formato de 24 horas.

Já a segunda agenda é usada nos finais de semana. E como nesses dois dias não queremos receber nenhum tipo de acesso, utilizamos um intervalo que vai da hora 00:00 até as 23:59 – ou seja, o dia inteiro.

Uma vez criada nossa Function Instance, o próximo passo é adicioná-la em uma regra do Rule Engine. Neste exemplo, desejamos executar a função para todas as rotas de nossa aplicação, logo a regra ficaria assim:

scheduled blocking

Assim que as alterações forem propagadas, sempre que tentarmos acessar nossa aplicação durante o final de semana ou antes das 21:00 UTC durante a semana, receberemos uma resposta do código de status 403 das edge locations da Azion.

scheduled blocking

Vamos customizar nossa resposta um pouquinho

Embora nossa função já esteja prevenindo acessos indevidos à nossa aplicação, podemos customizá-la para retornar uma mensagem mais significativa para os usuários. Para isso, vamos voltar ao JSON Args da nossa Function Instance e fazer algumas alterações. Ao alterarmos a “action” de nossa Function Instance de “deny” para “static_response”, podemos também definir um status code e uma mensagem para serem usados na resposta de bloqueio enviado pela edge function.

scheduled blocking

scheduled blocking

Ao fazermos essa mudança, o retorno efetuado pela edge function será o seguinte:

scheduled blocking

Ainda mais customizações

Certo, nossa edge function já está entregando uma resposta mais amigável aos usuários, porém ainda existe mais um nível de customização. Ao invés de utilizarmos a chave “static_response_data.message”, podemos substituí-la pelo “static_response_data.html”, que nos permite adicionar um HTML customizado a ser entregue pela função durante os períodos de bloqueio.

Portanto, se alterarmos o JSON Args para algo como:

scheduled blocking

Nossa resposta seria a seguinte:

scheduled blocking

Como a edge function nos permite inserir uma página HTML por completo, nós podemos adicionar também estilos CSS para deixar nossa resposta ainda mais agradável aos olhos do usuário. Portanto, ao usarmos o seguinte conteúdo no JSON Args:

scheduled blocking

Teríamos o seguinte resultado:

scheduled blocking

Legal, não?

Agregando outras funcionalidades

Agora temos uma agenda que nos permite bloquear os acessos de usuários durante os períodos em que nossa livestream está offline. Porém, digamos que nosso contrato com o campeonato de videogame apenas nos permita transmitir a competição no Brasil, Estados Unidos e México? Sem problemas, basta adicionarmos uma nova regra em nosso Edge Firewall!

Atualmente, as regras de nosso Edge Firewall devem estar assim:

scheduled blocking

Então, primeiramente, devemos habilitar o módulo do Network Layer Protection no Main Settings do nosso Edge Firewall (caso você ainda não tenha feito isso). Depois disso, iremos criar uma nova Network List do tipo “Country”, incluindo os países Brasil, Estados Unidos e México.

scheduled blocking

De volta ao nosso Edge Firewall, podemos criar uma nova regra, onde “droparemos” a conexão de qualquer requisição feita de fora dos países que desejamos.

scheduled blocking

Após isso, vamos reordenar nossas regras, de modo que a verificação de geolocalização seja feita antes da nossa edge function de agendamento de bloqueios, assim a função será usada apenas quando necessário.

scheduled blocking

Com isso, se tentarmos fazer uma requisição a partir do Chile, por exemplo, receberemos uma resposta vazia das edge locations da Azion.

scheduled blocking

E voilà! Nossa aplicação está protegida contra acessos durante horários indesejados e também contra acessos de localizações indesejadas!

Você pode acessar uma versão funcional desta demonstração em: http://kq0ylaqisc.map.azionedge.net/.

Você ainda não tem acesso à função Schedule Blocking?

ACESSE AQUI

Ainda não tem conta na Azion?

Você ganha US$ 300 em créditos de serviço para utilizar em nossa plataforma.

CRIAR CONTA AGORA

Azion
Criada para empresas, amada por desenvolvedores.