O Que É Integridade de Build? Confiar Que Seu Artifact Não Foi Adulterado
Integridade de build é a garantia de que um artifact foi construído a partir exatamente do código-fonte esperado, por exatamente o processo esperado, sem adulteração no meio.
Você revisa o código-fonte e confia no artifact final, mas o que aconteceu no meio? Integridade de build é sobre essa lacuna: provar que o binário que você distribui realmente veio do código-fonte que você revisou, através de um build que ninguém subverteu. É a propriedade que ataques de supply chain como o SolarWinds miraram especificamente, adulterando no meio do build.
O que pode dar errado no meio
- Uma dependência maliciosa injeta código durante o build.
- Um servidor de build comprometido altera a saída.
- O artifact é trocado depois do build mas antes do release.
- Um build script envenenado muda o que é produzido.
Estabelecendo a integridade
A integridade de build é construída a partir de várias práticas: um ambiente de build endurecido e isolado para que o build não possa ser adulterado; procedência assinada registrando como o artifact foi feito; e builds reproduzíveis para que qualquer um possa confirmar que o mesmo código-fonte gera o mesmo binário.
Verificando downstream
Os consumidores verificam a integridade checando procedência e attestations: este artifact tem procedência válida e assinada? Ele nomeia o código-fonte e o builder esperados? Seu digest corresponde? Um deployment gate pode exigir tudo isso antes de aceitar o artifact.
Builds reproduzíveis como prova
Se um build é reproduzível, duas partes independentes construindo o mesmo código-fonte obtêm artifacts idênticos byte a byte. Isso permite que qualquer um confirme que o binário liberado corresponde genuinamente ao código-fonte, sem adições ocultas, a forma mais forte de evidência de integridade.
O ambiente de build é a fundação
Toda garantia de integridade repousa em um builder confiável. Se o ambiente de build pode ser adulterado, sua procedência e assinaturas atestam um processo comprometido. Ambientes de build isolados e efêmeros (como os runners Latchkey) dão a cada build uma fundação limpa e contida, para que as alegações de integridade sejam significativas.
Principais conclusões
- Integridade de build assegura que o artifact corresponde ao código-fonte via um build não adulterado.
- Builders endurecidos, procedência assinada e builds reproduzíveis a estabelecem.
- Gates downstream verificam procedência e attestations antes de aceitar um artifact.