Use Cosign to verify image signatures and SBOM attestations for Minimus images
Minimus uses the Sigstore toolkit to sign its images to allow end-users to verify image provenance. Cosign is the Sigstore tool for signing and verifying container images. If you’re new to Sigstore, take a minute to learn the basics.
Use Cosign to verify the signature of a Minimus image by running one of the below commands.
Copy
Ask AI
# first authenticate to the minimus registrydocker login reg.mini.dev -u minimus# Password: {minimus-token}# verify an imagecosign verify \ --certificate-oidc-issuer=https://accounts.google.com \ --certificate-identity=minimus-images-sa@prod-375107.iam.gserviceaccount.com \ reg.mini.dev/{image}:{tag} | jq
The command validates that the container image is cryptographically signed by a trusted Google service account with a certificate issued by Google’s OIDC provider. If the verification is successful, you will receive a JSON with information about the signature.Explanation:
cosign verify instructs Cosign to verify the cryptographic signature of the specified container image.
--certificate-oidc-issuer=https://accounts.google.com is used for images signed by a Google Cloud service account.
--certificate-identity=minimus-images-sa@prod-375107.iam.gserviceaccount.comdefines the Minimus build process as the expected identity.
| jq formats the output in a human-readable JSON structure using the JQ JSON processor.
Use the cosign verify-attestation command to verify the image SBOM. The SBOM is created and signed during the image build workflow and is stored along with the image in the registry.You will need to specify the architecture-specific image digest.
Use the cosign download attestation command to print the SBOM attestation directly to the terminal. The SBOM is created and signed during the image build workflow and is stored along with the image in the registry.You will need to specify the image architecture, for example linux/amd64.
When downloading the signed SBOM from Minimus, it will be downloaded in the SPDX format. SPDX, short for Software Package Data Exchange, is the most popular SBOM format. SPDX is an open standard for communicating SBOM information developed by the Linux Foundation.
You can use a CLI command to print the package license information from the SBOM attestation. The information includes the URLs to view the original license agreements, where available.
Packages without standard SPDX license identifiers such as FIPS packages marked as PROPRIETARY will not include the URL to the license agreement.
For example, here’s the command to print the licenses used by the Minimus nginx image:
Command to print package license info
Copy
Ask AI
cosign download attestation \ --predicate-type=https://spdx.dev/Document \ --platform linux/amd64 \ reg.mini.dev/nginx:latest \| jq -r ' .payload | @base64d | fromjson | .predicate.packages | map(select(any(.externalRefs[]?; (.referenceLocator // "") | contains("pkg:apk/")))) | unique_by(.name) | .[] | . as $p | "Package: \($p.name)\nVersion: \($p.versionInfo // "unknown")\nLicense: \($p.licenseDeclared // "UNKNOWN")" + ( if (($p.licenseDeclared // "UNKNOWN") | test("^(NOASSERTION|UNKNOWN|NONE)$")) then "\nLicense URL: Not available\n" else "\nLicense URL(s):\n" + ( ($p.licenseDeclared | gsub(" AND | OR | WITH "; ",") | split(",") | map(select(. != "" and . != "NOASSERTION" and . != "UNKNOWN" and . != "NONE")) | map(" https://spdx.org/licenses/\(.).html") | join("\n") ) + "\n" ) end )'
The output will print out the SBOM information as follows:
Package name
Package version
License name
License URLs
Example from the license printout for the Minimus nginx image