Skip to main content

Resumo da SnykCon: automação para melhorar a conformidade e acelerar os ciclos de feedback

Escrito por
Feature Automation

13 de abril de 2022

0 minutos de leitura

A automação é um componente essencial de DevSecOps porque aumenta a eficiência. Automatizar tarefas no ciclo de vida do desenvolvimento de software ajuda a integrar várias ferramentas ao seu fluxo de trabalho. Também permite que desenvolvedores, mantenedores e profissionais que defendem a segurança se concentrem em encontrar soluções criativas para problemas complexos, em vez de perder tempo com tarefas manuais e repetitivas.

Duas apresentações da SnykCon 2021 tiveram a automação como tema. Sam Hodgkinson e Ben Davies, da Citrix, explicaram como usaram a automação para simplificar o processo de aprovação de licenças de código aberto. David Wiggs, da Bain, apresentou em detalhes o uso da automação para oferecer pipelines como serviço e explicou como a equipe integrou a segurança ao pipeline de CI/CD. As duas sessões destacaram o uso da automação para fortalecer os fluxos de trabalho de desenvolvimento.

Automação das aprovações de licenças de código aberto

Muitas pessoas conhecem o software de código aberto, mas nem tantas conhecem o licenciamento de código aberto. O código aberto é escrito por desenvolvedores e disponibilizado gratuitamente para uso público. As _licenças de código aberto_ determinam como e quando você pode usar um pacote de código aberto. A automação pode detectar e analisar as licenças de código aberto no seu código. Isso alerta você sobre as restrições de licenciamento aplicáveis aos pacotes de código aberto, para que possa compará-las às políticas jurídicas internas e garantir que seu código esteja em conformidade.

O desafio enfrentado

Os engenheiros da Citrix queriam descobrir todas as licenças de código aberto presentes em um projeto, com suporte aos diversos gerenciadores de pacotes e linguagens de programação usados em toda a organização. Também queriam bloquear builds de CI/CD com base na conformidade das licenças e colaborar com a equipe jurídica para criar políticas mais claras para todos.

Sam e Ben começaram a avaliar a plataforma da Snyk para encontrar uma solução. Para eles, era essencial criar um fluxo de trabalho fluido e centrado nas pessoas, sem gerar dificuldades para os engenheiros (nem para a equipe jurídica). Além disso, gostaram das interações simplificadas que conseguiram criar com as ferramentas da Snyk.

Em seguida, avaliaram como incorporar todo o processo de políticas do departamento jurídico a uma API automatizada, pensando em tornar a solução extensível para atender a necessidades futuras.

Com os resultados da Snyk, Sam e Ben puderam tomar decisões de políticas por meio da API e oferecer feedback claro aos desenvolvedores para que soubessem quais políticas foram aprovadas ou rejeitadas.

A solução criada

Eles criaram um pipeline de CI/CD que começa com o código-fonte e passa diretamente pela Snyk CLI. A Snyk analisa o código-fonte e retorna informações sobre as licenças. Essas informações passam por um controle de licenças, que decide se um trecho do código deve ser “reprovado” com base no uso das licenças. O código aprovado pelo controle é enviado a uma API de políticas, que responde sim ou não. (As políticas são definidas pela equipe jurídica da Citrix.) Em 90% dos casos, esse processo é totalmente automatizado. Nos demais, pode ser aberto um chamado para análise manual por alguém da equipe jurídica. Essa análise não se perde: ela retorna à API de políticas para aprovação, e o desenvolvedor pode continuar trabalhando.

"Ao automatizar totalmente esse processo... transformamos um processo de duas semanas, e a maioria das decisões sobre políticas — 90% delas — passou a ser tomada em segundos. Isso é ótimo."

CitrixCitrix

Ben Davies

Software Engineer of Engineering Productivity, Citrix

A Citrix criou um mecanismo de políticas personalizado, baseado em uma estrutura jurídica complexa. A Snyk ajudou a equipe a superar barreiras técnicas para automatizar completamente o processo e viabilizar a segurança no pipeline de CI/CD. A empresa também reduziu o tempo necessário para chegar a uma solução. Com o processo automatizado, a maioria das decisões sobre políticas é tomada em segundos. Agora, Sam e Ben ativam as ferramentas da Snyk como parte da configuração do build, e a tecnologia cuida do resto.

