Salta ai contenuti
Inizia

Verify our images

Questi contenuti non sono ancora disponibili nella tua lingua.

Mildport images are private. You need a granted GitHub account (see Image access) before any of the commands below can see the registry or the attestations. That is by design, not a missing publish.

Every promoted digest carries:

  • a software bill of materials in SPDX and CycloneDX, attached to the GitHub release for that version;
  • a cosign attestation of those SBOMs, stored next to the image.

Replace the tag with the version you actually run. Pin a digest in production; latest is a moving pointer.

SBOM attestation (cosign). The identity is the Images workflow on this repository. You must be logged in to GHCR first.

Terminal window
docker login ghcr.io
cosign verify-attestation \
--type spdxjson \
--certificate-identity-regexp '^https://github.com/capitality-io/mildport/.github/workflows/images.yml@refs/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
ghcr.io/capitality-io/mildport-aio:<tag>

Use --type cyclonedx for the other SBOM. The same commands work for mildport, mildport-embed, and the decode sidecar images.

When a GitHub provenance attestation is present on the digest, this is the second check:

Terminal window
gh attestation verify oci://ghcr.io/capitality-io/mildport-aio:<tag> \
--signer-workflow capitality-io/mildport/.github/workflows/images.yml \
-R capitality-io/mildport

If that command reports no attestation, the cosign path above is the one that applies.

On a connected machine, download the SBOM files from the GitHub release for that version and copy them in with the image. Those files are the same documents CI attested.

If you also downloaded a GitHub attestation bundle while you still had network:

Terminal window
gh attestation download oci://ghcr.io/capitality-io/mildport-aio:<tag> \
-R capitality-io/mildport
gh attestation trusted-root > trusted_root.jsonl

Inside the gap, against the image you mirrored:

Terminal window
gh attestation verify oci://registry.internal.example/mildport-aio:<tag> \
--bundle sha256:<digest>.jsonl \
--custom-trusted-root trusted_root.jsonl \
--signer-workflow capitality-io/mildport/.github/workflows/images.yml \
-R capitality-io/mildport

Matching the release SBOM checksums to what cosign verify-attestation shows (when you still have registry referrers) is the belt-and-braces check.

Signatures and SBOMs that live as registry referrers survive an oras backup / oras restore of the image. docker save drops them — if you only have a tar from docker save, use the GitHub release assets.

The digest you pulled is the digest that workflow built, on that repository, with that SBOM. It does not mean the image is free of vulnerabilities. It means the bits were not swapped after the gated build.