Segurança de um Repositório

Introdução

A segurança de um projeto é muito importante. O desenvolvimento seguro deve fazer parte de todos os estágios do ciclo de vida de desenvolvimento de software, ou seja, deve ser implementada junto da criação do programa. Os testes de segurança devem fazer parte dos processos de entrega diários.

Para isso, nos repositórios, existe uma aba chamada Segurança e que possui dversas funcionalidades, como:

  • Políticas de segurança que permite especificar como relatar uma vulnerabilidade de segurança no projeto adicionando um arquivo SECURITY.md.
  • Alertas do Dependabot que notificam quando o seu repositório usa uma dependência vulnerável ou malware.
  • Verificação de código
  • Varredura de segredos que detecta tokens, credenciais e segredos que foram comprometidos no seu repositório antes de fazer um push.
  • Outros avisos de segurança

Ignorar arquivos confidenciais

É possível ignorar arquivos confidenciais incluindo eles em um arquivo chamado .gitignore. O GitHub oferece arquivos .gitignore padrões para projetos.

É importante ficar de olho para não enviar um arquivo confidencial "sem querer" para o reposiorio no GitHub, pois mesmo que seja removido, as alterações ainda ficam no histórico.

Mesmo assim, é possível reescrever o histórico com alguns métodos.

Proteção de branches

É possível criar uma regra e proteger uma branch específica, impondo uma revisão de aprovação ou verificações para os PRs antes de fazer o merge.

Você pode:

  • Executar uma build para verificar se aquela branch pode receber alterações de código
  • Verificar de há erros de digitação e conformidade
  • Testes automatizados para verificar se há alterações de comportamento do codigo

Revisores em solicitações de PR

É possivel adicionar pessoas específicas para revisar as solicitações antes de mesclar coma branch.

Arquivo CODEOWNERS

Atribua membros ou equipes para revisar os códigos enviados, como nesse exemplo:

Código de exemplo do arquivo CODEOWNERS
Exemplo de arquivo CODEOWNERS

Automação da segurança

Grafos de dependências

Por padrão, o GitHub pode mostrar um grafo mostrando as dependencias daquele projeto, buscando em arquivos como package.json, requirements.txt, e etc.

Exemplo de grafo de dependências no GitHub
Exemplo de grafo de dependências no GitHub

Alertas do Dependabot

O Dependabot verifica se há algum problema de vulnerabilidade e cria uma solicitação de pull para que o desenvolvedor veja essa vulnerabilidade e conserte.

Exemplo de alerta do Dependabot no GitHub
Exemplo de alerta do Dependabot no GitHub