Plugins
Visão Geral
Plugins são módulos de funcionalidades que são adicionados ao Gateway para estender suas capacidades. Eles o transformam de um simples proxy reverso em um verdadeiro API Gateway com funcionalidades sofisticadas para expor APIs de forma segura, como autenticação, autorização, validação e transformação das requisições, controle de tráfego, cache, entre outros.
Os plugins agem sobre as requisições que passam pelo gateway, podendo modificar, analisar, bloquear ou enriquecer essas requisições de forma automática. Com essas capacidades na camada de gateway, há a segregação de responsabilidades para que não seja necessário implementar esses controles comuns e já estabelecidos diretamente no código dos seus serviços.
Como funcionam na prática?
Imagine uma API de e-commerce. Sem plugins, o gateway apenas encaminharia as requisições para os backends. Com os plugins é possível:
- Garantir que só usuários logados acessem o carrinho, utilizando o plugin de autenticação OAuth 2.0;
- Proteger API de abusos e evitar que um usuário faça milhares de requisições e sobrecarregue a aplicação, utilizando o plugin de rate limiting
- Aumentar a performance de consultas em cache desonerando o backend, utilizando plugin de proxy cache.
Classificação de plugins
De modo geral, o DHuO organiza os plugins em 3 grandes grupos:
- Plugins exclusivos DHuO Gateway: Plugins customizados, exclusivos na versão do gateway DHuO.
- Plugins Kong OSS Básicos Plugins presentes na versão opensource do kong e gateway DHuO. Esses plugins são os mais utilizados e que atendem a maioria de funcionalidades utilizadas na exposição de APIs.
- Plugins Kong OSS Avançados Outros plugins presentes na versão opensource do kong e gateway DHuO. Atendem a cenários menos comuns ou específicos.
Plugins exclusivos DHuO Gateway
| Plugin | Descrição |
|---|---|
| DHuO MTLS | Adiciona autenticação MTLS |
| Kafka | Converte requisições em mensagens e publica em tópicos Kafka |
Plugins Kong OSS Básicos
| Plugin | Descrição |
|---|---|
| Basic Authentication | Adiciona autenticação Basic |
| Key Authentication | Adiciona autenticação por API key |
| JWT | Adiciona autenticação por validação de tokens JWT |
| OAuth 2.0 Authentication | Adiciona autenticação OAuth 2.0 |
| ACL | Adiciona controle de acesso dos consumidores de API baseado em grupos |
| IP Restriction | Restringe o acesso a APIs baseado em IP |
| CORS | Permite configurar políticas de CORS no acesso às APIs |
| Proxy Cache | Implementa cache de respostas HTTP no gateway |
| Rate Limiting | Adiciona controles de limite de requisições aceitas em um período de tempo |
| Request Size Limiting | Bloqueia requisições baseado no tamanho do payload recebido |
| Request Termination | Retorna uma resposta imediata sem encaminhar a requisição ao serviço de backend |
| Request Transformer | Realiza transformação de dados da requisição antes de encaminhar ao serviço de backend |
| Response Transformer | Realiza transformação de dados da resposta antes de retornar do gateway |
| Response Rate Limiting | Rate limit baseado em headers de resposta |
| Correlation ID | Gera e propaga um identificador único (UUID) para cada requisição |
| Kong Functions (Pre) | Permite injetar funções customizadas que executam antes da requisição ser encaminhada ao serviço de backend |
| Kong Functions (Post) | Permite injetar funções customizadas que executam após o retorno da requisição do serviço de backend |
Plugins Kong OSS Avançados
| Plugin | Descrição |
|---|---|
| HMAC Authentication | Adiciona autenticação utilizando HMAC |
| LDAP Authentication | Adiciona autenticação integrada com servidores LDAP |
| Session | Adiciona capacidades de sessões de usuários (browser sessions) |
| Bot Detection | Identifica e bloqueia acesso de bots às APIs |
| ACME | Gestão de certificados server SSL/TLS do kong de forma automatizada (emissão, renovação) |
| gRPC Gateway | Expõe backends gRPC por meio de APIs REST |
| gRPC Web | Expõe APIs gRPC via protocolo gRPC-Web |
| AWS Lambda | Chamada de funções AWS Lambda pelo gateway |
| Azure Functions | Chamada de Azure Functions pelo gateway |
| File Log | Gravação de logs de requisição e resposta em arquivo |
| HTTP Log | Envio de logs de requisição e resposta para servidor via HTTP |
| TCP Log | Envio de logs de requisição e resposta para servidor via TCP |
| UDP Log | Envio de logs de requisição e resposta para servidor via UDP |
| Loggly | Envio de logs de requisição e resposta para Loggly |
| Syslog | Envio de logs de requisição e resposta para Syslog |
| StatsD | Envio de métricas do gateway para servidor StatsD |
| Prometheus | Envio de métricas do gateway para o Prometheus |
| Datadog | Envio de métricas do gateway para o Datadog |
| OpenTelemetry | Propagação de dados de tracing compatíveis com OTLP |
| Zipkin | Propagação de dados de tracing compatíveis com Zipkin |
Configuração
Os plugins são gerenciados pela interface do estúdio da API. A partir da home, acesse o menu > APIs. Na página de APIs, visualize a API desejada e acesse o menu > Gateway. Crie ou acesse a configuração do tipo de gateway DHuO Gateway ou Kong. Na página de plugins, eles podem ser cadastrados, editados e excluídos conforme o escopo de cadastro:
Na página de rotas, elas podem ser cadastradas, editadas e excluídas selecionando a partir da lista de rotas extraídas da especificação da API.
- Endpoints: As regras dos plugins serão aplicadas a todas as rotas da API.
- Rotas: As regras dos plugins serão aplicadas apenas à rota selecionada.
Para cadastrar plugins de escopo Endpoints é necessário ter cadastrado pelo menos um Endpoint. Para saber mais sobre o cadastro de endpoints, acesse a seção Endpoints e Services.
Para cadastrar plugins de escopo Rotas é necessário ter configurado a rota desejada. Para saber mais sobre o cadastro de rotas, acesse a seção Routes.
Observação: Caso um plugin seja cadastrado no escopo de endpoints e para uma rota específica, a configuração da rota terá prioridade na execução dele.
Permissões
Por fazerem parte das configurações de políticas de gateway, apenas usuários com papel de administrador da organização (Org Admin) ou provedor de APIs (API Provider) podem gerenciar plugins. Para saber mais, acesse a seção Papéis e permissões.
Parâmetros
Aqui estão os parâmetros para a criação de um plugin:
- Escopo de execução: Obrigatório. Escopo onde será aplicado o plugin. O escopo é definido automaticamente pela interface de acordo com o item selecionado na seção
Plugins: caso selecionadoEndpoints, o plugin será executado para todas as rotas da API; caso selecionado alguma rota na listaRotas, o plugin será executado somente para a rota associada. - Ambiente: Obrigatório. Ambiente onde o plugin será incluído. Essa opção é um facilitador para evitar múltiplos cadastros do mesmo plugin. Opções:
- Global (Para todos os ambientes): o plugin será incluído em todas as releases geradas, independente do ambiente. Ideal para plugins que estarão presentes em todos os ambientes e não tem configurações específicas por ambiente. Isso evita repetição de cadastros. Exemplo: transformações de requisição que são aplicadas independente de ambiente (dev, produção).
- "Ambiente": Serão exibidos a listas de todos os ambientes de endpoint cadastrados. Ideal para plugins que devem ser incluídos apenas para ambientes específicos ou cujas configurações se diferenciam ente ambientes. Exemplos: testar plugins em ambientes não produtivos; plugins com parâmetros específicos por ambiente como TTL de cache, relação de IPs para whitelist/blacklist, entre outros.
- Plugin: Obrigatório. Nome do plugin a ser configurado.
Configurações do plugin
Após selecionar o nome do plugin, será carregado o formulário contendo todos os campos específicos dele. A relação de parâmetros pode ser encontrada na página de documentação específica de cada plugin.