Visão geral
Os atestados de artefatos permitem que você crie garantias de procedência e integridade infalsificáveis para o software que você cria. Por sua vez, as pessoas que consomem seu software podem verificar onde e como seu software foi criado.
Ao gerar atestados de artefato com seu software, você cria declarações assinadas criptograficamente que estabelecem a procedência do build e incluem as seguintes informações:
- Um link para o fluxo de trabalho associado ao artefato
- O repositório, a organização, o ambiente, o SHA de commit e o evento de gatilho do artefato
- Outras informações do token OIDC usado para estabelecer a procedência. Para saber mais, confira OpenID Connect.
Você também pode gerar atestados de artefato que incluam uma SBOM (lista de materiais de software) associada. Associar suas compilações a uma lista de dependências de código aberto usadas nelas fornece transparência e permite que os consumidores cumpram os padrões de proteção de dados.
Níveis de SLSA para atestados de artefatos
A estrutura SLSA é um padrão do setor usado para avaliar a segurança da cadeia de fornecedores. Está organizada em níveis. Cada nível representa um grau crescente de segurança e confiabilidade para uma cadeia de fornecedores de software. Os atestados de artefato em si fornecem SLSA v1.0 Build Level 2.
Isso fornece um link entre seu artefato e suas instruções de build, mas você pode dar um passo adiante exigindo que os builds usem instruções de build conhecidas e verificadas. Uma ótima maneira de fazer isso é fazer com que seu build ocorra em um fluxo de trabalho reutilizável que muitos repositórios em sua organização compartilhem. Os fluxos de trabalho reutilizáveis podem fornecer isolamento entre o processo de build e o fluxo de trabalho de chamada, para atender ao SLSA v1.0 Build Level 3. Para saber mais, confira Usando atestados de artefatos e fluxos de trabalho reutilizáveis para alcançar o SLSA v1 Build Level 3.
Para obter mais informações sobre os níveis de SLSA, consulte Níveis de segurança do SLSA.
Como o GitHub gera atestados de artefato
Para gerar atestados de artefato, GitHub usa o Sigstore, que é um projeto open source que oferece uma solução abrangente para assinar e verificar artefatos de software por meio de atestados.
**Repositórios públicos** que geram atestados de artefatos usam a [Instância de Bem Público do Sigstore](https://openssf.org/blog/2023/10/03/running-sigstore-as-a-managed-service-a-tour-of-sigstores-public-good-instance/). Uma cópia do pacote Sigstore gerado é armazenada com GitHub e também é gravada em um log de transparência imutável que é publicamente legível na Internet.
**Repositórios privados** que geram atestados de artefato usam a instância Sigstore do GitHub. A instância do Sigstore do GitHub usa a mesma base de código que a instância válida pública do Sigstore, mas não tem um log de transparência e federa apenas com o GitHub Actions.
Quando gerar atestados
A geração de atestados por si só não traz nenhum benefício de segurança, é preciso verificar os atestados para aproveitar os benefícios. Aqui estão algumas diretrizes de como pensar sobre o que assinar e com que frequência:
Você deverá assinar:
- Software que você está liberando em que você espera que as pessoas executem
gh attestation verify .... - Binários que as pessoas executarão, pacotes dos quais as pessoas farão download ou manifestos que incluem hashes de conteúdo detalhado.
Você não deveria assinar:
- Compilações frequentes que são apenas para testes automatizados.
- Arquivos individuais, como código-fonte, arquivos de documentação ou imagens incorporadas.
Verificação de atestados de artefatos
Se você consome software que publica atestados de artefatos, pode usar o GitHub CLI para verificar esses atestados. Como os atestados fornecem informações sobre onde e como o software foi desenvolvido, você pode usar essas informações para criar e aplicar políticas de segurança que elevem a segurança de sua cadeia de fornecedores.
Aviso
É importante lembrar que os atestados de artefatos não são uma garantia de que um artefato seja seguro. Em vez disso, os atestados de artefatos vinculam você a itens como o código-fonte e as instruções de compilação que os produziram. Cabe a você definir os critérios de sua política, avaliá-la avaliando o conteúdo e tomar uma decisão embasada sobre riscos ao consumir software.
Próximas etapas
Para começar a gerar e verificar atestados de artefato para seus builds, consulte Usar atestados de artefatos para estabelecer a procedência de builds.