Skip to content
Latchkey

O Que É Provenance? Provando de Onde um Artefato Veio

Provenance é metadado à prova de adulteração que registra como um artefato foi construído: a partir de qual fonte, por qual processo, em qual plataforma e quando.

Quando você baixa um artefato de build, como sabe que ele realmente veio da fonte em que confia e não foi trocado no caminho? A provenance responde a isso. É um registro assinado do build: as entradas, o builder, o commit, os passos. Com provenance, você pode verificar a origem de um artefato em vez de aceitá-la por fé.

O que a provenance registra

  • O repositório de origem e o commit exato que o build usou.
  • A plataforma de build e a identidade do builder.
  • Os passos ou a receita de build que rodaram.
  • Um timestamp e referências aos artefatos produzidos.

Por que ela precisa ser assinada

Metadado não assinado é apenas uma afirmação que um atacante pode forjar. A provenance é assinada pela plataforma de build para que os consumidores possam verificar que ela não foi alterada e que realmente veio do builder que ela nomeia.

O padrão in-toto

A provenance é comumente expressa usando o formato de attestation in-toto, uma estrutura padrão para "este builder produziu este artefato a partir destas entradas". Padronizar o formato permite que ferramentas de verificação consumam provenance de qualquer plataforma compatível.

Verificando a provenance

Um consumidor (ou um gate de deploy) verifica que um artefato tem provenance, que a assinatura é válida e que a fonte e o builder registrados correspondem ao esperado. Uma divergência, ou a ausência de provenance, é motivo para rejeitar o artefato.

Gerando-a na CI

A plataforma de build gera provenance à medida que o artefato é produzido, capturando as entradas reais em vez de uma receita declarada. Um builder endurecido e isolado torna essa provenance confiável, porque o atacante não teve oportunidade de adulterar o build que ela descreve.

Principais conclusões

  • Provenance é metadado assinado que descreve exatamente como um artefato foi construído.
  • Ela registra fonte, commit, builder e passos para que a origem possa ser verificada.
  • O formato in-toto a padroniza; a assinatura a torna à prova de adulteração.

Guias relacionados