O Que É um Commit Assinado?
Um commit assinado carrega uma assinatura criptográfica que prova que ele realmente veio do autor declarado e não foi alterado.
Um commit assinado adiciona uma camada de confiança ao histórico do Git. Como qualquer pessoa pode definir qualquer nome e e-mail em um commit, o campo de autor sozinho não prova nada. Uma assinatura criptográfica, usando uma chave GPG, SSH ou outra, permite que outros verifiquem que um commit realmente veio de você.
Por que assinar importa
O Git permite definir detalhes de autoria arbitrários, então um commit atribuído a alguém pode não ser dessa pessoa. A assinatura fecha essa lacuna: a assinatura está vinculada a uma chave que só o autor real controla, portanto uma assinatura verificada é forte evidência de autenticidade e de que o commit não foi adulterado.
Criando um commit assinado
Com uma chave de assinatura configurada, você assina um commit e outros podem verificá-lo.
git commit -S -m "Add billing webhook handler"
git log --show-signature -1Como funciona a verificação
A assinatura é conferida contra a chave pública do autor. Plataformas de hospedagem exibem um selo de verificado quando a assinatura de um commit corresponde a uma chave que o autor registrou. Você pode configurar suas ferramentas para assinar automaticamente, de modo que todo commit que você fizer seja confiável por padrão.
Commits assinados em CI/CD
Em pipelines conscientes da cadeia de suprimentos, o CI pode exigir que commits e tags sejam assinados e rejeitar os não assinados, garantindo que apenas código verificado seja construído e liberado. Combinado com tags de release assinadas, isso fornece uma cadeia de custódia comprovável do autor até o artifact entregue, uma expectativa crescente para a entrega segura de software.
Boas práticas de assinatura
- Configure uma chave de assinatura e habilite a assinatura automática.
- Registre sua chave pública na sua plataforma de hospedagem.
- Assine tags de release além dos commits para proveniência completa.
- Imponha verificações de assinatura no CI para repositórios sensíveis.
Principais conclusões
- Um commit assinado prova criptograficamente seu autor e sua integridade.
- A verificação confere a assinatura contra a chave pública do autor.
- O CI pode exigir commits e tags assinados para segurança de cadeia de suprimentos.