Docker lança três ferramentas para acelerar e facilitar o desenvolvimento
24 de janeiro de 2024A infraestrutura automatizada pode eliminar tickets de trabalho?
24 de janeiro de 2024Os gateways de API são a porta de entrada para todos os seus microsserviços. A função central do API Gateway no roteamento o torna uma ferramenta valiosa para simplificar aplicativos baseados em microsserviços e um ponto crítico para a segurança.
São responsáveis por proteger a aplicação contra ameaças externas, garantindo que apenas pedidos legítimos são processados e que dados maliciosos ou malformados não comprometem os serviços subjacentes. Portanto, configurar corretamente protocolos e políticas de segurança em um gateway de API é fundamental. Qualquer descuido pode levar a vulnerabilidades potenciais, tornando todo o ecossistema de microsserviços suscetível a violações ou interrupções.
O conceito abrangente a ser considerado é a confiança zero. Qualquer usuário, solicitação, origem ou ação deve ser validado e autenticado antes de receber acesso. Num modelo de confiança zero, a confiança nunca está implícita; deve sempre ser conquistado e verificado continuamente, garantindo que cada interação com o gateway API seja segura e legítima.
Aqui estão cinco práticas recomendadas para implementar confiança zero em seu gateway de API dentro de cinco conceitos básicos de segurança.
Ambassador Labs é líder em experiência de desenvolvedor nativo em nuvem. O plano de controle de desenvolvedor da empresa para Kubernetes integra a infraestrutura de desenvolvimento, implantação e produção para desenvolvedores e organizações em todo o mundo para que possam codificar, enviar e executar aplicativos com mais rapidez e facilidade do que nunca. A Insight Partners é investidora da Ambassador e da TNS.
Saber mais
Novidades do Ambassador Labs
$(document).ready(function() { $.ajax({ método: ‘POST’, url: ‘/no-cache/sponsors-rss-block/’, headers: { ‘Cache-Control’: ‘no- cache, no-store, must-revalidate’, ‘Pragma’: ‘no-cache’, ‘Expires’: ‘0’ }, dados: { patrocinadorSlug: ‘embaixador’, numItems: 3 }, sucesso: função (dados) { if (data.startsWith(‘ERROR’)) { console.log(data); $(‘.sponsor-note-rss’).hide(); } else { $(‘.sponsor-note-rss-items -embaixador’).html(dados); } } }); });
Autenticação: use autenticação baseada em token com tokens de curta duração
A autenticação é um aspecto fundamental de segurança em gateways de API. Como interface principal entre entidades externas e serviços internos, a capacidade de um gateway de API de autenticar solicitações com precisão e segurança é fundamental para a segurança geral do sistema.
No centro do processo de autenticação está garantir que a entidade que faz a solicitação é quem afirma ser. Você pode usar chaves de API para autenticar seu gateway de API, mas sistemas baseados em token, como o OAuth 2.0, permitem permissões granulares, permitindo ações específicas ou acessos a recursos com base nas declarações do token.
A autenticação baseada em token, especialmente ao usar tokens sem estado como JSON Web Tokens (JWTs), não exige que o servidor mantenha um estado de sessão, tornando-o adequado para aplicativos distribuídos em grande escala. Os tokens também podem ser assinados e criptografados, garantindo a integridade e confidencialidade dos dados. Os JWTs, por exemplo, permitem que as declarações sejam incorporadas diretamente no token, que o servidor pode validar.
Você minimiza o dano potencial de vazamento ou roubo de token mantendo a vida útil do token curta e usando tokens de atualização quando necessário. A autenticação baseada em token também é amplamente adotada e compreendida, facilitando as integrações com serviços ou sistemas de terceiros.
Dito isto, é essencial compreender que mesmo as melhores práticas, se mal implementadas, podem levar a vulnerabilidades. O gerenciamento adequado de chaves, a transmissão segura de tokens (como o uso de HTTPS), a validação de assinaturas de tokens e a proteção contra a reutilização de tokens são aspectos cruciais desta prática recomendada.
Autorização: aplicar estritamente o controle de acesso baseado em função (RBAC) para todos os endpoints de API
A função do gateway na autorização é atuar como um intermediário que verifica cada solicitação em relação a um conjunto de permissões antes de permitir que ela prossiga. Os gateways de API frequentemente atendem a vários aplicativos, funções de usuário e serviços. Esta diversidade de interação significa que nem todas as entidades autenticadas devem ter acesso a todos os recursos. Por exemplo, um usuário autenticado como funcionário regular pode não ter os mesmos direitos de acesso a dados que alguém autenticado como administrador.
Como tal, os gateways de API devem usar o princípio do menor privilégio. Você nunca deseja que um usuário, interno ou externo, tenha mais acesso do que realmente precisa. A aplicação do RBAC para todos os endpoints da API garante que cada usuário ou serviço receba apenas as permissões necessárias para sua função ou tarefa específica. Isso minimiza o risco de acessos ou ações não autorizadas, reforçando a segurança geral do gateway de API e dos microsserviços que ele protege.
Se uma credencial de usuário ou serviço for comprometida, o RBAC garante que o invasor só poderá acessar recursos limitados, minimizando possíveis danos. Ao conceder permissões estritamente baseadas em funções, você fornece inerentemente apenas o acesso mínimo necessário, encapsulando a essência do princípio do menor privilégio.
Ao adotar uma abordagem RBAC rigorosa, um gateway de API mantém esses princípios, garantindo que cada usuário ou serviço interaja apenas com os recursos de que realmente precisa, melhorando assim a segurança geral do sistema.
Limitação de taxa: implemente limitação de taxa dinâmica e em camadas com base no comportamento e contexto do usuário
A limitação de taxa é frequentemente vista como um meio de garantir a disponibilidade do sistema e evitar a degradação do serviço durante o uso normal. Mas do ponto de vista da segurança, a limitação de taxa atua como uma primeira linha de defesa contra diversas atividades maliciosas, como ataques distribuídos de negação de serviço (DDoS). Ao limitar o número de solicitações de uma fonte específica ou de um endpoint específico, um gateway de API pode efetivamente impedir que uma enxurrada de solicitações sobrecarregue a infraestrutura de back-end, garantindo assim a disponibilidade contínua do serviço para usuários legítimos.
O problema é encontrar o equilíbrio certo entre solicitações legítimas e agentes mal-intencionados. Em vez de usar um limite de taxa único, adote uma abordagem dinâmica que permita adaptar os limites com base no comportamento do usuário ou cliente. Assim, um usuário com comportamento típico pode receber mais solicitações do que um usuário que mostra sinais de atividade suspeita.
Você pode fazer isso usando uma abordagem em camadas para limites de taxa. Em vez de depender de um único limite de taxa, use uma combinação de diferentes limites de taxa, como:
- Limites baseados em IP: restrinja o número de solicitações de um endereço IP específico.
- ID de usuário ou limites baseados em token: diferencie usuários autenticados.
- Limites específicos de endpoint: implemente limites de taxa para endpoints críticos ou potencialmente exploráveis.
- Contextual: Avalie o contexto da solicitação. Por exemplo, as solicitações de API que modificam dados (como POST, PUT, DELETE) podem ter um limite de taxa diferente das solicitações somente leitura (GET).
Com esta abordagem, os utilizadores genuínos receberão a melhor qualidade de serviço, enquanto os potenciais atacantes terão dificuldade em realizar ataques de força bruta, raspagem ou DDoS. No entanto, tome cuidado para que a limitação de taxa não bloqueie inadvertidamente o tráfego legítimo ou crie um cenário de negação de serviço para usuários genuínos. Mecanismos adequados de monitoramento e alerta devem acompanhar a limitação de taxas para resolver prontamente tais problemas.
CORS: definir e restringir explicitamente as origens permitidas
Quando um aplicativo baseado em navegador tenta acessar uma API que não está em sua origem, o navegador primeiro envia uma solicitação de comprovação usando o método HTTP OPTIONS. Isso é pedir permissão à API (por meio do gateway) para realizar a solicitação. A responsabilidade do gateway API é responder a esta solicitação de comprovação com os cabeçalhos CORS (compartilhamento de recursos de origem cruzada) apropriados, informando o navegador sobre as origens, métodos e cabeçalhos permitidos.
Do ponto de vista da segurança, as implicações são significativas. Uma política CORS excessivamente permissiva, como permitir que qualquer origem acesse a API, pode expor dados ou operações confidenciais a sites maliciosos. Os malfeitores podem usar isso para roubo de dados ou até mesmo desencadear efeitos colaterais indesejados no contexto da sessão de um usuário.
É por isso que você precisa sempre evitar curingas. Usando um curinga (*
) permitir que qualquer origem acesse recursos é arriscado e deve ser evitado.
Em vez disso, especifique exatamente quais origens (domínios) têm permissão para acessar a API. Se você tiver um serviço de front-end específico que se comunica com seu back-end por meio de um gateway de API, isso é simples no arquivo de configuração do gateway de API:
origins:http://foo.example,http://bar.example
Restrinja o acesso apenas a fontes confiáveis. Isso minimizará a exposição e reduzirá significativamente o risco de solicitações indesejadas entre origens e possíveis violações de dados.
Ao especificar diligentemente as origens permitidas e resistir à tentação de usar caracteres curinga amplos, o gateway de API pode equilibrar acessibilidade e segurança, mantendo sob controle interações maliciosas entre origens.
Registro: implemente monitoramento e alertas em tempo real para anomalias
O login em gateways de API consiste na captura de informações relevantes relacionadas às solicitações e respostas que fluem pelo gateway. Isso geralmente inclui detalhes como:
- Carimbos de data e hora: fornece um registro cronológico, permitindo que as equipes acompanhem o momento exato em que ocorreu uma interação, o que é vital para depuração e análise de incidentes.
- Endereços IP de origem: identifique a origem de uma solicitação para ajudar a rastrear o comportamento do usuário, solucionar problemas e detectar atividades potencialmente maliciosas.
- Terminais acessados: Avalie padrões de uso, otimize recursos e detecte tentativas de acesso não autorizado, observando quais endpoints de API são acessados
- Tempos de resposta: monitorar quanto tempo leva para uma API responder ajuda a avaliar o desempenho, garantir a entrega oportuna de dados e identificar possíveis gargalos.
- Códigos de status: Veja o resultado da solicitação, se ela foi bem-sucedida, gerou erro ou resultou em problema no servidor, auxiliando no diagnóstico e monitoramento da qualidade do serviço.
- Cabeçalhos: acesse metadados vitais sobre uma solicitação ou resposta, como tipo de conteúdo ou tokens de autenticação, que são essenciais para processamento e validações de segurança.
- Cargas úteis: capture o conteúdo principal de uma solicitação ou resposta, pois pode ser crucial para depurar problemas de aplicativos ou compreender o contexto de troca de dados.
- Parâmetros de consulta: registre essas informações, pois elas ajudam a determinar o conteúdo da resposta, entender as consultas do usuário e garantir que os dados corretos sejam retornados.
O monitoramento eficaz pode identificar possíveis gargalos do sistema, degradações de serviços ou atividades maliciosas. Por exemplo, um aumento repentino nas tentativas de login malsucedidas ou nas solicitações de um intervalo de IP específico pode indicar um ataque de força bruta ou possível abuso de API. Limites ou padrões de interesse predefinidos estabelecidos (tentativas repetidas de login malsucedidas, métodos HTTP inesperados ou picos de tráfego incomuns) podem atuar como gatilho para alertar as equipes de resposta sobre possíveis preocupações de segurança.
O registro e o monitoramento em gateways de API também desempenham um papel crucial nas investigações pós-incidentes. No caso de uma violação de segurança ou interrupção do serviço, os logs servem como uma fonte primária de verdade, ajudando as equipes a rastrear os eventos que levaram ao incidente, identificando as causas raízes e planejando estratégias de mitigação.
Zero Trust é melhor para seus usuários legítimos
Um gateway de API seguro significa uma experiência melhor para seus usuários confiáveis.
Quando as solicitações não autorizadas e maliciosas são efetivamente filtradas, os recursos do sistema são melhor alocados para atender usuários genuínos, garantindo tempos de resposta mais rápidos, tempo de atividade consistente e uma experiência de usuário mais confiável. Além disso, com as medidas de segurança reforçadas de uma abordagem de confiança zero, os utilizadores podem interagir com confiança com a plataforma, sabendo que os seus dados estão protegidos contra potenciais violações.
Adicionar as opções acima ao seu gateway de API pode ser tão fácil quanto adicionar outra linha ao seu arquivo YAML. Com gateways de API modernos, o aprimoramento da segurança geralmente não requer revisões extensas, apenas uma simples alteração na configuração. Esta facilidade de implementação significa que não há desculpa para negligenciar práticas robustas de segurança.
A postagem 5 práticas recomendadas para proteger seu gateway de API apareceu pela primeira vez em The New Stack.