Início/Blog/Proveniência de PRs de IA Software Supply ChainProveniência da software supply chain para pull requests gerados por IA
Um artefato assinado prova qual workflow construiu um commit. Sozinho, não explica por que um agente criou aquele commit, qual autoridade iniciou a tarefa, quais tools influenciaram o diff ou qual humano aceitou o resultado.
Publicado em 8 de junho de 202613 min de leituraMudança gerada por agente
IA adiciona uma etapa de origem antes da proveniência tradicional de build
SLSA define proveniência como informação verificável sobre onde, quando e como um artefato foi produzido. Artifact attestations do GitHub conectam artefato a repositório, commit SHA, workflow e ambiente de build. Esses controles são essenciais, mas um PR gerado por IA adiciona outra pergunta: como a mudança de source foi produzida?
A resposta não deve ser um rótulo vago “AI-assisted”. Um registro útil conecta tarefa aprovada, principal responsável, identidade do agente, modelo e tools, contexto recuperado, arquivos gerados, tentativas, testes, reviews e commit final. A proveniência de build continua a cadeia até o artefato.
Cadeia de proveniência do PR gerado por IA01 IntençãoTarefa aprovadaSpec, owner, risco, repositórios, tools e critérios permitidos.
02 GeraçãoRegistro do agenteIdentidade, modelo, tools, fontes, permissões, prompts e sessão.
03 MudançaDiff geradoArquivos, dependências, migrações, testes, manifest e commit.
04 ReviewDecisão humanaReviewers, findings, exceções, aprovações e resultado da branch.
05 BuildBuilder confiávelWorkflow, source SHA, materiais, parâmetros, isolamento e resultado.
06 DescriçãoSBOM e attestationsComponentes, licenças, vulnerabilidades, proveniência, testes e políticas.
07 AssinaturaArtefato verificávelDigest, assinatura por identidade, certificado, transparência e registry.
08 DeployLinhagem runtimeAmbiente, aprovação, digest, política, owner e rollback.
Código gerado precisa de manifest, não estigma
Rótulos de IA devem ajudar review e incident response, não criar binário falso entre “código humano” e “código de IA”. Humanos usam autocomplete, clientes gerados, migrations, templates e agentes no mesmo PR. Registre quais arquivos ou hunks foram gerados ou transformados, qual sistema fez isso e qual humano assumiu responsabilidade.
O manifest também captura dependências e contexto externo introduzidos. Se o código copiou padrão inseguro de documentação ou adicionou pacote comprometido, investigadores precisam reconstruir a influência sem armazenar prompts sensíveis para sempre.
AtribuiçãoQuais principal, agente, reviewer, builder e deployer foram responsáveis?
IntegridadeSource revisado, artefato, SBOM, assinatura e digest implantado ficaram ligados?
ReprodutibilidadeBuild e contexto importante de geração podem ser reconstruídos ou comparados?
PolíticaAdmission verifica proveniência, assinaturas, componentes, reviews e exceções?
SBOM e proveniência respondem perguntas diferentes
SBOM descreve componentes. Proveniência descreve como artefato foi produzido. Assinatura liga identidade a digest ou attestation. Review explica por que source foi aceito. Deployment metadata diz onde roda. Nenhum substitui os demais.
GitHub gera attestations de build e SBOM. Sigstore suporta assinatura baseada em identidade com certificados curtos, e Cosign verifica attestations in-toto contra políticas. Assim, o gate pergunta não apenas “esta imagem está assinada?”, mas “este digest veio do commit aprovado, pelo workflow permitido, com SBOM e review exigidos?”
| Evidência | O que prova | O que não prova | Gate de verificação |
|---|
| Registro da tarefa | Por que começou, quem delegou e o que o agente podia fazer. | Que o código é correto ou seguro. | Exigir tarefa aprovada, permissões limitadas e owner. |
| Manifest de código gerado | Quais superfícies e tools envolveram geração. | Que toda influência é conhecida. | Exigir disclosure em arquivos e dependências de alto risco. |
| Review do PR | Quais humanos e checks aceitaram source. | Que o artefato posterior corresponde ao source. | Protected branches, required checks, CODEOWNERS e exceções. |
| Proveniência SLSA | Onde, quando e como artefato foi construído. | Por que source foi criado ou aprovado. | Verificar builder, source SHA, parâmetros e digest. |
| Attestation SBOM | Quais componentes declarados estão no artefato. | Que componentes são seguros ou completos. | Licença, vulnerabilidade, política e allowlist. |
| Assinatura e deployment | Identidade ligada ao artefato e onde foi implantado. | Que runtime continua seguro. | Admission policy, digest pinning, aprovação e monitoramento. |
Política deve verificar a cadeia na promoção
Evidência que ninguém verifica é documentação, não controle. Regras de PR exigem evidência de source. Builders confiáveis emitem proveniência e SBOM. Registries preservam digests e assinaturas. Admission rejeita artefatos sem cadeia aprovada ou com exceções expiradas.
A verificação também precisa de failure modes. Se storage de proveniência cair, produção para? Qual caminho emergencial existe? Quem aprova, por quanto tempo e qual evidência será preenchida depois? O caminho de exceção faz parte da supply chain.
O que eu construiria
Eu construiria um ledger de proveniência indexado por PR, commit e artifact digest. Ele uniria tarefa e agente, manifest, reviews, checks, SBOM, SLSA, assinaturas, storage, deployments e incidentes runtime.
A visão principal responderia nos dois sentidos: partindo do artefato em produção, voltar à tarefa e sessão do agente; partindo de um agente ou tool comprometida, encontrar todos os PRs, artefatos e deployments afetados.
O princípio de design
Geração por IA não enfraquece o valor da proveniência; estende a cadeia que deve ser provada. Preserve intenção e evidência de geração antes do commit, depois use builds confiáveis, SBOMs, attestations, assinaturas e deployments para manter essa evidência ligada à produção.