API Manager Evaluation Series – AWS API Gateway
Sumário
O Amazon API Gateway é um serviço gerenciado que permite diversas funções para os desenvolvedores. Esses profissionais podem criar, publicar, monitorar, além de proteger as APIs em qualquer escala com facilidade. Esse serviço administra todas as tarefas envolvidas no recebimento e processamento de chamadas de API simultâneas, inclusive gerenciamento de tráfego, suporte de CORS, controle de autorização e acesso, com fluxo controlado, monitoramento e gerenciamento de versões de API.
Introdução
Antes de se pensar em microsserviços, uma aplicação monolítica tinha apenas um ponto de acesso e a partir disso se seguia os fluxos da aplicação e todas 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 sua responsabilidade, vários serviços foram disponibilizados, e, com isso, agora temos vários pontos de acesso.
O 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;
- Cache;
- Gerenciamento de solicitações;
- Manipulação de respostas estáticas.
O API Gateway atua como uma “porta frontal” para aplicações acessarem dados, lógica de negócios ou funcionalidade de seus serviços de backend.
O que é o AWS API Gateway?
O Amazon API Gateway é um serviço da AWS para criação, publicação, manutenção, monitoramento e proteção de APIs REST e WebSocket em qualquer escala. Os desenvolvedores de API podem criar APIs que acessem a AWS ou outros web services. Além disso, ele oferece diversos plugins para facilitar o dia a dia do gerenciamento de APIs.
O Amazon API Gateway oferece os seguintes recursos:
- Suporte para APIs com estado (WebSocket) e sem estado (HTTP) e REST.
- Mecanismos de autenticação poderosos e flexíveis, como políticas, funções do autorizador do e grupos de usuários do AWS Identity and Access Management.
- Portal do desenvolvedor para publicar suas APIs.
- Implantações de versão Canary para lançar alterações com segurança.
- Registro em log e monitoramento do CloudTrail do uso e alterações de API.
- Registro de acesso em logs e registro de execução em logs do CloudWatch, incluindo a capacidade de definir alarmes. Para obter mais informações, consulte Monitorar a execução da API REST com métricas do Amazon CloudWatch e Monitorar a execução de APIs WebSocket com métricas do CloudWatch.
- Capacidade de usar modelos do AWS CloudFormation para permitir a criação de APIs. Para obter mais informações, consulte a referência dos tipos de recursos do Amazon API Gateway e a referência de tipos de recursos do Amazon API Gateway V2.
- Suporte para nomes de domínio personalizados.
- Integração ao AWS WAF para proteger suas APIs contra explorações comuns da web.
- Integração com acompanhamento de latências de desempenho AWS X-Ray para compreensão e triagem.
Segurança no AWS API Gateway
A AWS trata a segurança de todo o seu ecossistema como prioridade. A prerrogativa é de que o modelo de segurança é compartilhando onde:
- Segurança da nuvem: representa todo a proteção a sua infraestrutura para executar os serviços da AWS;
- Segurança na nuvem: de responsabilidade do cliente onde o serviço que você está utilizando da AWS determina o que você pode usar.
Para fins de proteção de dados, é recomendado que você proteja as credenciais da conta da AWS e configure as contas de usuário individuais com o AWS Identity and Access Management (IAM). Dessa maneira, cada usuário receberá apenas as permissões necessárias para cumprir suas obrigações de trabalho. Outra recomendação é que você proteja seus dados das seguintes formas:
- Use uma autenticação multifator (MFA) com cada conta.
- Use SSL/TLS para se comunicar com os recursos da AWS. Recomendamos TLS 1.2 ou posterior.
- Configure o registro em log das atividades da API e do usuário com o AWS CloudTrail.
- Use as soluções de criptografia da AWS, juntamente com todos os controles de segurança padrão nos serviços da AWS.
- Use serviços gerenciados de segurança avançada, como o Amazon Macie, que ajuda a localizar e proteger dados pessoais armazenados no Amazon S3.
- Se você precisar de módulos criptográficos validados pelo FIPS 140-2 ao acessar a AWS por meio de uma interface de linha de comando ou uma API, use um endpoint do FIPS. Para obter mais informações sobre endpoints do FIPS.
Na segurança da nuvem, temos o destaque nas seguintes funções:
- Políticas de recursos permitem que você crie políticas baseadas em recursos para permitir ou negar acesso a APIs e métodos de endereços IP de origem ou endpoints da VPC especificados.
- Funções e políticas padrão do AWS IAM oferecem controles de acesso flexíveis e robustos que podem ser aplicados a uma API inteira ou a métodos individuais.
- Tags do IAM podem ser usadas com as políticas do IAM para controlar o acesso.
- Políticas de endpoint para VPC endpoints de interface permitem anexar políticas de recurso do IAM a VPC endpoints de interface a fim de melhorar a segurança das APIs privadas.
- Autorizadores do Lambda são funções do Lambda que controlam o acesso aos métodos da API REST usando a autenticação de token de portador, bem como informações descritas pelos cabeçalhos, caminhos, strings de consulta, variáveis de estágio ou parâmetros de solicitação de variáveis de contexto.
Na segurança nuvem, temos o destaque nas seguintes funções:
- Compartilhamento de recursos entre origens (CORS) permite que você controle como a API REST responde a solicitações de recursos entre domínios.
- Certificados SSL no lado do cliente podem ser usados para verificar se as solicitações HTTP para seu sistema backend provêm do API Gateway.
- AWS WAF pode ser usado para proteger sua API do API Gateway contra explorações comuns da Web.
Vulnerabilidades
Por se tratar de um produto que está hospedado em um dos maiores provedores de serviços de cloud computing do mundo, não existe um material direcionado a controle de vulnerabilidades dentro da plataforma.
Por se tratar de uma estrutura onde a base é a segurança é compartilhada, toda a garantia da proteção da infraestrutura é feita pela própria AWS, isso posto, o time da AWS é quem se responsabiliza pelo bem estar da sua infraestrutura e de não deixar vulnerável a ataques.
Especificações
O AWS API Gateway apresenta compatibilidade com os padrões de especificação Swagger 2.0 e Open API Specification 3.0.0.
Implementando o AWS API Gateway
Este artigo foi todo baseado na documentação online do AWS API Gateway. Ela é uma documentação extremamente completa e com tudo necessário para se entender a base do seu funcionamento.
A implementação e configuração de sua estrutura é bastante simples e fácil. A documentação (https://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/api-gateway-rest-tutorials.html) 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 você subir um serviço de forma bastante ágil.
administração pelo portal é também bem simples e usual permitindo até a emissão de relatórios de acompanhamento de tudo que está acontecendo dentro da sua estrutura.
A escalabilidade do AWS API Gateway é bem fácil de ser feita e segue os padrões da plataforma. Todas as configurações podem ser feitas e automatizadas para funcionar sob demanda.
Resumo
Nesse artigo foi apresentado o AWS Api Gatway, uma ótima ferramenta para gerenciamento de API para seus microsserviços. Ele possui uma robusta estrutura fornecida pela AWS para administração e configuração.
A ferramenta possui um escopo bem amplo de aplicação, podendo ser aplicada em projetos de todos os tamanhos. É importante ressaltar que ao se pensar na utilização de um gateway como esse, o custo deve ser levado em conta, visto que, a ferramenta não tem uma versão gratuita e o seu custo pode ser um fator para inviabilizar o projeto.
Seus recursos são vastos e de fácil implementação e tem um suporte bem estruturado, junto com uma documentação vasta e bem escrita.
Vale destacar que, além de tudo que foi apresentado até aqui, o AWS Gateway tem a opção de conversão de um webservices para uma Rest API (https://docs.aws.amazon.com/apigateway/latest/developerguide/rest-api-data-transformations.html) o que facilita bastante projetos de migração de sistemas legados.
Referências
[AWS API Gateway]https://docs.aws.amazon.com/pt_br/apigateway/latest/developerguide/welcome.html