Continuando a série de artigos, sobre como publicar suas API’s utilizando o API Gateway da Azure, iremos neste artigo iremos ver como gerenciar suas API’s com políticas de segurança e algumas boas práticas que você pode utilizar para melhorar ainda mais a sua API.
Modificando headers da API
Com o API manager você pode modificar headers de resposta da sua API, excluir alguns ou adicionar outros. Tudo conforme suas regras de negócio/segurança necessitam. Vamos primeiro ver como estão os cabeçalhos de resposta da nossa API:
Vamos ocultar os cabeçalhos HTTP que não desejamos mostrar aos usuários. Neste exemplo, os cabeçalhos a seguir são excluídos na resposta HTTP:
- X-Powered-By
Esse tipo de header
é conhecido como ServerSignature
, ele revela informações do servidor como: nome, versão, tecnologia e em alguns casos até o sistema operacional. O seu header
em especifico (X-Powered-By
) fornece informações da tecnologia que por exemplo: ASP.NET
ou PHP
e isto fornece informações nas quais nem sempre queremos divulgar, certo? Então vamos lá!
Dentro da API que criamos anteriormente clique no ícone de editor de policies:
Abrindo assim o editor do arquivo de políticas e posicione o cursor dentro do elemento <outbound>. Vale deixar claro que as configurações de entrada da sua API ficam em inbound e as de saída em outbound.
Na janela à direita, em Políticas de transformação, clique em + Definir cabeçalho HTTP duas vezes (para inserir dois snippets de código de política).
Modifique seu código <outbound> para que se pareça com este e clique em Salvar.
<set-header name="X-Powered-By" exists-action="delete" />
Ao realizar um novo teste, você verá que o cabeçalho não existirá mais:
Você também pode gerenciar cabeçalhos de maneira mais rápida, clicando no botão Adicionar Política (add policy) diretamente da aba de desing:
Proteger uma API adicionando a política de limite de taxa (limitação)
Agora que já aprendemos a configurar uma política de saída, vamos configurar uma política de entrada (inbound). No API Manager, podemos adicionar uma proteção para a API de back-end configurando limites de requisições. Por exemplo, você talvez queira limitar um número de chamadas realizadas para a API, para que não seja usada em excesso pelos consumidores ou até evitar ataques DDO’s direto ao seu servidor. Neste exemplo, o limite é definido como 3 chamadas por 15 segundos para cada IP de acesso. Depois de 15 segundos, um desenvolvedor pode repetir a chamada à API.
Novamente, abra o editor de políticas da sua API, posicione o cursor dentro do elemento <inbound>.
Na janela à direita, em Políticas de restrição de acesso, clique em + Limit call rate per key (+ Limitar taxa de chamada por IP). Mude o código rate-limit-by-key (no elemento <inbound>) para o código a seguir:
<rate-limit-by-key calls="3" renewal-period="15" counter-key="@(context.Request.IpAddress)" />
Agora o seu arquivo de políticas deverá se parecer com isto:
Após salvar o seu arquivo de políticas, vamos testar a nossa API para ver se deu tudo certo. Dentro da aba de testes (conforme mostrado no primeiro artigo), realize 4 requisições seguidas para obter a seguinte resposta:
Bom, por agora é só! Nos próximos artigos vamos ver um pouco mais sobre depuração e monitoramento das API’s publicadas.
Um grande abraço! 🙂