registry.falkordb.cloud is signed. This
page covers verifying those signatures, pinning images by digest, and what
happens to signatures when you mirror into your own registry.
What is signed
Third-party images the chart depends on, such as KubeBlocks and
alpine/kubectl,
carry whatever signatures their own publishers provide. They are not re-signed.
Prerequisites
Installcosign v3.1.3 or later. The commands below use flags that changed
in v3, so a v2 binary will reject them.
Signing uses a long-lived key rather than a short-lived workflow identity.
The latter would publish every image name and release timestamp to the public
Sigstore transparency log, which exposes the release cadence and component
inventory of a private product. The trade-off is that verification needs the
public key above, and there is no transparency log to consult.
Verify an image
Signatures are attached to the image digest, so any tag pointing at that digest verifies:--insecure-ignore-tlog=true is required, not optional. It tells cosign not
to look for a transparency log entry, and there is none by design. Without it
verification fails even for a perfectly valid signature.
A successful run prints the verified payload. Any other outcome, including
no matching signatures, means the image must not be deployed.
Verify the chart
The chart is an OCI artifact and verifies the same way. Drop theoci://
prefix that Helm uses, because cosign does not accept it:
helm install from an OCI registry does
no signature checking of its own.
Verify the bill of materials
Each database image carries a CycloneDX bill of materials and build provenance, generated at build time and stored inside the image index:Pin images by digest
By default the Admin Server and Admin UI images resolve to the chart’sappVersion, so a given chart version always requests the same image version:
tag:
skopeo inspect --format '{{.Digest}}' looks like the shorter route but
resolves a multi-architecture index down to the host platform, and fails
outright when the host platform is absent from the index. Hashing the raw
manifest returns the index digest, which is what you want to pin.appVersion to fall back on, rather than quietly emitting a floating :latest
reference. Continuous integration also fails the build if any rendered image
resolves to :latest.
Mirroring keeps signatures
cosign stores a signature under a tag derived from the image digest, in the
same repository. Copying only repository:tag leaves that behind, and
verification against the mirror then fails even though the image itself is
intact.
scripts/mirror-images.sh copies the signature alongside each image, so a
mirrored registry stays verifiable:
sha256-<digest> tags too.
Build provenance and the bill of materials travel inside the image index rather
than as separate tags, so any copy that preserves every platform, such as
skopeo copy --all, carries them automatically.Troubleshooting
Error: no matching signatures
Error: no matching signatures
Most often the wrong public key, or a tag that has been moved to new content
since you last verified. Resolve the digest and verify that directly to rule out
the tag.
Error: no valid tlog entries found
Error: no valid tlog entries found
The
--insecure-ignore-tlog=true flag is missing. These signatures are not
recorded in a public transparency log.Verification fails only against a mirror
Verification fails only against a mirror
The signature tag was not copied. Confirm it exists in the mirror, then re-run
the mirroring script, which copies signatures alongside images.
unknown flag: --insecure-ignore-tlog
unknown flag: --insecure-ignore-tlog
A
cosign v2 binary. Upgrade to v3.1.3 or later.