This repository demonstrates how to integrate Witness attestations into conda package builds for Anaconda.
This demo shows:
- Building conda packages with Witness attestations
- Multi-signature strategy (file key + AWS KMS)
- SLSA Level 3 compliance
- Policy enforcement
- Package verification workflow
- Integration with TestifySec Platform (private Archivista)
- Conda/Miniconda installed
- Witness CLI installed
- AWS credentials configured (for KMS signing)
- Go 1.19+ (for policy evaluation)
# Run the 2-minute demo
./scripts/quick-demo.sh
# Or run the full interactive demo
./scripts/demo-script.sh
recipes/
- Real conda package recipes (numpy, pandas, scipy)Makefile
- Demo commands for local testingscripts/
- Demo automation scriptspolicies/
- Witness policies for conda buildskeys/
- Test signing keys (FOR DEMO ONLY).github/workflows/
- GitHub Actions CI/CD with Witness
The workflow uses a matrix strategy to build multiple packages in parallel with enhanced security:
- Setup Job: Finds all recipes (click, pyyaml, requests)
- Build Job:
- Uses Sigstore for ephemeral signing keys
- Captures multiple attestations: git, github, environment
- Stores attestations in Archivista (public or private instance)
- Enables tracing for debugging
- Summary Job: Reports build status with security details
Two workflow variants are available:
conda-build.yml
- Uses public Archivista instanceconda-build-private.yml
- Uses TestifySec Platform with API authentication
# Setup demo environment
make setup
# Build with attestations
make build-numpy
# Verify build
make verify-numpy
# Run full demo
make demo
click
(8.1.7) - Command line interface toolkit (builds fast!)pyyaml
(6.0.1) - YAML parser and emitterrequests
(2.31.0) - HTTP library for Python
These packages were chosen because they:
- Build quickly (< 30 seconds)
- Have minimal dependencies
- Demonstrate real conda builds with attestations
- Build Attestations: Every conda build generates signed attestations
- SBOM Generation: Automatic Software Bill of Materials
- Policy Enforcement: Builds must meet security requirements
- Multi-Signature: Both local keys and AWS KMS signing
- API Integration: GraphQL queries to Archivista