API Manager Evaluation Series – Kong

Sumário

Com os microsserviços ficando cada vez mais segregados em suas reponsabilidades, é preciso interagir e gerenciar todos de forma individual. O Kong é uma API gateway que possibilita esse agrupamento e facilita o trabalho de consumo e acompanhamento de cada um desses microsserviços.

Introdução

Antes de se pensar em microsserviços, uma aplicação monolítica tinha apenas um ponto de acesso e, a partir daí, se seguia os fluxos da aplicação e todas as suas regras e peculiaridades. Mas evoluímos para uma arquitetura mais distribuída e ao definirmos fronteiras de atuação, onde cada um tem que se preocupar somente com a sua responsabilidade, vários serviços foram disponibilizados, e com isso, temos agora diversos pontos de acesso.

A API Gateway encapsula a arquitetura interna do sistema e disponibiliza um único ponto de acesso personalizado para o cliente. Ele também pode prover outras funcionalidades como:

  • Autenticação;
  • Monitoramento;
  • Balanceamento de carga;
  • Cachê;
  • Gerenciamento de solicitações;
  • Manipulação de respostas estáticas.

O que é o Kong?

O Kong é uma API Gateway que fornece todas essas ferramentas. Além disso, ele oferece diversos plugins para facilitar o dia a dia do gerenciamento de APIs.

Ele foi construído com a premissa de ser utilizado para arquiteturas híbridas e multicloud, além disso, é otimizado para trabalhar com microsserviços e arquitetura distribuída. Existem hoje duas versões disponíveis no mercado:

  • Kong Gateway Enterprise Features: trata-se de uma versão paga que inclui alguns módulos e plugins que estendem/trazem recursos avançados. Neste artigo não iremos abordar profundamente esta versão, mas logo iremos falar sobre. Até lá, todas as informações sobre esta versão podem ser encontradas no site: https://konghq.com/products/kong-enterprise/;
  • Kong Gateway (OSS): é uma ferramenta gratuita, leve, rápida, flexível e com todos os recursos mínimos para se gerenciar um conjunto de microsserviços. Ele é executado na frente de qualquer API RESTful e é estendido por meio de módulos e plug-ins que fornecem funcionalidades extras, além da plataforma central.

Ambas as versões são uma combinação de muitas funcionalidades e módulos.

Segurança no Kong

A segurança do Kong pode ser realizada por meio do Kong’s Admin API, nele é possível usar uma interface RESTFull para administrar e configurar serviços, rotas, plugins, consumers e credenciais. Essa estratégia é importante pois, de maneira geral, uma API é basicamente uma forma de requisitar e receber informações de um determinado endpoint.

O Kong suporta vários plugins de autenticação. A sua biblioteca de plugins oferece jeitos de se implementar segurança, conforme as melhores práticas de mercado. É simples de se criar uma maneira de permitir acesso de forma apropriada, é possível associar credenciais individualmente para entidades, configurar limites de acesso para usuários anônimos ou utilizando qualquer outro método de verificação. Estes plugins tornam mais fácil o processo de se adicionar novas formas de autenticação.

As formas mais comuns de autenticação dentro do Kong são:

  • Basic Authentication: consiste na forma mais simples de se autenticar o acesso a um serviço, basta ter usuário e senha válidos;
  • Key Authentication: valida uma API key para garantir acesso a um determinado serviço ou rota;
  • OAuth 2.0 Authentication: suporta autenticação baseada no protocolo OAuth 2.0.

Outros métodos de autenticação:

  • HMAC Authentication;
  • LDAP Authentication;
  • Okta;
  • PASETO (Platform Agnostic Security Tokens);
  • Sessão;
  • Upstream HTTP Basic Authentication;
  • Token de acesso JWT;
  • Session cookie.

Somente no Kong Enterprise:

  • LDAP Authentication Advanced;
  • Kong JWT Signer;
  • Mutual TLS Authentication;
  • OAuth 2.0 Introspection;
  • Upstream TLS;
  • Vault Authentication;
  • OpenID Connect.

Vulnerabilidades

Existem várias opções de plugins no Kong para se trabalhar as vulnerabilidades mais conhecidas de uma API. E a partir desses plugins, você consegue gerenciar limites de acesso, throttling, DDos, entre outros.

Cleafy é um plugin mantido pela comunidade, que fornece proteção contra os ataques mais conhecidos ultimamente.

Especificações

Assim como nas vulnerabilidades, existem opções de plugins para expor sua API, baseadas em Swagger 2.0, Open API Specification e RAML.

O Kong Spec Expose é um ótimo exemplo de ferramenta, desenvolvida pela comunidade, que se integra ao Kong e, a partir daí, expõe o OpenAPI Spac(OAS), Swagger e outras especificações.

Implementando o Kong

Este artigo foi todo baseado na documentação online do Kong API. Ela é extremamente completa e tem tudo o que é necessário para se entender a base do seu funcionamento.

A implementação e configuração da sua estrutura é bastante simples e fácil. A documentação (https://docs.konghq.com/gateway-oss/2.4.x/getting-started/quickstart/) traz uma ótima experiência, permitindo assim, uma fluidez sem que haja perca de tempo com as configurações iniciais. O passo a passo da documentação permite que você suba um serviço de forma bastante ágil.

A administração pelo portal é também bem simples e usual, permitindo até a emissão de relatórios de acompanhamento de tudo o que está acontecendo dentro da sua estrutura.

A escalabilidade do Kong é bem fácil de ser feita. Cada servidor é stateless, isso significa que você pode adicionar e remover quantos recursos no load balance. É possível também, criar toda a estrutura em servidores on-premises.

Resumo

Nesse artigo foi apresentado o Kong API Gatway, uma ótima ferramenta para gerenciamento de API para os seus microsserviços. Ele possui uma estrutura de plugins para que os usuários possam estender as suas funcionalidades principais.

Simples de se instalar, de configurar e de gerenciar. Toda a estrutura do Kong foi feita para que a experiência de configuração e gestão de APIs seja fluida.

Referências

[Kong Gateway (OSS)]

 https://docs.konghq.com/gateway-oss/