/ssip-demo-project

demo project to test the trusted pipeline

Primary LanguageGoApache License 2.0Apache-2.0

ssip-demo-project

Demo para a SSIP-Trusted-Pipeline

Visão Geral

Este projeto é um exemplo de como utilizar o workflow reusável da SSIP-Trusted-Pipeline. O Workflow deste projeto invoca o workflow reusável da SSIP-Trusted-Pipeline, que é responsável por realizar testes de conformidade e construir uma imagem Docker, junto com evidências seguras do processo de construção.

Verificação dos atestados

O workflow gera e anexa os seguintes atestados assinados:

  1. SLSA Provenance
  2. SBOM
  3. Scan de Vulnerabilidade
  4. Resultado do SAST
  5. Resultado dos testes de unidade

1. Pré requisitos

Para verificar os atestados é necessário ter o cosign instalado na máquina.

Se você tiver Go 1.20+ instalado, você pode instalar o cosign com o seguinte comando:

go install github.com/sigstore/cosign/v2/cmd/cosign@latest

Outras opções de instalação podem ser encontradas na documentação oficial.

Caso a imagem esteja em um repositório privado, é necessário fazer autenticação usando o comando cosign login.

  # Log in em reg.example.com, com usuário AzureDiamond e senha hunter2
  cosign login reg.example.com -u AzureDiamond -p hunter2

2. Verificação dos atestados

Para verificar os atestados, execute o seguinte comando:

cosign verify-attestation --type=<tipo de predicado> \
--certificate-identity <ref da workflow reusável> \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-github-workflow-ref <ref do workflow que invocou o workflow reusável>
<nome da imagem>

Para possíveis valores de <tipo de predicado>, e outras opções disponíveis, consulte a documentação do comando cosign verify-attestation.

Se a flag --type for omitida, o cosign irá verificar todos os atestados anexados na imagem.

Exemplo:

cosign verify-attestation --type=slsaprovenance \
  --certificate-identity "https://github.com/laerson/ssip-trusted-pipeline/.github/workflows/trusted-pipeline.yml@refs/tags/v1.0.0" \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com \
  --certificate-github-workflow-ref refs/tags/v1.0.0 \
  --certificate-github-workflow-name "Untrusted Pipeline" \
  --certificate-github-workflow-repository Laerson/ssip-demo-project \
  --certificate-github-workflow-trigger workflow_dispatch \
  ghcr.io/laerson/ssip-demo-project:v1.0.0

Download dos atestados

É possível baixar os atestados anexados na imagem Docker utilizando o comando cosign download attestation.

Documentação do comando cosign download attestation

A saída do comando é um bundle .jsonl codificado em base64, contendo todos os atestados anexados na imagem.

exemplo:

cosign download attestation ghcr.io/laerson/ssip-demo-project:v1.0.0 > encoded-artifact.intoto.jsonl

Para decodificar o bundle, utilize o seguinte comando:

cat encoded-artifact.intoto.jsonl | jq -r '.payload' | base64 -d | jq -s >> artifact.intoto.json

É possível filtrar os atestados por tipo de predicado usando a flag --predicate-type.