Demo para a SSIP-Trusted-Pipeline
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.
O workflow gera e anexa os seguintes atestados assinados:
- SLSA Provenance
- SBOM
- Scan de Vulnerabilidade
- Resultado do SAST
- Resultado dos testes de unidade
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
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
É 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
.