Fechando o ciclo de feedback

Integrar segurança a um pipeline de desenvolvimento de software não é uma ideia nova. Mas as pessoas costumam se concentrar na mecânica do pipeline, e não em como ele é usado. David Wiggs, da Bain, perguntou: os desenvolvedores estão usando o pipeline de desenvolvimento de software que você oferece? Eles estão conseguindo o que precisam? Pense nas ferramentas de segurança e de testes como _produtos_ usados pelos desenvolvedores. Se o seu pipeline é um produto, seus usuários (os desenvolvedores) estão conseguindo usá-lo com sucesso?

Três pilares da automação

O modelo de “pipeline como serviço” começa com um repositório de trabalho. Em seguida, você pode criar um repositório de “ações personalizadas”, que define de onde vêm as etapas dos pipelines. Depois, pode haver um repositório de ferramentas, com um wrapper de API, uma ferramenta de repositório ou qualquer automação específica de uma ferramenta.

Esses três primeiros pilares reduzem o número de locais em que as mudanças são feitas e acompanhadas. Quando os usuários sugerem maneiras de melhorar o processo, você pode implementar as mudanças em um só lugar, sem precisar repeti-las em vários locais.

Acionando o fluxo de trabalho

Essa estrutura prepara você para as seguintes etapas:

  1. O fluxo de trabalho do pipeline é acionado (pense nisso como a “execução” do pipeline). O repositório de ações personalizadas é baixado.

  2. O arquivo action.yml baixa um repositório específico de uma ferramenta de segurança.

  3. Os scripts específicos da ferramenta são executados. Assim, solicitações de recursos ou atualizações são feitas em um único local central, e todos que usam uma ação personalizada recebem a mudança.

Vamos analisar essa mesma arquitetura de pipeline de baixo para cima, começando pelo repositório da ferramenta de segurança. Esse repositório pode conter scripts que definem várias funções. Por exemplo, você poderia chamar um script do PowerShell que usa a API da Snyk para verificar se determinado repositório está na plataforma Snyk; se não estiver, ele o importa. Nesse ponto, alguns scripts são executados, e o restante da arquitetura permite que eles sejam herdados por um repositório de trabalho.

Agora, vamos subir uma camada. O repositório de ações personalizadas baixa o repositório de ferramentas de segurança e executa um script específico de segurança. Com ações compostas, você pode orquestrar vários comandos como uma única etapa. Isso cria uma camada de abstração que simplifica a experiência do usuário e também permite chamar vários scripts e introduzir dependências.

Isso acontece dentro do arquivo action.yml, que permite definir versões sem precisar necessariamente fazer alterações em vários repositórios de trabalho.

Na camada superior, você permite que um repositório de trabalho acesse a ação personalizada do GitHub. Quando o fluxo de trabalho no repositório de trabalho é inicializado, ele baixa o repositório de ações personalizadas e carrega o conteúdo para o ambiente de execução. Você fará outro checkout aninhado, que permite aproveitar o arquivo action.yml e os scripts do repositório da ferramenta, tudo no ambiente de execução do repositório de trabalho.

"[Integrar a segurança ao pipeline] é uma ótima forma de levar essas informações de volta aos desenvolvedores sem que eles precisem sair do ambiente central de trabalho."

David Wiggs

Manager, Bain

Do ponto de vista do usuário, você introduziu vários scripts personalizados de maneira “nativa”. Com as ações do GitHub, você integrou a segurança ao pipeline usando as ferramentas da Snyk. Se as ações do GitHub conseguem integrar ferramentas de segurança ao pipeline, os desenvolvedores não precisam sair do ambiente de trabalho habitual (o GitHub) para obter informações de segurança sobre o processo de desenvolvimento. Você criou um ciclo de feedback mais rápido “nos bastidores”, sem pedir que os desenvolvedores façam mudanças em vários locais.

Descubra como a automação pode melhorar os fluxos de trabalho

A automação pode aumentar a eficiência em toda a organização. Estas apresentações mostram dois exemplos de como aproveitar a automação, mas há muitos outros. A plataforma da Snyk oferece várias ferramentas para incorporar a automação aos seus fluxos de trabalho e integrar padrões de segurança de maneira fluida em todo o processo de desenvolvimento.