Skip to main content

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

PluginDescrição
DHuO MTLSAdiciona autenticação MTLS
KafkaConverte requisições em mensagens e publica em tópicos Kafka

Plugins Kong OSS Básicos

PluginDescrição
Basic AuthenticationAdiciona autenticação Basic
Key AuthenticationAdiciona autenticação por API key
JWTAdiciona autenticação por validação de tokens JWT
OAuth 2.0 AuthenticationAdiciona autenticação OAuth 2.0
ACLAdiciona controle de acesso dos consumidores de API baseado em grupos
IP RestrictionRestringe o acesso a APIs baseado em IP
CORSPermite configurar políticas de CORS no acesso às APIs
Proxy CacheImplementa cache de respostas HTTP no gateway
Rate LimitingAdiciona controles de limite de requisições aceitas em um período de tempo
Request Size LimitingBloqueia requisições baseado no tamanho do payload recebido
Request TerminationRetorna uma resposta imediata sem encaminhar a requisição ao serviço de backend
Request TransformerRealiza transformação de dados da requisição antes de encaminhar ao serviço de backend
Response TransformerRealiza transformação de dados da resposta antes de retornar do gateway
Response Rate LimitingRate limit baseado em headers de resposta
Correlation IDGera 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

PluginDescrição
HMAC AuthenticationAdiciona autenticação utilizando HMAC
LDAP AuthenticationAdiciona autenticação integrada com servidores LDAP
SessionAdiciona capacidades de sessões de usuários (browser sessions)
Bot DetectionIdentifica e bloqueia acesso de bots às APIs
ACMEGestão de certificados server SSL/TLS do kong de forma automatizada (emissão, renovação)
gRPC GatewayExpõe backends gRPC por meio de APIs REST
gRPC WebExpõe APIs gRPC via protocolo gRPC-Web
AWS LambdaChamada de funções AWS Lambda pelo gateway
Azure FunctionsChamada de Azure Functions pelo gateway
File LogGravação de logs de requisição e resposta em arquivo
HTTP LogEnvio de logs de requisição e resposta para servidor via HTTP
TCP LogEnvio de logs de requisição e resposta para servidor via TCP
UDP LogEnvio de logs de requisição e resposta para servidor via UDP
LogglyEnvio de logs de requisição e resposta para Loggly
SyslogEnvio de logs de requisição e resposta para Syslog
StatsDEnvio de métricas do gateway para servidor StatsD
PrometheusEnvio de métricas do gateway para o Prometheus
DatadogEnvio de métricas do gateway para o Datadog
OpenTelemetryPropagação de dados de tracing compatíveis com OTLP
ZipkinPropagaçã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.
Atenção!

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 selecionado Endpoints, o plugin será executado para todas as rotas da API; caso selecionado alguma rota na lista Rotas, 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.