How Signing Works
Every ImageSentinel image is signed using Sigstore's keyless signing infrastructure. This provides cryptographic proof that the image was built by ImageSentinel and hasn't been tampered with since signing.
Keyless Signing
No long-lived keys to manage. Signatures are tied to OIDC identities and recorded in a tamper-proof transparency log.
Transparency Log
All signatures are recorded in Rekor, Sigstore's immutable transparency log, providing an auditable trail of all signed artifacts.
Verifying Signatures
Use Cosign to verify ImageSentinel image signatures:
terminal
# Install cosign
brew install cosign # macOS
# or: go install github.com/sigstore/cosign/v2/cmd/cosign@latest
# Verify an ImageSentinel image
cosign verify registry.imagesentinel.io/python:3.12-hardened \
--certificate-identity-regexp=".*@imagesentinel.io" \
--certificate-oidc-issuer="https://accounts.google.com"
# Example output:
Verification for registry.imagesentinel.io/python:3.12-hardened --
The following checks were performed:
✓ Transparency log entry verified
✓ Signature verified against certificate
✓ Certificate chain verifiedSigning Your Own Images
When you harden images with ImageSentinel, you can optionally sign them:
terminal
# Harden and sign an image
imagesentinel harden myapp:latest \
--sign \
--push registry.example.com/myapp:hardened
# The signature is automatically attached to the image
# and recorded in the transparency logPolicy Enforcement
Enforce signature verification in your Kubernetes cluster:
kyverno-policy.yaml
# Example Kyverno policy
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: verify-imagesentinel-signature
spec:
validationFailureAction: Enforce
rules:
- name: check-signature
match:
resources:
kinds:
- Pod
verifyImages:
- imageReferences:
- "registry.imagesentinel.io/*"
attestors:
- entries:
- keyless:
subject: ".*@imagesentinel.io"
issuer: "https://accounts.google.com"