Attestation & Verification
This page explains how to verify our container images’ authenticity and inspect their Software Bill of Materials (SBOM).
Verifying Container Signatures
Section titled “Verifying Container Signatures”To cryptographically verify that a container image was signed by our CI/CD pipeline:
# API Proxycosign verify subnoto/api-proxy:v2.0.0 \ --certificate-identity https://gitlab.com/subnoto/subnoto-monorepo-public//.gitlab-ci.yml@refs/tags/v2.0.0 \ --certificate-oidc-issuer https://gitlab.com | jq
# MCP Servercosign verify subnoto/mcp-server:v0.1.4 \ --certificate-identity https://gitlab.com/subnoto/subnoto-monorepo-public//.gitlab-ci.yml@refs/tags/v2.0.0 \ --certificate-oidc-issuer https://gitlab.com | jqVerifying Attestations
Section titled “Verifying Attestations”To verify the SBOM attestation attached to a container:
# API Proxycosign verify-attestation subnoto/api-proxy:v2.0.0 \ --certificate-identity https://gitlab.com/subnoto/subnoto-monorepo-public//.gitlab-ci.yml@refs/tags/v2.0.0 \ --certificate-oidc-issuer https://gitlab.com \ --type=spdxjson
# MCP Servercosign verify-attestation subnoto/mcp-server:v2.0.0 \ --certificate-identity https://gitlab.com/subnoto/subnoto-monorepo-public//.gitlab-ci.yml@refs/tags/v2.0.0 \ --certificate-oidc-issuer https://gitlab.com \ --type=spdxjsonImportant notes:
- The
--certificate-identitymust match the exact GitLab CI file path and tag reference - For different versions, update both the image tag and the certificate identity tag
- Only tagged releases are published to DockerHub
- Verification requires the
cosigntool (install from sigstore.dev)
Inspecting the SBOM
Section titled “Inspecting the SBOM”To download and inspect the SBOM (Software Bill of Materials) attestation:
cosign download attestation subnoto/api-proxy:latest | \ jq -r .payload | \ base64 -d | \ jq '.predicate | fromjson'This command:
- Downloads the attestation from the container registry
- Extracts the payload field
- Decodes the base64-encoded content
- Parses the double-encoded predicate JSON
The output will show a complete SPDX SBOM listing all packages and dependencies in the container.
Vulnerability Scanning
Section titled “Vulnerability Scanning”You can scan images locally using:
# Using Syft to generate SBOMsyft subnoto/mcp-server:latest -o json
# Using Grype to scan for vulnerabilitiesgrype subnoto/mcp-server:latest