Segurança de Web APIs Distribuídas

Esse artigo demonstra o crescimento da necessidade de fabricação de sistemas distribuídos e escalonáveis, mais especificamente em arquiteturas baseadas em micro serviços, orquestradores ou coreografias, junto às dificuldades em construir sistemas com essas características com o nível de segurança adequado.

[ Hits: 5.958 ]

Por: Jean Pinzon em 18/12/2016


Auditoria, Integridade e Segurança de Sistemas Escalonáveis e Distribuídos



Auditoria

É extremamente importante ter um gerenciamento de logs muito bem definido e implementado. Todas as requisições e respostas de um REST Web API devem ser registrados por completo. O que aconteceria se em um Web Service responsável por fazer a venda de produtos de uma loja virtual, uma venda for contabilizada para um usuário e ele alegar que não foi feito compra alguma? Nesses momentos será extremamente importante ter logs das requisições registradas.

Vale a atenção referente ao tamanho de arquivos de logs, que tendem a crescer muito. Importante que os registros sejam fáceis de registrar e consultar, para que seja possível ter uma resposta ágil no caso de algum incidente.

Integridade

Novamente um risco que é mais recorrente em APIs disponibilizadas na internet. Alguns ataques de injeção de SQL ou JSON podem causar problemas graves. Para evitar esses problemas é muito importante que sua API exponha apenas recursos realmente necessários para seus clientes. A tecnologia utilizada para desenvolver a aplicação, o servidor utilizado e a forma de persistência são os principais pontos a serem ocultos, ou até mesmo omitidos.

Existem várias abordagens que modificam os cabeçalhos das requisições HTTP omitindo as tecnologias utilizadas, dificultando muito a ação de invasores. Também é imprescindível fazer o uso de filtros de dados de entrada, para evitar SQL e JSON injections e filtrar exceções para não correr o risco de exposição de tecnologias ou bugs.

Segurança de Sistemas Escalonáveis e Distribuídos

Um software pode ser chamado de escalonável quando funciona bem em variados cenários. Ou seja, seu sistema deve estar preparado tanto para rodar no provedor de hospedagem da sua cidade, com 5 acessos ao mesmo tempo, quanto distribuído em centenas de servidores espalhados pelo mundo, capaz de ter milhares ou milhões de acessos simultâneos.

Arquiteturas de sistemas devem ser moldadas desde o ínicio levando em consideração a necessidade de escalonamento e distribuição, mesmo tendo como projeção inicial poucos acessos. Ao menos que a ambição relacionada ao software seja muito pequena, a forma de escalonamento e distribuição de um software deve ser pensada antes mesmo do seu desenvolvimento, porque se o número de acessos aumentar, será preferível ter construído uma aplicação escalável do que ter que ficar aumentando a memória ou capacidade de processamento do servidor a cada usuário novo acessando o sistema.

É no cenário de APIs distribuídas em vários servidores que a complexidade na manutenção da forma adequada da segurança da informação aparece. A partir do momento que um mesmo REST web service é distribuído em mais de um servidor, as informações de um usuário autenticado não são armazenados em uma sessão, por exemplo, pelo contrário, a autenticação deve acontecer em cada requisição. Existem vários padrões que resolvem esse problema, como HTTP Basic, Autenticação/Autorização baseada em certificados, Token-Based Authorization e OAuth.

Conclusão

Este documento apresentou os problemas recorrentes na autenticação e manutenção de um nível adequado de segurança em REST Web APIs. Fica clara a diferença do nível de criticidade e risco entre Web Services que são disponibilizados apenas em redes de empresas internas e APIs que são disponibilizadas para todos os usuários na internet. Em redes locais, requisitos que são extremamente críticos em APIs públicas, como disponibilidade e integridade, por exemplo, não necessitam de uma atenção tão grande.

É sabido que se há a necessidade de disponibilização de serviços na internet, é extremamente aconselhável o uso de REST, e pode-se concluir que esses sistemas devem ser arquitetados visando a escalabilidade e, principalmente, conhecendo o nível de criticidade e risco relacionado ao mesmo, pois só assim será possível encontrar a solução ideal para o nível de segurança ideal.

Referências

BACILI, Kleber. Os fundamentos da segurança de APIs. Disponível em: <http://awshub.com.br/resources/os-fundamentos-da-seguranca-de-apis/>. Acesso em: 18 out. 2016.

REESE, George. Principles for Standardized REST Authentication. 26 dez. 2009. 10 f. Disponível em: <http://broadcast.oreilly.com/2009/12/principles-for-standardized-rest-authentication.html>. Acesso em: 18 out. 2016.

SAUDATE, Alexandre. REST - Construa API's Inteligentes de Maneira Simples. São Paulo: Ed. Casa do Código.

Página anterior    

Páginas do artigo
   1. Resumo
   2. Auditoria, Integridade e Segurança de Sistemas Escalonáveis e Distribuídos
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Começando com Ruby

Como a Tecnologia pode ajudar a Democracia?

Começando com Ruby

Como a Tecnologia pode ajudar a Democracia?

Instalando o Zabbix no CentOS

  
Comentários
[1] Comentário enviado por robisonmachado em 01/02/2017 - 09:47h

muito interessante o artigo amigo, nosso desafio de cada dia


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts