Supply Chain Security¶
All container images and Helm charts are built with supply chain security controls in the CI/CD pipeline.
Image Signing¶
All production container images (openvox-operator, openvox-server, openvox-db) are signed with cosign keyless signing using GitHub Actions OIDC.
Verify Image Signatures¶
cosign verify ghcr.io/slauger/openvox-operator:latest \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp 'github\.com/slauger/openvox-operator'
Verify Helm Chart Signatures¶
Helm charts pushed to ghcr.io/slauger/charts/ are also signed:
cosign verify ghcr.io/slauger/charts/openvox-operator:0.9.0 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp 'github\.com/slauger/openvox-operator'
Attestations¶
Each image includes:
- SLSA Provenance (per-platform) - Build provenance in SLSA format, generated by
docker/build-push-actionwithprovenance: true - SBOM (per-platform) - Software Bill of Materials in SPDX format, generated with
sbom: true - Build Provenance (manifest index) - GitHub-native build provenance attestation via
actions/attest-build-provenance, attached to the multi-arch manifest index
Per-platform attestations and the manifest-level attestation are attached as OCI referrers and can be inspected with cosign:
# List attestations
cosign tree ghcr.io/slauger/openvox-operator:latest
# Verify SBOM
cosign verify-attestation ghcr.io/slauger/openvox-operator:latest \
--type spdxjson \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp 'github\.com/slauger/openvox-operator'
Conforma Policy Validation¶
The release pipeline validates all production images with Conforma (ec CLI) against a set of supply chain policies.
Policy Configuration¶
The policy is defined in .conforma/policy.yaml and includes:
@githubcollection - GitHub Actions OIDC certificate validation, base image registries, signatures, and attestations
Running Locally¶
Install the ec CLI (see the Conforma releases for the latest version) and validate an image:
# Install ec CLI (check releases page for latest version)
EC_VERSION="$(curl -s https://api.github.com/repos/conforma/cli/releases/latest | grep tag_name | cut -d'"' -f4)"
curl -sSL "https://github.com/conforma/cli/releases/download/${EC_VERSION}/ec_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m)" \
-o /usr/local/bin/ec && chmod +x /usr/local/bin/ec
# Validate
ec validate image \
--image ghcr.io/slauger/openvox-operator:latest \
--policy .conforma/policy.yaml \
--certificate-identity-regexp "https://github.com/slauger/openvox-operator/" \
--certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
--strict=false \
--show-successes \
--output yaml
Base Images¶
All production images use Red Hat UBI9 base images:
| Image | Base |
|---|---|
openvox-operator |
registry.access.redhat.com/ubi9/ubi-minimal |
openvox-server |
registry.access.redhat.com/ubi9/ubi |
openvox-db |
registry.access.redhat.com/ubi9/ubi |
Base image versions are tracked and auto-updated by Renovate.
Container Security¶
All production containers run with:
- Non-root user (
USER 1001:0) - Read-only root filesystem (CRD default:
true, configurable viaconfig.readOnlyRootFilesystem) - No privilege escalation (
allowPrivilegeEscalation: false) - All capabilities dropped (
drop: ["ALL"]) - OpenShift random-UID compatible (
group=root(0))