DEV Community

Cover image for Como deixar seu projeto mais seguro com Dependabot
Pachi 🥑 for GitHub

Posted on • Updated on

Como deixar seu projeto mais seguro com Dependabot

Talvez você esteja se perguntando, porque eu deveria me preocupar com a segurança do meu repositório?

Com o aumento do uso de Open Source, muitos projetos dependem de um grande número de dependências (dependencies), o que nos traz o seguinte problema de segurança: E se alguma dessas dependências estiverem vulneráveis?

Uma das coisas mais importantes que você pode fazer para proteger seu repositório é cuidar de dependências vulneráveis e substituir qualquer malware.

Mas como eu faço isso Pachi?

Vem comigo que eu ensino.

Ferramentas do GitHub para Dependências

O GitHub oferece várias ferramentas para te ajudar a entender seu ambiente, se informar sobre vulnerabilidades nas suas dependências e conservá-las, e eu vou falar um pouco de cada uma delas. Essa ferramentas são:

  • Dependency graph

  • Dependency review

  • Dependabot alerts

  • Dependabot updates

  • Dependabot security updates

  • Dependabot version updates

Dependency graph e Dependency review

O dependency graph, ou Gráfico de dependências, é um sumário que mostra dependências submetidas ao repositório usando o API de submissão de dependência. Ele mostra, para cada repositório:

  • Dependências: os ecossistemas e pacotes dos quais ele depende;

  • Dependentes: repositórios e packages que dependem dele.

Para acessá-lo, clique na aba de Insights do seu repositório, e no menu localizado à esquerda, clique em Dependency graph.

página do dependency graph, mostrando uma lista de dependencias

Se seu repositório está como Público, essa ferramenta já está ativa, mas em caso de repositórios privados, você tem que ativá-la manualmente, navegando para Settings > Code Security and analysis > Enable Dependency graph.

Aqui você pode ver todas as suas dependências e onde elas estão armazenadas dentro do seu projeto.

Dependabot

Enquanto o gráfico é uma ótima maneira de visualizar suas dependências, é o Dependabot que vai nos ajudar a consertar vulnerabilidades e deixar nosso repositório seguro.

Dependabot é uma ferramenta que identifica vulnerabilidades nas dependências do seu código e cria Pull Requests com a atualização da dependência com a versão já corrigida.

Dependabot Alertas

Vamos começar com os Alertas do Dependabot. Todo repositório do Github já tem o Dependabot, mas precisamos ativar os alertas

  • Vá até a aba Settings;

  • Na coluna à esquerda, procure e clique em Code Security and analysis;

  • Aqui vamos ativar Dependabots Alerts, clicando em Enable.

Espere alguns segundos para as atualizações serem aplicadas.

Agora, se você for na aba de Security e clicar em Dependabot na coluna esquerda, você verá alertas de todas as vulnerabilidades encontradas no seu repositório, assim como o nível da gravidade de cada.

pagina de alertas do dependabot mostrando 3 alertas de problemas de segurança

Podemos consertar essas vulnerabilidades manualmente (clicando em cada alerta e fazendo uma revisão de update de segurança) ou podemos deixar que o Dependabot faça isso de maneira automatizada. E como nós de tech adoramos tudo automatizado, é isso que vou te ensinar agora.

Dependabot updates de segurança

Para automatizar esse processo, você precisa:

  • Clicar na aba Settings;

  • Na coluna, esquerda, encontrar e clicar em Code security and analysis;

  • Em Dependabot, vamos ativar Dependabot security updates, clicando em Enable.

O que vai acontecer agora é que além dos alertas aparecem na aba de segurança como comentei anteriormente, o Dependabot automaticamente vai abrir PRs consertando as vulnerabilidades:exmplo de PR criado pelo dependabot

Tudo que você tem que fazer é checar os updates e clicar em merge pull request.

Pronto, todas as vulnerabilidades de dependência se foram.

Dependabot updates de versão

A última ferramenta do Dependabot é a de updates de versão.

Enquanto a Updates de segurança fica de olho em vulnerabilidades e abre PRs que consertem elas, a Updates de versão fica de olho, como o nome diz, em updates nas versões das dependências, e cria um PR com a atualização da mesma.

Para ativá-la vamos voltar naquela página que agora já é sua conhecida:

  • Clicar na aba Settings;

  • Na coluna, esquerda, encontrar e clicar em Code security and analysis;

  • Em Dependabot, vamos ativar Dependabotversion updates, clicando em Enable;

  • Isso vai abrir um arquivo chamado dependabot.yml já populado;

  • Aqui vamos adicionar “nuget” em package-ecosystem e criar um commit.

arquivo para update de versão

Agora, sempre que alguma das dependências do seu repositório tiver um updates, o Dependabot vai abrir um PR com esse update.

Ta dã! Seu repositório está mais seguro!

Seguindo essas dicas acima, seu repositório está mais seguro e o melhor: De forma automatizada do jeito que a gente gosta!
Espero que vocês tenham gostado!

Obrigada por ler até e sigam o GitHub Brasil das redes sociais para ficar por dentro de novidades <3

GitHub Brasil Twitter 🐦
GitHub Brasil no LinkedIn 📝
GitHub Brasil na Twitch 🟣

Top comments (3)

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski • Edited

O dependabot é uma ferramenta legal, pena que usando o poetry eu preciso aceitar um PR, esperar ele atualizar os outros PR que sempre dão conflito, para só então poder aceitar o próximo. Isso sem contar que no Python os arquivos de tipagem normalmente ficam em outro pacote (exemplo boto3 e boto3-stubs), e ai não da para fazer o merge dos dois pacotes juntos, o que pode dar problema quando a atualização não tem retrocompatibilidade. Sem contar que isso tudo acaba gerando um grande volume de e-mails, dele abrindo o PR, atualizando para resolver os conflitos, fazendo o merge... Mas é uma ferramenta que ajuda a manter tudo atualizado.

Collapse
 
eduardoklosowski profile image
Eduardo Klosowski

Outro caso, existem alguns módulos do terraform que usamos várias vezes, ou seja, o mesmo link e tag repetida algumas vezes no código, e cada uso é ele abre um PR diferente, se ele juntasse esses casos que são iguais facilitaria bastante.

Collapse
 
juliofilizzola profile image
Julio Filizzola

Estava vendo sobre isso e pensando realmente em implementar dependabot, depois desse artigo vou implementar.