A abordagem da Snyk para antecipar a segurança no desenvolvimento de APIs
Terence Tirella
1 de fevereiro de 2022
0 minutos de leituraA plataforma de segurança para desenvolvedores da Snyk oferece a desenvolvedores e profissionais de segurança as ferramentas necessárias para criar e operar aplicações modernas com segurança. A Snyk permite que as pessoas antecipem a segurança e adotem um modelo de DevSecOps. As equipes modernas de desenvolvimento de aplicações entendem que antecipar a segurança significa disponibilizar informações aos desenvolvedores o mais cedo possível no processo de desenvolvimento, para criar aplicações e processos de desenvolvimento eficientes e seguros.
Na Snyk, adotamos essa mesma abordagem de antecipar a segurança enquanto desenvolvemos as APIs e aplicações que impulsionam nossa plataforma. O desenvolvimento de APIs, assim como outras tarefas especializadas, exige processos específicos e o uso das ferramentas adequadas. Como plataforma API-first, é fundamental receber feedback sobre nossos contratos de API o mais cedo possível. As APIs da Snyk dão aos usuários — dentro e fora da Snyk — acesso aos nossos produtos de segurança de ponta. Os desenvolvedores confiam na Snyk e em nossas APIs para impulsionar seu SDLC e permitir que criem aplicações seguras. Oferecer APIs de alta qualidade é fundamental para o sucesso da nossa plataforma, e ter um processo de desenvolvimento de APIs de alta qualidade é essencial para disponibilizá-las aos usuários.
Nesta publicação, vamos explorar alguns dos processos e das ferramentas que a Snyk usa para criar nossa plataforma API-first.
Por que antecipar a segurança?
As organizações de software entendem há muito tempo o valor de antecipar testes, operações e segurança. Em vez de esperar que as revisões aconteçam mais adiante no SDLC, os desenvolvedores podem receber feedback rapidamente com técnicas como integração contínua e ferramentas como os plug-ins de IDE da Snyk. O resultado é uma entrega mais rápida, uma postura de segurança aprimorada, custos reduzidos e um processo geral de entrega de aplicações mais confiável. A mesma abordagem de antecipar a segurança também se aplica ao desenvolvimento de APIs. É melhor receber feedback desde o início, de preferência com ferramentas automatizadas.
Guias de estilo e a abordagem da Snyk
Desenvolver APIs RESTful é um tipo específico de desenvolvimento de aplicações que exige os processos e as ferramentas certos. As APIs V3 da Snyk foram projetadas para oferecer aos usuários maneiras confiáveis, consistentes, fáceis de entender e inovadoras de interagir com a plataforma subjacente. Na Snyk, definimos nossas APIs usando OpenAPI (também conhecido como Swagger), o padrão de fato para definir APIs RESTful. No entanto, ter a especificação da API em um formato legível por máquinas e pessoas não garante que as APIs atendam às nossas metas de usabilidade. As APIs precisam ser consistentes em toda a plataforma para que os usuários possam interagir facilmente com diferentes partes dela.
Para oferecer uma API consistente, precisamos de padrões de estilo. Muitas organizações usam um guia de estilo para orientar quem cria conteúdo sobre como manter um tom e um estilo consistentes. A Snyk criou seu próprio guia de estilo para o desenvolvimento de APIs: o API Stylebook, destinado às equipes que criam APIs. À medida que nossa organização cresce e mais desenvolvedores criam APIs, nosso guia de estilo nos ajuda a manter a consistência delas e a oferecer uma experiência consistente aos desenvolvedores que usam nossa plataforma. Mas ter um guia de estilo é apenas parte da solução. Também precisamos de mecanismos que ajudem nossos desenvolvedores a garantir que estejam seguindo as orientações.
Uma forma de garantir a conformidade é fazer uma revisão manual. Como nossas APIs são especificadas em OpenAPI e mantidas sob controle de versão, podemos seguir o mesmo processo de revisão usado para outros artefatos de código. Os desenvolvedores podem criar pull requests (PRs) com alterações nas APIs e pedir feedback a um colega. Esse processo manual pode ser eficaz para garantir a conformidade, mas, como todo processo manual, está sujeito a erros humanos e nem sempre é oportuno. A Snyk é uma empresa global com uma cultura de trabalho remoto desde o início. Esperar que um colega revise seu PR de API pode atrasar a entrega e prejudicar a produtividade, especialmente quando se trata de aspectos da revisão que podem ser automatizados. É aí que nossa abordagem de antecipar a segurança com revisões automatizadas de APIs ajuda.
Os desenvolvedores da Snyk que criam APIs contam com os três ingredientes necessários para realizar uma revisão automatizada local:
O padrão de API da Snyk, expresso como um conjunto de regras
A API que escreveram em OpenAPI
Ferramentas de lint que validam se a especificação OpenAPI escrita pelo desenvolvedor está de acordo com as regras da especificação
Com ferramentas de lint locais para suas APIs, os desenvolvedores recebem feedback em tempo real. Assim, os desenvolvedores da Snyk podem corrigir problemas na API antes de chegar à etapa de revisão manual. O linter também pode ser integrado aos nossos jobs de CI para verificar a conformidade. Como todas as equipes de desenvolvimento usam as mesmas regras, a plataforma da Snyk pode oferecer uma experiência de API mais consistente aos usuários.
Parceria com a Optic
Quando decidimos representar nosso modelo de dados com REST, começamos a definir nosso padrão de API com JSON API. Depois de criar um rascunho do padrão, buscamos torná-lo executável — um padrão como código — para evitar que as equipes de desenvolvimento ficassem bloqueadas à espera de uma “revisão especializada de API”. Nosso objetivo era oferecer feedback rápido como parte da nossa filosofia de antecipar a segurança.
As ferramentas iniciais que encontramos para criar essas regras eram ótimas para verificação sintática por correspondência de padrões, como validar OpenAPI 3 com lint. No entanto, logo percebemos os limites dessa abordagem para implementar nossos padrões de API. Essas regras são trabalhosas de ler e escrever (JSONPath e regexes) e só conseguem expressar restrições sobre o conteúdo da versão atual da especificação da API que está sendo avaliada. Decidimos que precisávamos de uma solução mais robusta e descobrimos que a Optic era uma ótima opção.
A Optic é uma parceira que busca antecipar a segurança em seus produtos de revisão e governança de APIs e oferece suporte a fluxos de trabalho que priorizam o design de APIs. O resultado do nosso trabalho com a Optic nessa área é o Optic CI, um produto de lint para APIs capaz de expressar nossos padrões. As regras do Optic CI são fáceis de ler e escrever como uma DSL de alto nível em TypeScript. Mais importante: o Optic CI reconhece a mesma realidade do desenvolvimento de APIs que a Snyk: as APIs estão sempre mudando e evoluindo. As regras atuam sobre as mudanças na API, em vez de avaliar um único momento. Elas são flexíveis o suficiente para promover a melhoria contínua e o aprimoramento das nossas APIs, além de orientar essas mudanças sem acumular uma montanha de “exceções de lint” à medida que os próprios padrões são aperfeiçoados.
E tem mais por vir
A Snyk está comprometida em criar uma plataforma que prioriza desenvolvedores e APIs. Ao antecipar a segurança no SDLC de desenvolvimento das nossas APIs, levamos feedback aos desenvolvedores. Fique de olho na próxima publicação sobre o processo de desenvolvimento de APIs da Snyk, em que vamos explorar como usamos ferramentas para gerenciar as versões das nossas APIs.
Quer fazer parte da equipe que está construindo a plataforma da Snyk? Confira nossas vagas abertas em Engenharia e ajude a promover nossa missão de segurança para desenvolvedores.
