# Melhores práticas de manutenção de dependências

Diretrizes e recomendações para manter as dependências que você usa, incluindo os produtos de segurança do GitHub, que podem ajudar.

## Melhores práticas de manutenção de dependências

Manter-se em dia com as dependências é crucial para manter um ambiente de software seguro. Veja algumas recomendações:

**Adotar ferramentas de gerenciamento de dependências voltadas para a segurança**

* Use e configure ferramentas que verificam suas dependências em busca de vulnerabilidades e sugerem atualizações automaticamente.
* Verifique se essas ferramentas estão integradas ao pipeline de CI/CD para monitoramento e atualização contínuos.
* Configure seus processos para seguir o versionamento semântico, evitando alterações que possam quebrar a compatibilidade.

**Executar verificações e auditorias de vulnerabilidades regulares**

* Agende auditorias e verificações de dependência regulares para identificar dependências desatualizadas ou vulneráveis.

**Automatizar o gerenciamento de patches de segurança**

* Configure suas ferramentas de gerenciamento de dependência para aplicar patches de segurança automaticamente.
* Também configure solicitações de pull automatizadas para atualizações críticas de segurança, permitindo que sejam revisadas e mescladas rapidamente.

**Impor políticas sobre o uso de dependências**

* Implemente políticas que imponham o uso de versões seguras de dependências.
* Use ferramentas que podem bloquear a mesclagem de pull requests caso introduzam vulnerabilidades ou falhem em atualizar dependências vulneráveis.

**Integrar o teste de segurança em CI/CD**

* Incorpore ferramentas de teste de segurança no pipeline de CI/CD.
* Verifique se as atualizações de dependência são testadas automaticamente em relação à conformidade de segurança.

**Use arquivos de bloqueio e fixação de dependências**

* Use arquivos de bloqueio (por exemplo, `package-lock.json`, `yarn.lock` e `Pipfile.lock`) para fixar dependências em versões seguras conhecidas.
* Atualize e revise regularmente esses arquivos de bloqueio para garantir que as dependências estejam atualizadas sem problemas de segurança não intencionais.

**Monitorar avisos de segurança**

* Assine avisos de segurança para as linguagens e as estruturas que você usa.
* Automatize a integração de avisos ao fluxo de trabalho de desenvolvimento para se manter em dia sobre novas vulnerabilidades.
* Fique de olho nos painéis fornecidos pelas ferramentas de gerenciamento de dependências.
* Lembre-se de atualizações críticas, especialmente patches de segurança, e priorize-as.

**Controle de versão e gerenciamento de alterações**

* Acompanhe as alterações de dependência no controle de versão (por exemplo, por meio de pull requests automatizadas).

* Realize revisões de código regulares para garantir que as atualizações não introduzam novas vulnerabilidades.

**Treinamento e conscientização**

* Eduque suas equipes de desenvolvimento e operações sobre a importância de manter as dependências seguras e atualizadas.
* Ofereça treinamento sobre como usar o gerenciamento de dependências e as ferramentas de segurança com eficiência.

**Plano de resposta para vulnerabilidades**

* Tenha um plano de resposta a incidentes bem definido para quando as vulnerabilidades forem identificadas nas dependências.
* Verifique se a equipe sabe como resolver e corrigir problemas de segurança rapidamente.

Seguindo essas práticas, você pode reduzir de maneira significativa o risco representado por dependências desatualizadas e vulneráveis e manter um ambiente mais seguro.

## Como GitHub pode ajudar

GitHub fornece recursos de segurança para ajudá-lo a manter dependências:

**Grafo de dependência**: controla as dependências do projeto e identifica vulnerabilidades. Confira [Grafo de dependência](/pt/code-security/concepts/supply-chain-security/dependency-graph).

**Revisão de dependência**: captura dependências inseguras em solicitações de pull antes de serem mescladas. Além disso, o ação de revisão de dependência pode falhar nas verificações e, quando exigido pelas regras de proteção da ramificação, impedir que as pull requests que introduzem vulnerabilidades sejam mescladas. Confira [Análise de dependência](/pt/code-security/concepts/supply-chain-security/dependency-review).

\*\*
Dependabot
\*\*: examina automaticamente as vulnerabilidades, cria alertas e abre solicitações de pull para atualizar dependências vulneráveis ou desatualizadas. Você pode agrupar várias atualizações em solicitações de pull único para simplificar as revisões. Confira [Alertas do Dependabot](/pt/code-security/concepts/supply-chain-security/dependabot-alerts).

\*\*
GitHub Advisory Database
\*\*: fornece avisos de segurança que alimentam Dependabota detecção de vulnerabilidades. Consulte [Banco de dados do GitHub Advisory](/pt/code-security/concepts/vulnerability-reporting-and-management/github-advisory-database).

**Relatório de vulnerabilidades privadas**: permite que os mantenedores recebam, discutam e corrijam relatórios de vulnerabilidade em particular antes da divulgação pública.

**Visão geral de segurança**: mostra a postura de segurança da sua organização com painéis para repositórios em risco, tendências de alerta e status de habilitação de recursos. Confira [Visão geral da segurança](/pt/code-security/concepts/security-at-scale/security-overview).

Para obter diretrizes de cadeia de suprimentos de ponta a ponta, consulte [Protegendo sua cadeia de suprimentos de ponta a ponta](/pt/code-security/tutorials/implement-supply-chain-best-practices/end-to-end-supply-chain-overview).