O Que É Proveniência de Build?
A proveniência de build é um registro assinado e à prova de adulteração de como um artifact foi construído, por qual pipeline e a partir de qual commit de origem.
Um binário sozinho não diz nada sobre de onde veio. A proveniência anexa uma declaração verificável - "este artifact foi construído por este workflow, a partir deste commit, com estas entradas" - para que os consumidores confiem na origem do artifact em vez de presumi-la.
O que a proveniência atesta
Um documento de proveniência registra o repositório e o commit de origem, o builder (o sistema de CI e o workflow), as entradas do build e um digest do artifact resultante, tudo assinado criptograficamente para que não possa ser alterado sem detecção.
Como ela é verificada
Um consumidor verifica a assinatura contra a identidade do builder confiável e confirma que o digest do artifact e as alegações de origem coincidem. Se algo foi trocado após o build, a verificação falha.
Um pequeno exemplo
A atestação de build-provenance do GitHub registra que a imagem com digest X foi construída pelo workflow Y a partir do commit Z. Antes de fazer deploy, um verificador confirma que o digest da imagem em execução coincide com uma atestação do seu repo e workflow - e não de alguma fonte desconhecida.
SLSA e onde a CI se encaixa
Frameworks como o SLSA definem níveis de proveniência. A CI é onde a proveniência é gerada, porque o pipeline é o único lugar que conhece de forma autoritativa a fonte, as entradas e o builder. As plataformas cada vez mais a produzem automaticamente.
Proveniência vs assinatura
A assinatura prova que um artifact está inalterado e veio de você. A proveniência descreve como ele foi construído. Elas se complementam - você assina o artifact e assina a declaração de proveniência - e juntas permitem que um consumidor confie tanto nos bits quanto na sua origem.
Principais conclusões
- A proveniência é um registro assinado de como e a partir de quê um artifact foi construído.
- Ela permite que consumidores verifiquem a origem em vez de confiar cegamente.
- A CI a gera; frameworks como o SLSA definem níveis de proveniência.